|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机智能交通灯 设计方案论证报告 仿真,程序,正式论文等
: u5 a' E7 I3 Z& M) L6 n$ Q
" V& B1 }+ ~$ U4 D$ Q8 |, q$ E) [- K# r/ M' R
该文件包括了电路图,仿真,程序,论文,资料等。当时是课设时做得,拿出来与大家分享。6 H! ?/ Z8 p4 T1 C5 }, T7 ]* A
3 Y# \# O+ [& J3 N所有资料下载:
0 }6 E2 [ t/ e3 l M, C! D6 r0 V
' K8 R: D! v0 Z, ^8 U1 s4 Y+ I- v" b* O( J$ F
+ @# `6 e0 b3 z$ T; {/ q下面是交通灯设计方案论证报告,压缩包里面还有完整的word格式的正式论文下载,很全面.5 j& @& ~) u* W/ j2 b0 T6 r+ ?
; m$ X( J' }' c+ n4 O专业课程设计设计方案论证报告
$ S; Y! z2 i: [' ~" }) b/ v一、课题研究的目的和意义 交通灯在我们的生活中起着非常重要的作用,不仅与人们的生命安全息息相关,同时也关系到交通的正常运行。随着人们安全意识的逐渐增高,人们对安全也有了新的认识,所以交通部门要认识到交通灯控制系统的重要性,努力完善交通控制系统。 二、课题研究的主要任务和预期目标 1.主要任务及要求 ①东西、南北方向均有红、黄、绿三种信号灯 ②带紧急制动按钮,按钮按下,所有方向亮红灯;再次按下,恢复正常显示 ③夜间模式按钮按下,所有方向显示黄灯闪烁 ④实时提醒绿灯亮的剩余时间 ⑤并可实现通行时间的按键输入。例如(1)南北红灯亮维持25S。在南北红灯亮的同时东西绿灯也亮,并维持20S。到20S时,东西绿灯闪烁,闪烁3S后熄灭。在东西绿灯熄灭时,东西黄灯亮,并维持2S。到2S时,东西黄灯熄,东西红灯亮。同时,南北红灯熄灭,南北绿灯亮。(2)东西红灯亮维持30S。南北绿灯亮维持25S。然后闪烁3S,熄灭。同时南北黄灯亮,维持2S后熄灭,这时南北红灯亮,东西绿灯亮。 2.预期目标 实现主要任务及要求,并在其基础上增添人行指示灯等其他功能。 三、设计方案 1.设计思想(总体的设计思路想法) 一个交通指示灯系统分为指示灯显示、倒计时显示两个大部分。指示灯显示部分中各个灯的情况如图所示。![]() 倒计时部分则利用晶振进行计时,设计一个1s的定时,设置初始值后每1s将初始值-1,并输出给数码管,从而达到倒计时的功能。 2.方案论证(要有多种方案的比较) . G# g, q9 {' H* N
方案1:采用标准STC89C51单片机作为控制器通行倒计时显示采用2位LED数码管;指示灯采用发光二极管;LED显示采用动态扫描,以节省端口。紧急情况采用中断完成。以上系统结构框架设计,单片机端口刚好满足要求。该系统具有电路的简单,设计方便,显示清晰等特点。整体框图、流程图如图所示。: J; }. b; d8 }; e- x. Z* X1 s
. ]1 Z4 m" k2 i6 V![]()
: |) o `+ `8 w5 }+ W9 n6 `, ]+ C/ P5 ?0 n; a* b
方案2:采用SCT89C2051单片机作为控制器,通行倒计时采用16X16点阵LED发光管;列驱动采用74LS595以实现串行端口扩展,行驱动采用4/16译码器74LS154动态扫描;译码器74LS154生成16条行选通信号线,再经过驱动器驱动对应的行线。每条行线上需要较大的驱动电流,应选用大功率三极管作为驱动。这种方案显示可以更加清晰明了,单片机占用端口少,但是需要大量硬件,电路复杂,耗电量大。整体电路如下图$ c+ h3 L. [& }( @ v( v" X$ r
' Y! J2 R% B5 \1 q/ r6 j
# ~: P. b* e1 u/ W4 Q2 j
0 U7 y/ O2 f I* ^, i
' q: Z3 L3 {8 F) p u2 e3.设计中要解决的主要问题和措施 问题一:如何实现倒计时与灯的变化相同步 在整个交通系统中,指示灯与倒计时相同步是重要的问题,设定的时间不光是倒计时也是指示灯的显示时间,因此解决此问题就变得尤为重要。 问题二:如何能够调节数码管所显示的数值 任务要求需要使得倒计时时间可调,那就需要将数码管显示的数值进行合理调整,同时还要确保时间和指示灯相对应。 解决方案一:可以看出,无论倒计时数十多少,指示灯发生变化的时间都是最后5s,因此,我们想出的方案是,不用想倒计时一共是多少时间而是仅在最后5s时做出判断,判断出是绿灯闪烁还是黄灯亮起。 解决方案二:对于数码管数值调整,可以想到+1/-1的调整程序,这类程序,我们在单片机的课程中已经学习,通过+1/-1的程序从而实现对数码管数值的调整。 四、课题进度安排 1、第一天至第三天:熟悉课题、查阅资料、合理分工、撰写方案论证报告。 2、第四天至十一天:硬件电路设计及软件设计。 3、十二天至十九天:实物的焊接及调试。 4、二十至二十一天:准备材料答辩。
s. t. _; l+ L. I O9 h1 C单片机智能交通指示灯仿真效果图:
0 v, C# Q% H( F) W" }
: L) |/ e- f# L) K
5 D& p, {% i3 R6 K, b0 _0 R智能交通指示灯的单片机源程序:! q- z9 G4 O, e: Q; c+ x& ^9 C, G3 V
#include <reg52.h>
. S. ?- b, I* O% x, k6 z i! Z#define uchar unsigned char . `5 X- M8 Q' b# y# q; r8 j v/ H
#define uint unsigned int / y ^5 m3 |5 t2 c. S( T6 m
. N+ @- b* }" e$ Y0 O" R% x) K6 Z6 {1 @" z5 `5 t+ j h3 u
7 o; o: T$ u. u# O+ i' [& n- x1 ~0 p" |4 f// 0 1 2 3 4 5 6 7 8 9 & K" t. i- U! o
uchar code smg_du[]={0xc0,0xf5,0x8c,0x94,0xb1,0x92,0x82,0xf4,0x80,0x90}; * v9 V$ `# V7 o+ w* S8 y8 v- @+ G( `
& N7 h6 t0 D4 d) uuchar dis_smg[10] = {0xc0,0xf5,0x8c,0x94,0xb1,0x92,0x82,0xf4,0x80,0x90}; : N! B; x5 l$ p4 {( C* o7 N
uchar smg_i = 4; //位数* O* a9 r" b4 r2 a& E% U
; x/ z. P9 s/ x8 P7 `0 a' s, T: O4 F9 W$ F8 @ J
sbit smg_we1 = P2^0; ) j }3 l! N2 D
sbit smg_we2 = P2^1;
' k& n8 D; W+ h) f! x- c4 V* Hsbit smg_we3 = P3^6;: }- P9 t6 l+ x. I" d
sbit smg_we4 = P3^7;
# D6 \ X. e# E' |$ ]9 z0 y+ Ksbit LE1 = P3^3;
+ ]9 b; s* `' ?% s/ Nsbit LE2 = P3^3;7 |. X8 {6 o- T/ v
4 m5 @7 ^+ ?' Qchar dx_s = 0; //倒计时开始, P# n9 g& d7 l/ t/ I: k* [& c ]; f
char nb_s = 0; 1 p( S8 q3 S. h: {; I! q
sbit dx_red = P2^4; //东西红灯
, F9 l' Z9 N/ V i) gsbit dx_green = P2^3; //东西绿灯
$ F5 x" U: _; }! Lsbit dx_yellow = P2^2; //东西黄灯- ^: x6 k: n9 n+ l
) ]6 }) I; {7 C3 _* _4 Z- {
sbit nb_red = P2^7; //南北红灯
, ~# a! d5 i( ?- Qsbit nb_green = P2^6; //南北绿灯% n/ L2 Q# r! e7 H/ l5 h6 D
sbit nb_yellow = P2^5; //南北黄灯
% x# \4 E5 f1 h9 L' j+ z4 F: |+ O
8 D4 s( ]9 ]8 a0 m5 U+ ^. G" q2 W$ ^/ |) C
bit flag_1s = 0; //延时标志7 |( W J x7 k- j2 p$ h
bit flag_500ms; b7 h3 x- r V7 u; q
bit flag_dx_nb; ' T5 u- q( r& Y- E& K& T; {$ _
uchar flag_5m_value;( @/ R$ m! \! u9 J
uchar i;! ? F; Q6 _* `7 B# K# u# `
uchar nb_time = 10,dx_time = 15; //东西南北时间初值
6 X" G) y2 L; v( z5 d. buchar flag_jdgz ; //交通灯
8 ~1 ^7 m+ L3 ?( [% y
6 X; m$ V6 d9 U' @! f: {5 X' J8 [7 Q, N! Q
// 数码管为位选
6 ]9 b) O; l! X _. lvoid smg_we_switch(uchar i)( I: X# F# T' M9 ~" W2 x' Z
{
; R) F7 [$ O' x; d; e switch(i)
+ s. S% U1 y% j" `- h {
6 I: M5 R+ k2 ~: p case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break;' G2 J; o; K- P/ M
case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break;8 Y8 p; M2 R7 Z
case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break;
' j- L& W' d- i7 H( Y& t: [" ^ case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break;
0 H2 w9 X5 c) f1 i; s }
3 d% B4 V* `* ?7 Z8 l, Q}
! R; D4 Q; m4 }; t$ \. ^$ g& X- V* v& R8 h
. E4 F( i. E# j$ g; ]) ~
5 v6 x( r, u* Z, W- I$ s* ]7 {, q
// 延时程序
' d- d( Y: ?3 C$ R( B6 ^% _4 s! j0 `+ B& |9 D( S6 V) W
void delay_01ms(uint q)
+ l V b! x' y- P! C! D3 `" v3 M{/ w1 N8 v i; F( x* C, {4 G
uint i,j;0 ] Q: `1 _9 z4 K% G8 L* `" E
for(i=0;i<q;i++)
: ?. |( O/ N( ?+ m6 S" G for(j=0;j<110;j++);2 f5 y7 U, C& y/ H f: x
}1 S3 P0 X6 v8 j0 d; n" b J4 ~
3 Z! w6 s" P) G+ p/ J" V. l" l
' B2 J' N& Z# n4 z/ [4 J0 U// 数码管显示' ^( u: A: t x* s; j1 Z, x! u1 e
; B) |4 k- m! Z2 S( g5 jvoid display()
, e& E3 d. B: j{
9 b! ~ o. A$ [/ m uchar i;
9 R: q7 J/ J& h+ T% j p5 w x- f for(i=0;i<smg_i;i++)" }9 t Y: x O( m+ [& w0 u
{ % I5 B! d" b0 d
P0 = 0xff; 2 @/ K" N7 T2 B/ z5 h8 q$ Y
smg_we_switch(i); % z! o3 K0 s& F; ^0 _
P0 = dis_smg;
T, \7 _" B. r7 E delay_01ms(3);9 B' u! d7 i7 t, |" Z" M, K
}1 Y) H2 A8 h# z1 Y6 E1 ]4 w+ ~ D5 ]
}
2 ^7 q5 y8 P2 M2 ~* a3 @: n! I7 }; v0 S" c i; a
// 定时器初始化' R+ O0 [, d# N* N7 Z- H/ }( D
6 \* C9 W3 n, S x
void time0_init()
% ]) F% N' M* D) }% O# a{& l8 |$ D8 z8 Q+ F3 @8 }
EA = 1; ! t1 S5 w* \8 z: F
TMOD = 0X11; + ?1 R8 `" l& \% `
ET0 = 1;
9 J- v/ l; D( E6 @' F, c8 y TR0 = 1;
5 G' I" ?# ? Z3 M8 X9 G' o ET1 = 0;
" I2 l8 }, ^' R' M" f. t' L9 y" A TR1 = 0;
$ Z J2 u) R5 w0 `& ]$ }6 U}. I" k" i! V( ] e+ p& A9 r
% t J; s' O9 K+ R9 w
// 交通灯管理$ ^/ H% G' I( }% e! {- C
. r/ i L8 d5 A; F7 Y
void jiaotongdeng_dis()
5 ~; ~6 B0 r* Q8 c* d+ o{
' [. H4 {6 z5 ]( R i if(flag_1s == 1)' H" Z. d4 S( Z) U- b
{
! h- m$ O9 O. E9 J4 k7 I4 z: M flag_1s = 0;/ P- z1 o# L3 o1 F4 G1 s9 `
if(dx_s == 0)
. m3 L; R0 `. x+ Z# H* g {. d% w3 ]3 z9 A( k2 W) C# A
if(flag_dx_nb == 1)
. i3 P. Q2 i! Y4 z" o$ P5 W {4 m3 V" d7 W& \
dx_s = nb_time; //南北时间2 Z S1 g7 b: \
nb_s = dx_time;+ D; q, D2 p K
}$ l+ I* P' I4 O' S \
else
! ~0 y' K; w: u$ |# y9 n {; ` g3 g2 c0 g5 J: T, r
dx_s = dx_time; //东西时间
- t* [& o7 r: z T3 [ nb_s = nb_time;
5 L$ ]: Y( A9 t5 ]- i" m* M }' V' b6 B9 |3 D3 F
flag_dx_nb = ~flag_dx_nb;' S# X. M9 ?9 [9 \0 a
}: w! A( g. H+ {+ O7 O* l! L. K
dx_s --;
~8 ?5 T0 ]5 R$ e* ? nb_s --;- E, a3 A$ n I V
}
1 E* u5 U2 O7 `% t dis_smg[0] = smg_du[dx_s % 10] ;9 E6 ?! U3 b) T0 d! f
dis_smg[1] = smg_du[dx_s / 10] ;- A# Q" o, p: P0 Q4 O
dis_smg[2] = smg_du[nb_s % 10] ;2 X/ a# t5 l' }9 g& H2 Z
dis_smg[3] = smg_du[nb_s / 10] ;
" m6 J' m `0 {4 e* N, q) o1 T i6 R$ n3 a
// 东西时间
2 `/ g# u8 b( Q- \ if(flag_dx_nb == 0) ) v# q T) l. H/ V& ]. m7 m% a8 X
{
5 r$ R7 F/ ^9 I; p if(nb_s > 5)
3 j$ \5 j6 w( v1 I. J* k# `{
8 g) K# v5 [& J" L. d5 T dx_red = 1; //东西红灯灭( d4 Z5 X0 K0 \" c
dx_green = 0; //东西绿灯亮6 R0 j" x/ x9 T+ w/ e1 Q
dx_yellow = 1; //东西黄灯灭! S8 i, w( X* o/ |7 w: p5 M/ U* ~! |
nb_red = 0; //南北红灯亮. Y* q7 S8 U' i5 i1 i& E
nb_green = 1; //南北绿灯灭
5 E6 U" V* Z6 [ \5 ]3 A8 K nb_yellow = 1; //南北绿灯亮9 a! _, c" A6 k3 E1 d S
flag_5m_value = 0; % J4 p' O) c1 U
}( C V" {4 k5 P/ F3 X
if(nb_s >= 0&&nb_s <= 5) //绿灯闪烁/ _2 R4 C n, z( O# _
{
3 G/ R S+ d; S7 K+ P1 X dx_red = 1; //东西红灯灭
1 c- \; z, E5 t) `! D2 F5 { dx_yellow = 1; //东西黄灯灭 \/ J, R- r% _( V
nb_red = 0; //南北红灯亮% w8 k/ I0 B* w, Y( T
nb_green = 1; //南北绿灯灭
( ^7 M3 h2 K4 e2 b6 d nb_yellow = 1; //南北黄灯灭& I. E0 d. ` I4 ? B& S
if(flag_500ms == 0) //绿灯闪烁" t! }0 @5 M- r2 E( R: w8 X! b
{9 A8 ?) n0 F" d/ h
dx_green = 0;
5 ^5 i c* a5 s5 g4 q, e5 |9 Y }) e6 X% D) |: L' {# ]
else
) u" w( k7 I& ~4 [+ q; \! D{
8 ^ K+ b5 |1 C$ Q dx_green = 1;5 w# h5 h8 C5 F# J: l
}
# z3 ^6 D1 @: M# g8 S0 x }) |) K3 @3 C) z+ a
& F& B7 O9 d$ @! Y( U7 \0 M
if(nb_s==0)/ _( ^; H3 C$ ^
{$ T' X6 {- r2 Y, C
dx_red = 1; //东西红灯灭 L3 \5 y. O N) b( V9 e
dx_green = 1; //东西绿灯灭# Z, S2 A. t4 {* L& n O* a- H
dx_yellow = 0; //东西黄灯亮( E: T1 P. G* f9 N/ |8 b6 B
nb_red = 0; //南北红灯亮5 \: v+ q2 e5 m: Y
nb_green = 1; //南北绿灯灭
5 a; k H. s9 h7 O0 v0 c' O3 Z0 X/ C nb_yellow = 1; //南北黄灯灭
( H* S7 g- A( q }
1 J) ]/ b5 Q1 |* E1 v3 {# w7 J5 b, G2 F, Y( G
# T$ S. q8 I. h
}9 {, d1 {- ]' ?! m X$ I, H: a. I/ r6 |
4 p7 v" ] H/ A/ p8 g// 南北时间
- s6 j8 _; Q0 f9 c if(flag_dx_nb == 1)
: p) l1 O0 n3 z5 h% f8 K0 S7 ?{ LE1=1;' r& L' i# u, i
if(dx_s > 5)7 @4 U. n: m% `/ D6 V: w) z% p( `& w6 H
{
! \) a- X, W. q. O: G% X dx_red = 0; //东西红灯亮5 H" W% W8 A; O" | R, N# u
dx_green = 1; //东西绿灯灭
- }# h0 n0 ]# o5 ^ dx_yellow = 1; //东西黄灯灭* J) l* B# S: d+ W* @
nb_red = 1; //南北红灯灭8 H' F/ u: O K+ `% U' `1 v
nb_green = 0; //南北绿灯亮2 }5 S+ \7 V9 X5 E) G8 S% @
nb_yellow = 1; //南北黄灯灭
- E# L: s' |7 ]1 j flag_5m_value = 0; / u. T( v5 A' {6 y1 L9 e% ?, F
}
$ e- c( m2 n9 r. U. t+ O' z2 x if(dx_s >= 0&&dx_s <= 5) //绿灯闪烁2 s" s3 H3 F! [) A
{) y( k7 ^! @* y3 k Z, v. s- Q
dx_red = 0; //东西红灯亮
5 p% G5 i) ]) J+ x+ V# k dx_green = 1; //东西绿灯灭
9 _/ b6 ]3 h$ r5 F' Q- `( \ dx_yellow = 1; //东西黄灯灭
* {" z6 u: c$ X nb_red = 1; //南北红灯灭; L! S' ?+ A3 `
nb_yellow = 1; //男别黄灯灭/ V& W! p0 l& u) ?% U1 Y8 e( W
if(flag_500ms == 0) //绿灯闪烁
7 P* }0 \1 W, D" H' H3 n{
% `) _# Z: N' U8 Q+ H' d4 \: ^3 x& M nb_green = 0; ' x# k" w5 p+ J
}1 o, T% `+ j6 d' Y% |* Q8 T- y
else
, C w0 G/ ^$ M L$ Y/ Z& {{
0 O) D6 \2 e4 ^2 h% `* J nb_green = 1; ; d6 c J. x7 g' I O; |
}, q( y; t" q& J/ Z) y7 v
}
( P9 @4 Z: f% L) z
& }6 [0 k+ n8 a' u! q# e' Y
5 O6 Y2 n- M( i6 `}
* z& }+ W3 \7 y. e- F8 A}
! h( C; J8 j. |// 按键设置" M. R2 H) ]" N5 h9 E
uchar key_can; //定义按键键值
+ y0 Z8 n' m6 g7 [: B( q% W' C! d9 d* g! _& h) n
void key() //按键
( r- D0 l) U5 M8 Y# V{8 p7 V6 y( o S* O7 z- I
static uchar key_new;7 k# T9 [/ ~$ ]% D' z" `
key_can = 5; //键值最大( r0 @4 A2 W0 i+ R" l& o
P1 |= 0x1f;
, k9 `! n8 e1 ]# V; p if((P1 & 0x1f) != 0x1f) //确定按键% s6 y: x) |# Q. S: _1 w
{
2 Q3 k6 x' z4 Z# X7 U3 @1 }2 W! v delay_01ms(1); //消除抖动6 d0 I. L J9 w6 g0 v" B' a" e% u
if(((P1 & 0x1f) != 0x1f) && (key_new == 1))" j P/ D) }/ A/ {0 V; v
{ //确定键值按下4 s" j( b4 F [+ o/ a+ U: ^
key_new = 0;
* u. [, U: e9 H7 z3 d2 v* H1 z switch(P1 & 0x1f)
3 Z# z; M/ x J+ E% j' @ {2 S. ?. E2 B6 m, N
case 0x1e: key_can = 1; break; //模式键
/ @" h: o# Q: m8 J# Q case 0x1d: key_can = 2; break; //加键
* Z) p8 r6 l( p: i. \& a case 0x1b: key_can = 3; break; //减键$ ~9 s/ Z) K' k( N# X2 D
case 0x17: key_can = 4; break; //紧急模式键
A" [* d* y) S- g' s }
+ p! E; A E0 }; R( a: T P }
! n7 W7 E7 N) `6 R }
! y& n) U0 Q9 c- n O else " v+ |! C1 J- O- Z/ a
key_new = 1; 9 |4 w- b) q! ?; S7 Q
}- l. O' q- |2 I/ q# T) ~, k# Q6 P) e
- [2 r: W- y/ O( ]3 m! x8 E
uchar menu_1,flag_s;
% t2 m2 P A2 e' ^1 w' o* G9 J# [6 @! K0 [8 E% w' C" _# t2 {! X) t B
* Z4 R& Z" C0 G% G* L* c: F8 k
// 四种键值
7 |! f+ |2 h8 kvoid key_with()* G% c8 |+ b* R2 T7 F7 v$ m) a
{
# O4 G9 ~0 k# [/ W if(key_can == 4) //紧急模式
- z! d! X9 U0 F& D: [: z0 i" w# X+ ? {
+ }0 N9 v! x( x9 K- x flag_jdgz ++; [' X: m9 y/ f, _5 r1 M: }3 J
if(flag_jdgz > 1)3 h: E+ m5 J% g T7 {$ r+ l4 I# a
flag_jdgz = 0; $ r, s5 v1 _' L& C
if(flag_jdgz == 1) // 全部红灯亮% ~. h* W- M8 P
{' |0 i. x, p3 x
dx_red = 0;
3 Z8 _* H$ D. g" q dx_green = 1; ; m7 T; u8 T3 W" ]) K2 [
dx_yellow = 1;
" Z7 Y7 @9 ?) M8 H, T9 G nb_red = 0;
, O. l0 ~& K" Z7 q- L1 o! j nb_green = 1; 0 b6 i6 K+ E6 M! ^9 I. a
nb_yellow = 1; ) e% r" ]6 y0 C8 l' z
}
/ m2 u' M# t9 J" G8 x7 z: r
! P0 `$ ~. ~; I) [+ k7 R/ i# a) \; a5 D9 `6 i8 p
}8 Q, E' i/ ], \3 j, i
if(key_can == 1) //模式键3 `$ i4 d# \( x! E0 N" m
{, z+ a8 q" \! z u( C0 a( O: m
menu_1 ++;; F3 i, u/ ?3 z, U
if(menu_1 > 3)
5 i+ s' t$ \" v {
B, k1 E% J) r& i! Y' S menu_1 = 0;9 u+ q0 G* C* Q& p3 N
}
; i0 T, j5 n' ~# G }
; n P; {: W6 p7 ^& b1 U4 ^5 O
0 N; F. F' m) T5 i if(menu_1 == 2) //东西时间调整; r. g5 N: M( i' O' ?, z* ~" T8 R
{
3 i" C, V3 S7 v3 t if(key_can == 2)
/ d! y7 `3 b3 l# w {
3 R2 E8 I' b9 z; _5 r- ]+ t: l dx_time ++ ; //+1' B, }0 p3 g' w" z2 A
if(dx_time > 99)& J8 y2 I4 b# N
dx_time = 99;
4 g" q: V. M, [ }" |3 k5 G* L( f. [7 K
if(key_can == 3) j+ A" U& G2 H/ g
{+ x' Z4 Q* I8 \& g/ e1 ]4 _- e
dx_time -- ; //-1
& t, [* t+ _; w, U, t; ] if(dx_time <= 10)
- X4 D9 n" j& N6 N6 q' S; O% Y9 Q b dx_time = 10;: c* {. X8 N/ H
}" o; a# m% E6 @0 X; h" F
dis_smg[0] = smg_du[dx_time % 10] ; //显示时间( S/ i9 G! @' G- [- z
dis_smg[1] = smg_du[dx_time / 10] ; - `& K* c- t) l) g# b/ E J
dis_smg[2] = smg_du[10] ; ' ~3 @+ `' ]1 P7 [
dis_smg[3] = smg_du[10] ; 7 ?3 C1 _3 z1 M7 H" d: N
6 V7 S- J" x: X4 `! @
} 4 I) ~0 j% P$ w' ]4 |
if(menu_1 == 3) //南北时间调整
) x( ]) v4 y9 d* F. |# } {8 y, @# Y7 m0 b3 t
if(key_can == 2)
9 {. a, p7 w- u+ h# U {
1 x {4 ` |: O2 P4 {! W& [: w nb_time ++ ; //+13 V" @; H$ J; a) s9 K0 ]
if(nb_time > 99)
4 G; `: t/ h: w ?+ l nb_time = 99;# o* u3 {+ Z2 x% Z& H4 b% {
}
4 M# e# ] c( W: o, M if(key_can == 3)6 E6 l1 }. ?* n# q/ _- A
{
( `/ n t3 O8 F4 ~ s6 l, L nb_time -- ; //-1$ A0 G b, X5 x$ r
if(nb_time <= 10)1 n; |# L! }2 o1 G* j0 Y
nb_time = 10;4 Y. _( s! g G2 w: Z1 ^0 Q
}. M0 q* M. G- P$ S5 I
dis_smg[0] = smg_du[10] ;
& H+ {0 a- V, B) A dis_smg[1] = smg_du[10] ;
. r! Q1 [: O1 a. b dis_smg[2] = smg_du[nb_time % 10] ; //显示时间
+ o% y z% G o; C dis_smg[3] = smg_du[nb_time / 10] ;
' P& h$ h ]) b a i
, X; Q$ W$ v& a: ]9 Y( K& E }
; U: d8 n- b& y/ r- Q+ z5 x}1 v3 _6 r& |: q ]- ^
* o; H; K) h6 A9 y9 \5 h4 Y9 a
8 k+ y" t/ {8 t3 C
//主函数$ a- z) k9 J' m; I
void main()0 j. W! H* Q" ?9 M6 i
{
X1 F' O! R& F9 ?1 I) F time0_init();; [4 }# s( r# G' T" V- f" }" Z# S
# P0 p' P, O7 }4 E dx_s = nb_time; //初始时间为南北时间' T; k. G' P6 ~" L- e% |6 F: {: z; ?
nb_s = dx_time;
* ^( _+ s$ p2 d while(1)
7 G8 x7 X- M) K# ` {2 _0 D$ L% s2 c1 \) {# P
key();3 P1 y1 l* w2 Z2 d
if(key_can < 5)
! R; A- K& g2 E% P+ J3 F' N6 y key_with();; z- D* Q% b" W8 e! X. Z
if(menu_1 == 1) // 夜间模式
% Z7 a$ k: S2 x- Y* w {
2 w. u+ c: J1 c9 _7 T! \4 ^ \ dx_red = 1;
3 J- {: x3 G% E# h/ l3 x# K1 ~; U dx_green = 1; 1 a. u! W- _ K6 i
nb_red = 1; //红绿灯不亮
" V% A) j e" G+ h7 K, U1 p( { nb_green = 1;
# j" M" F( N9 t6 g" k# U
$ {; x5 k7 @7 l* _ if(flag_500ms == 0) //黄灯闪烁2 g6 _0 B) i) C- L* t
7 q9 a" ]: }$ M: v$ {
{
! N; R' o+ i6 n$ }1 M dx_yellow = 0;
2 S1 P' ^! x9 q nb_yellow = 0;7 T4 c, b; k2 A5 x0 S: ]3 F
}
- b( Q+ b# V1 e# o else 8 n2 Z1 l! ^* A/ I# V/ j
{
6 t( B& c( V9 Y, t0 Z- H4 x6 W3 p dx_yellow = 1;& Z3 ?. e! A; U, L2 w" ?; |
nb_yellow = 1;
: N# S2 h+ z: M% U) s7 j5 b8 B' K }
& N) }3 O9 o& g1 f. D# }& J O- b2 S- x9 g- t6 t& k7 u. m
}- P& ?8 h" |) n; O: \5 u; r* O
2 S+ f0 t8 b% ?' P2 i if((menu_1 == 0) && (flag_jdgz == 0))
, u1 [2 d7 d' ]2 c$ B0 p. t jiaotongdeng_dis();
8 f2 M/ J) W7 k# q, J display();
5 |5 c, O+ T" h- g1 l; F }+ p+ v& L+ B+ D' r8 y" \( ]1 @+ N
}
( j& l, j+ O* c7 ]
! T" Y* M& O" a4 n// 定时器中断服务0 B: c3 L. R2 E1 c7 _
void time0_int() interrupt 1
$ b1 L/ n4 }! y/ E+ Z' l{ " C: F: e- \9 J; ^* N
static uchar value; //延时10ms
& u& o8 x3 I; l/ C5 _( B) q8 m1 } TH0 = 0x3c;' G, Z8 [/ k+ v
TL0 = 0xb0; //50ms1 A) D7 D# _# X- V4 c7 D+ g
value ++;2 }* D. z& v5 a6 U$ }
flag_5m_value++;$ u2 Y* N9 s) `+ V1 D; [
if(flag_5m_value % 10 == 0)8 s8 R! A8 p8 |1 Y. {. p
flag_500ms = ~flag_500ms;
: H$ |) `" b- b- l, U if(value >= 20)) b2 `* b) s- E5 ^, ` E
{" i+ x6 ?$ ?0 ~6 P' I3 K
value = 0;
4 [) i7 g7 e! @ flag_1s = 1;
* t- E) B: S! ]% m4 `+ P: D }/ Q) O) t, F( y. t0 @3 t+ C1 \
}
/ r0 w4 x9 m) K6 V% B& y
( N2 _! D( k- \7 ^% n% } |
|