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

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

[复制链接]

该用户从未签到

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

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

该用户从未签到

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

该用户从未签到

4#
发表于 2020-6-29 19:20 | 只看该作者
3馅儿 发表于 2020-6-29 19:16
  m& G8 j8 _: ~8 A& w, K+ h1111111111

  {- v* D+ c' R. ^0 p啦啦啦啦啦啦啦啦啦啦啦啦
/ |* n5 m0 [8 T) _+ F% h& M6 y1 N" c
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-27 05:44 , Processed in 0.140625 second(s), 30 queries , Gzip On.

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

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

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