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

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

[复制链接]

该用户从未签到

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

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 S
3.设计中要解决的主要问题和措施
问题一:如何实现倒计时与灯的变化相同步
在整个交通系统中,指示灯与倒计时相同步是重要的问题,设定的时间不光是倒计时也是指示灯的显示时间,因此解决此问题就变得尤为重要。
问题二:如何能够调节数码管所显示的数值
任务要求需要使得倒计时时间可调,那就需要将数码管显示的数值进行合理调整,同时还要确保时间和指示灯相对应。
解决方案一:可以看出,无论倒计时数十多少,指示灯发生变化的时间都是最后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

该用户从未签到

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

该用户从未签到

4#
发表于 2020-6-29 19:20 | 只看该作者
3馅儿 发表于 2020-6-29 19:162 {7 `! a  A9 t* n
1111111111

- E% }% K* j; C9 s. q4 Y$ u啦啦啦啦啦啦啦啦啦啦啦啦5 r/ N5 Y, m0 E, Z' p
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-3 08:27 , Processed in 0.187500 second(s), 31 queries , Gzip On.

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

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

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