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