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