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