找回密码
 注册
关于网站域名变更的通知
查看: 858|回复: 3
打印 上一主题 下一主题

[毕业设计] 单片机智能交通灯 设计方案论证报告 仿真,程序,正式论文等

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-16 09:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

该用户从未签到

2#
发表于 2019-1-16 22:20 | 只看该作者
楼主弄的这个不错

该用户从未签到

4#
发表于 2020-6-29 19:20 | 只看该作者
3馅儿 发表于 2020-6-29 19:167 s4 a; Q* C; F- n4 y. h
1111111111

  t% m! }5 a# F5 N4 \啦啦啦啦啦啦啦啦啦啦啦啦
  m5 ~' A0 V# a( j
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-11 20:57 , Processed in 0.171875 second(s), 30 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表