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

交通灯仿真 AD画的原理图与PCB 源代码

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
交通灯仿真 AD画的原理图与PCB 源代码
) {) }, l+ y+ v4 R9 Z& w, w" E, G! }( i

) D2 x3 M9 c: v' w: i! S这个51单片机做的交通灯可以实现时间按键可以加,可以减,实现南北通行,东西通行。 " b8 t( O3 D" Q+ H

% j8 ]$ T) U  O. D& ]$ c交通灯仿真:* \% g4 `# W# g0 v
, h( z2 {  v9 g
单片机交通灯的原理图(用ad画的)8 [: @/ x' X. r" \9 T; M
% O4 ~5 B# B3 \' o
/ @5 _, _3 V5 h) X! H
pcb图:
- F9 F" d5 b7 W- w% q& ?, h
+ D7 B8 c/ E7 [0 K) {. s, p; N' m  u  U/ U& a

" E2 c+ i2 T9 h1 v/ G单片机源程序:

' `( @9 b1 f1 j. J! b5 O: U* V#include <reg52.h>
: n% o) ~6 |5 g7 g#define uchar   unsigned char " o: |; S6 W- |2 ?# A0 M
#define uint    unsigned int
- A) N9 N' o0 f$ ~' @, y/*****定义控制位**********************/ 5 M( N0 ^" D, J) l+ q/ l! ]
sbit    EW_LED2=P2^3;           //EW_LED2控制位
- z6 W2 [4 p) C9 Xsbit    EW_LED1=P2^2;           //EW_LED1控制位 . {! q, }* E5 r9 U3 ]* l) M
sbit    SN_LED2=P2^1;           //SN_LED2控制位 7 N4 o3 G6 W+ x
sbit    SN_LED1=P2^0;           //SN_LED1控制位 5 ~( F1 w6 ?0 C! R; ^$ D" _
sbit    SN_G=P1^2;                            //SN绿灯7 {- Y( X& Q2 \: O& I2 H+ `
sbit    EW_G=P1^5;                                //EW绿灯5 L  t1 R" o9 c# E
sbit    SN_Yellow=P1^1;         //SN黄灯 # w5 b5 n$ I% f. g4 v* z+ s1 d5 h
sbit    EW_Yellow=P1^4;         //EW黄灯
' ~0 }: i# |' \6 c, L" _) Q6 u* o: ]sbit    EW_Red=P1^3;            //EW红灯 3 o6 L) g0 T2 K) T, i
sbit    SN_Red=P1^0;            //SN红灯
. q2 q" b$ d: x% ^) W; vsbit    s=P2^4;                 //功能选择键+ ~! v" i2 @" B: h& i# B. J  \8 a
sbit    key1=P2^5;              //按键加及东西强制通行
# Z" @" ?. }# D( Ssbit    key2=P2^6;              //按键减及南北强制通行# R0 j6 u, r/ i: i. |( F7 ?
sbit    fm=P3^7;                //蜂鸣器
$ Z8 I; M1 p5 j# v4 `. s) a4 Ysbit    dula=P2^7;; l) [  K1 P. c$ f+ F
sbit    P3_2=P3^2;
. D, U  M- s+ a5 A" }bit     FLAG_SN_Y,FLAG_SN_G,f_sn;  //SN黄灯标志位,绿灯标志位,sn运行标志位
# n" H0 D7 ?- Mbit     FLAG_EW_Y,FLAG_EW_G,f_ew;  //EW黄灯标志位,绿灯标志位,ew运行标志位
0 g3 f0 U6 i% l1 ~" Zbit     F_DISP=0,flag=0,flag_key=0;
& q% ^- }! Q: F: X2 pchar    Time_EW;                //东西方向倒计时单元 3 s; c% _/ i) l
char    Time_SN;                //南北方向倒计时单元 , C6 Z' @% q- i) p
uchar EW=24,SN=20,EW1=30,SN1=34; //程序初始化赋值正常模式 ' o7 i/ }. X' l
uchar a=0,i,c=0;   A+ p0 v* [9 l5 o, {! N* T! j
uchar code table[]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //1~~~~9段选码
0 C. D: T/ r! o! m# o- R3 ], T. duchar code LIGHT[]= {0x0c,//SN通行
2 n) G4 L1 Q1 r9 Q* h  D4 z        0x0a,//SN黄灯/ b) {6 o/ j* [- q' J) C
    0x21,//EW通行/ [% Z6 K! Y4 o& Q5 y
        0x11,//EW黄灯7 b" k6 V  c) n  Q$ B$ D, o
        0x09//全红
1 \! b: A8 q7 x3 R2 l        }; //交通信号灯控制代码 1 _) `$ U5 Z' [' T* v
/**************** 延时子程序*********************/
+ `8 J0 _( Q- b0 r, Wvoid delay1(uchar k)1 r1 Z- I1 ^8 |
{
; Z' d2 g& J" @4 u/ }1 k6 {   uchar i,j;
4 v" h: p# _7 P8 G  u+ _   for(i=100;i>0;i--); N5 Z- h9 H! ]6 X5 k
     for(j=k;j>0;j--);
7 G9 p7 E: x' L6 {}  + P/ s8 N4 u5 F2 h7 b
void Delay(uchar  a)
$ k, V& [. H3 y6 v" ~: i, l{
/ v1 W# T, z& c  Y2 ^) d    uchar   i; 4 y$ m4 x$ u( F0 a' N
    i=a; + ?8 I9 E  G: V8 ?& X9 u
    while(i--) ( p& c5 B! E8 b  ]/ m
    {
( k/ b2 k% L. G6 i. g' |. t        ; 9 Y4 j& `- m$ C; x; [8 h
    }
2 z% M3 v% H: i: n, W}+ S2 I4 H6 W$ R/ `( ~. j, |6 \, h
/***************EW方向SN方向主干道数码管显示驱动 ****************/
/ l' V0 q# t$ a6 A6 l# h. fvoid DISP_SN(char g)
' p9 d4 k6 }3 Q9 O5 _  t$ \+ M2 A{
* d1 g7 M$ Q, ]& d: B    char h,l;
/ W3 K5 \! o2 \. G- H5 f    h=g/10;  //SN方向计时的十位数
2 P, U0 p) n8 s& _4 A- \  Z2 Y    l=g%10;  //SN方向计时的个位数 ( O: f& F& N7 R3 g. D
        dula=1;
, a6 B9 B5 R5 S& e, X& T0 I    P0=table[l];   //显示SN计时时间的低位
9 W$ D6 Z8 @1 ?9 H4 R1 e$ u        dula=0;
) o! y. D9 A# L- M0 ]    SN_LED2=0; ) e# n, @! `0 l' i
    Delay(2);. x" G8 g8 x( k& q
    SN_LED2=1; # J# [% {+ v, L2 O7 u
        P0=0; & z; J" d7 u9 s, i
        dula=1;
5 U8 y$ f& ~/ W    P0=table[h];   //显示SN计时时间的高位
" z5 }0 V& O9 v! x) E4 M0 E2 _        dula=0; / x6 H, L, H1 d# X3 ~
    SN_LED1=0;
; n4 P. Z# D: g6 _0 s% P    Delay(2);
' Q7 j& j, g, J/ p6 t9 u" E5 N- R    SN_LED1=1;( w8 e2 `# E# M$ o
        P0=0;' x" l- I( `  C3 ?7 T
}
5 h: {+ \1 h  G* ^5 m* Zvoid DISP_EW(char b)
9 `. Q0 V, `. k, i& ?% O+ v# L{: u5 T9 Z: a$ Q' P0 N; P
  char h,l; / D( f7 w6 d: }2 ]& i( }
    h=b/10;  //EW方向计时的十位数
& E* ]8 \) T. i9 F  a, @    l=b%10;  //EW方向计时的个位数 ; M/ V( X: G6 B2 F# s% ]! [
        dula=1;
2 ]/ B  y  O1 z7 B7 D* P    P0=table[l];   //显示EW计时时间的低位
* r5 A* k* ]4 ^" C. Z; h! v        dula=0; ; G+ c/ m( Y: W! w' [2 K
    EW_LED2=0;
, e7 a, S  ]$ c7 \1 u0 W    Delay(2);  b; ]5 `1 ]" t( @8 a1 S9 G* c
        P0=0;) Y% L  M0 l' L* R  r
    EW_LED2=1;
# c8 W$ M4 X" `2 k6 D8 r+ [6 ~% o9 ?        dula=1;# t' a+ Q/ Q4 u8 x3 E7 {  Q9 S
    P0=table[h];   //显示EW计时时间的高位 ! Z' z8 L0 Q8 s
        dula=0;
  y" i/ Q+ E9 [2 ~6 _+ B. h    EW_LED1=0;
% ?0 Q1 q/ A5 E8 |/ Y; d1 f) X1 B8 N    Delay(2); 7 [7 k4 \, `8 m  a
    EW_LED1=1;
+ J& G+ U" h2 v6 Q. u0 ~        P0=0;, h/ [* ]6 [6 ?0 j& t
}
! X0 n( \' e7 z! g9 g, e/**************开机自检***********/
  X0 A; ]5 x6 Y; s2 ?. J( Zvoid check(void)
; w% e  M7 A: W) }+ z2 }{
+ o% X) z) E; X( Z5 {! g7 b& x& M  Time_EW=5;
" h+ j: I8 [) x  Time_SN=5;( a- o. k% P2 V
  f_sn=1;) g$ \  ^1 c% ?7 Q( J: o% K# }
  f_ew=1;8 h+ y3 v3 h- E' ^
  while(Time_SN>=0&&Time_EW>=0)
* g/ X/ ^" Y/ y( F& L  {
- e- T% I- L- r" L    P1=LIGHT[4];9 Q& t  Z; p% U& c: u1 b
    DISP_SN(Time_SN); ) L- d+ Y+ u0 K/ {' O$ P6 d
    DISP_EW(Time_EW);) s. F0 m0 u3 M# R9 e5 j% v' S$ H# K
  }4 M- g1 t, m8 V4 U* k1 B
}' Z6 e5 c* F0 P; ~! k. ~
/**************无显示**************/9 p- k! _0 a3 i; p4 d
void dispnon(void)
2 j# X1 a+ y! f& ?{
) V! Q9 G. N; U  w# u: n! f6 |  E        dula=1;# ~% U+ P$ V4 U* z
    P0=0;   //显示SN计时时间的低位! E' Q% y2 s1 [
        dula=0; ( A+ h. l1 t& E: C2 H
    SN_LED2=0;
1 z4 t% d+ B7 |. ?" y  L3 X    Delay(2);6 z4 @" m* P9 z8 g4 c
        P0=0;
& U5 w3 ?+ |$ Z3 G    SN_LED2=1; # c, S9 A0 M% [' z( p6 v; }4 w
        dula=1;2 D& u5 c3 P0 c
    P0=0;   //显示SN计时时间的高位1 j5 h0 m$ q  R) \- Q- R; I, l" C0 X
        dula=0;
  T5 u8 ~: z, d    SN_LED1=0;
; `2 l/ g. p8 Q' ?7 z  f4 b5 S    Delay(2); : Q. R5 Q; Q% A5 u
        P0=0;8 c  J: u" C9 l! I( M9 z
    SN_LED1=1;# ]3 s( Z7 g6 h: D; f
+ Y/ L9 c# u* z2 w! t7 _
        dula=1;3 L" _9 A, n/ r
    P0=0;   //显示EW计时时间的低位
" j! N4 z2 A+ H4 S9 H, F/ W        dula=0;
( g! i( F% s3 |) K: z    EW_LED2=0;
8 G# s4 w) i5 F    Delay(2);
) ?& `% K4 M# V" F: G6 u! z        P0=0;
8 R0 u, g4 H0 f3 {/ M. z    EW_LED2=1; 9 ^8 m3 ]7 g4 j1 U- N7 K5 L- A1 I/ ?
        dula=1;! k4 i8 Q; p: Y& m) ^) r1 [& P
    P0=0;   //显示EW计时时间的高位
4 ^, Z, P' a# c- _$ @- k1 f        dula=0;
/ E! C8 }% G3 A3 R+ ]    EW_LED1=0;
8 e( ]2 I, p- q3 r    Delay(2); 3 Q2 [' S) X; f3 f3 a
    EW_LED1=1;
  n* Y- ^+ L4 S- w6 w4 w        P0=0;
& i; A6 B, N) b; p% v}6 p6 g- O# u2 j* @$ _
/***************按键检测*************/3 o+ U# z8 n0 C! R, P. ?" C* l- z
void keyscan(void)
; r6 k! a* A1 R& q{
) {6 K3 q# [1 R          if(s==0)' S, ?) \) Z' S4 x! o3 d! V
          {
" ^  d' X* X0 {              delay1(5);
: M( S" s: m0 f/ p2 O                         if(s==0)
! s1 v9 T3 O$ y, s+ m& l                         {
6 ^8 k$ R, e' q7 V. Y                                 if(flag_key==0)& D( g, R* T& T2 k& ?$ G
                                 {         
( [1 D' c2 K3 W: ~" w5 [- v2 s                                                 a++;
# ~4 M+ d/ j1 ~' Y9 K                                                flag=1;
& O: z" f8 a$ v                                                TR0=0;( @' f: P$ Q" C: G
                                                P1=LIGHT[4];
# d# @% Y+ g+ o                                           if(a==4)
1 y' _5 _6 v; T4 _: z# d8 w! F4 ?3 `                                           {* U& |9 T2 l  m, Y/ P+ C% G: [4 ?. O
                                                        a=0;
! Y: n) ~  U2 g+ G                                                        flag=0;4 ], O$ }0 Z; X. V8 h; I. ]3 ?
                                                         if(f_sn==1&&f_ew==1)' b; ?2 y) ?1 e1 v
                                                         P1=LIGHT[4];
5 j# L% t  I( B& O' i2 G% ]5 g                                                         if(f_sn==1&&f_ew==0)
) H2 ~  j' K4 s" }; ?+ _, c                                                         P1=LIGHT[0];
9 N; ^! c% x" H8 l# G! J4 h                                                         if(FLAG_SN_Y==1)
- D/ v  w0 ]  F4 `' m8 Y  |5 z% H                                                         P1=LIGHT[1];
2 a' J$ u) l6 o2 z0 \  _8 L                                                         if(f_ew==1&&f_sn==0)
; C! Q0 D$ A: g* ]/ j                                                         P1=LIGHT[2];" @9 e4 G4 z$ [" `4 {/ x
                                                         if(FLAG_EW_Y==1)
- `" j% s! O% e% Z! D% o9 B) w                                                         P1=LIGHT[3];- r1 {% v3 x3 N7 f- v. Y
                                                        TR0=1;
6 K( w- P" A; [0 d7 h$ e; m) S                                           }
4 |) h; M/ j  u" f3 B' L" K: G                              }: q" r4 j7 n: Z
                                 else if(flag_key==1)4 E- D2 Z; |" g( z) A! Z
                                    {
6 s, j# b' n3 X/ L3 v. F                                                flag_key=0;0 I- e9 m# Z: y; v, \; V* s
                        flag=0;3 f7 q0 M. k& i$ |5 ~  c
                                                if(f_sn==1&&f_ew==1)
: r0 ~: L: _) H6 p1 i& v                                                 P1=LIGHT[4];
3 N1 W( W( t9 F' Q$ U, |                                                 if(f_sn==1&&f_ew==0)3 O' e4 x) h3 m$ I+ ]% K& n
                                                 P1=LIGHT[0];( X  _& {+ F4 \' k# i
                                                 if(FLAG_SN_Y==1)* ~! u) R0 E+ h) r+ F+ q
                                                 P1=LIGHT[1];
) ~* f5 u0 C* `$ B+ G5 }6 e                                                 if(f_ew==1&&f_sn==0)6 ^6 Q1 e8 z8 o3 o; z+ [
                                                 P1=LIGHT[2];3 n# V" _+ |9 t, O" G
                                                 if(FLAG_EW_Y==1)
& B5 {4 n, s) C( B3 R" T                                                 P1=LIGHT[3];
# V6 {6 b4 w+ l3 n- ^                                                TR0=1;
, f5 F3 }$ |' ?% A7 ~                    }  }/ H$ E+ ?( g* r- H
                           }
5 E, L. B0 u  G; g0 A                         while(!s);9 A6 @. Z2 h! _( ^& H" d* h
               }                        
$ ^) a1 x6 Z* u; S- i4 Y          if(a!=0), f! c# G. [: C0 f% d3 w+ ^0 }
          {
/ q( G" e8 i5 Y2 x7 J- t             if(key1==0)* T+ c% b7 T, A6 F( v" r
                  {
& T% J/ I. |6 }- m2 [/ j3 O2 j                    delay1(5);# E7 q% i/ E' o  |/ e, U
                         if(key1==0)8 p0 V: J" U9 y4 ]) q, m# G0 C
                         {  V1 L2 `$ W# ~3 j0 Z; b" N: v
                                                if(a==1)9 M1 n# l7 ?" d, f
                                           {' s! a' D& {$ v6 V0 x
                                                        SN++;
- K" y, N; z; c- K! y                                                        EW++;
& [+ [( B5 H) z( U- Q2 Z6 u                                                 if(SN==100)
6 Q. n6 K* a$ v7 s7 w, M; R; g+ v                                                         SN=0;5 o: g' @! M6 ~% q& F; C
                                                 if(EW==100)  H/ }0 V0 b$ o" E. p7 A: V: K
                                                         EW=0;
# l" p& b) V# k                                                        DISP_SN(SN);# x8 V/ N& s5 A- M) ?% o( ?' F% r
                                                        DISP_EW(EW1);
' N  F6 r# N6 }( x! ^6 K, H                                                }, K7 z1 O0 e- x  ~; M- q: b
                                                 if(a==2)0 s; L3 g! p8 Y
                                                 {
- Y& }- k# g( _0 u& e, ~                                                                 EW1++;
  a2 J3 [5 \6 o" \                                                                 SN1++;* M, o  K: ~' H. ^+ [+ @' n8 p
                                                         if(EW1==100)# A& S& D6 x$ r1 K7 [/ W
                                                                 EW1=0;  g' [6 R( P# v4 e4 ~
                                                         if(SN==100)
- [' t; ?. Q5 B' w                                                                 SN1=0;
9 s' F( d( S6 ^. e7 H0 M% z                                                         DISP_EW(EW1);6 R* f, s- y1 ~- q, e6 @3 {; H
                                                         DISP_SN(SN);; m" m" C3 b# x1 V' B) }- K) A- v
                                                 }
% v* B( q" M: S) m1 h" T                                                         while(!key1)
$ v% D: \! [/ s( a                                                         {
. F, F# d( x1 o7 X! E                                                                if(a==1)
. h; T4 y1 x+ r# g1 M5 b                                                                {
6 K; Z7 H0 a% D7 b                                                                        DISP_SN(SN);, L2 y( T- E9 i' c: ]2 |
                                                                        DISP_EW(EW1);
! e( {* M- g" T" k  F6 G                                                                }
8 ]9 |" g9 l/ t  O& s                                                                 if(a==2)
$ N/ H; w5 F6 |% J, `$ ~                                                                 {
' T' O. z0 _0 _1 f$ n                                                                        DISP_EW(EW1);
6 \% A+ s7 ?6 y' s                                                                 DISP_SN(SN);  M4 c3 a4 ]" K) b
                                                                 }
8 h( n  O: x& z+ D                                                         }
" G) W1 E# S/ s) u6 K5 b1 a                        }, L: u3 G$ N3 b) r+ y- e3 ?
                        }                        
: ~4 A# h' r2 m2 U                if(key2==0)
7 [" z: Y9 _$ G                  {% F' Z  i* M1 _
                                 delay1(5);. |2 S7 w2 E4 Z, ~! o
                                 if(key2==0)& Q3 w/ N5 w* y! e
                                 {5 N* @/ B. U7 T1 d/ v
                                                if(a==1), g, D* q4 [$ [! ^: T
                                                 {
7 t0 E8 D* F. P- r. i4 L                                                        SN--;
- H5 A& {2 o* m  {& t                                                        EW--;
* Y1 t' W; B  c. E$ b                                                         if(SN==-1)
, I! d. n, n3 N, U                                                                 SN=99;0 J7 _) l# k; J% F
                                                         if(EW==-1)
7 [) a: Y6 s& ^: ^2 J                                                                 EW=99;
1 `# x- Q3 Z, ?. V( N/ x6 s3 B                                                                DISP_SN(SN);* A( _4 V& D# m* A+ J7 r% x
                                                                DISP_EW(EW1);- S6 p. g% Z+ ]0 F& d  ?$ Y
                                                 }6 b4 }! F6 q8 W6 o. j
                                                         if(a==2)
: k. X) F/ n0 ?, c                                                         {/ A( W1 i8 U( n  g* s( Q; e0 k
                                                                 EW1--;1 B* f! {- q, ?5 i* S2 Q: G
                                                                 SN1--;
; h; u) `) ~$ i" s                                                         if(EW1==-1)
7 B0 @" b0 k& y6 U: ]                                                                 EW1=99;3 w7 B7 D& v# U, j. ?! }
                                                         if(SN1==-1): S8 G8 c( h$ ~  S
                                                                 SN1=99;
( N* L- o3 u$ b# N9 P* `' I                                                         DISP_EW(EW1);' _& \/ T5 s1 Y) W* W1 i
                                                         DISP_SN(SN);8 Q: _8 ^: T4 ~3 g" W  k
                                                         }# J7 D7 e$ z: Q4 i0 n0 T& Y
                                                                         while(!key2)
! v0 B# f3 n" Q! L/ N' \                                                                         {& L1 f2 p. r9 S5 W
                                                                                if(a==1)5 V$ k! K# v* Z7 I1 T
                                                                                {
6 a3 h( g% L* {: J/ H' W' N                                                                                        DISP_SN(SN);1 @' W! T+ ]# H" u9 A+ S% Z
                                                                                        DISP_EW(EW1);- G3 C# Y# H+ ~% u/ a
                                                                                }
, w  c+ q0 E: W$ ?8 s                                                                         if(a==2)
8 o0 z, {* C1 J& [; B! I" h                                                                         {
) `3 @" [) z8 s  @: ?2 ~: a                                                                                        DISP_EW(EW1);
$ n; ?2 w0 |" I8 F0 K                                                                                 DISP_SN(SN);
9 V  J6 W: E2 \% h                                                                                 }
: U9 s- O8 C7 A* \1 s                                                                         }
$ a& [! t* f1 W( ^0 J7 F, \6 j                           }
* P( u6 v: r0 n, z2 C6 C                                }                        
0 F) n' }6 E2 m1 i+ ^, k          }8 ?1 @2 P3 s1 Z9 T9 Q# H+ y6 z
         if(a==0)  h3 b: t6 ?7 w
         {
8 A9 i9 w0 ]4 L. [& [% k             if(key1==0)
9 v3 o% S, B) j. s# h! {                 {! m6 ?4 l/ i$ _5 |1 Z
                     delay1(5);: N, `9 \8 e% w+ O. U/ n* ]
                         if(key1==0)
8 q! B$ ]* Y- `  k                     {
2 z2 I/ {) @8 r7 I: A1 f' e                        TR0=0;
! F8 E, M' W: `  y$ @, r; [                                flag=1;
8 C! G, [9 e# v0 U8 L                                P0=0;
7 V& ^5 F! v; K# C* K" C6 a8 X0 y                            fm=1;: w( _6 d% Q- T- w$ B* \5 t
                                flag_key=1;" c9 I( }; g7 c3 Q$ K
                     }( O( q$ ]& q! C+ \
                         while(!key1);; d* N) U* I% d/ G, \! Z
              dispnon();
# C9 J6 t+ l. f" o$ |6 x- t# S/ U2 A             P1=LIGHT[0];; a, ~9 l3 j6 W' c# T/ ^
                 }
4 n9 |+ m( t/ V% R5 M                 if(key2==0)
. W" q- g% O, Q, n7 |                 {
- L, T0 x: P/ a* N$ B                     delay1(5);
3 U! S- V) N4 G                         if(key2==0)
6 w$ Z; X+ c" F# J* ~+ ^9 p                     {/ l. [9 T4 X5 ]3 Q! o0 d7 Y
                        TR0=0;% @) f0 ~" Y  d3 T& p' F. o
                                   flag=1;( f) u$ c$ c8 V0 _# E" |- \* Z3 }
                                   P0=0;' T* H( V4 P+ W& C/ f9 U! N
                                         fm=1;2 i; z- j  s/ Q( ]3 u
                                         c++;* V# P) f4 J5 A! m, [. B: `
                                 flag_key=1;; a; i& B! T; s! }
7 r, N1 ?6 }7 z5 J
                     }
9 j) R4 O+ i& ~8 X# U7 }                         while(!key2);
' g0 J4 {+ ~+ H- R) @                         dispnon();         
1 A% U+ U5 p# g9 a                         P1=LIGHT[2];1 x- [0 y* Q0 S: v9 X( k) d; ^
                 }
9 ^& S! I5 C" D8 r; O) P         }
0 a& E- F  w: \, O: e}+ C) G# i8 j$ K$ N4 w
void led_disp(void)
8 D( C9 n  e9 X  a4 S{
1 K" n: w( p' q; q/ U1 |5 N  /*******SN通行EW红灯*** ***************/ 7 y) P9 u, e; o6 U0 l
        FLAG_EW_Y=0; / ~5 _2 R: [8 v" j! \( o
        Time_EW=EW;
6 O7 f7 N4 n' r; ^. |) x        Time_SN=SN; ! s! W6 J  z4 O
                f_ew=0;
4 F- b$ U" _5 ]& U* y5 N                f_sn=1;
1 g8 _, `) x0 Z2 ~                P1=LIGHT[0];
+ F7 v9 \, _0 F1 P        while(Time_SN>=0)
1 L3 w% O) p( x6 Q        {   
2 ~: s3 p' e% Z- J/ q$ E3 v                    if(Time_SN==3)
  h, c3 h2 \# d5 B" k+ u                        {  d4 G. ^) y. v$ s
                           FLAG_SN_G=1;8 W% q- |* O9 E1 V, D
                        }
, d: P8 K1 ^: W  ]: b                    if(F_DISP==0)   ; g6 ]% \) k- I% T, S
             {4 |' ?) q! {) ?* Y
                          DISP_SN(Time_SN);0 x' U4 A" \) t
                          } , e+ e6 A* @) m' B! i
                  DISP_EW(Time_EW);1 j- d& U4 |& u, L) f
        }
: ?: q9 f- F" I* a: f                /**SN黄灯闪烁***/
4 A2 G# O: y. X                 FLAG_SN_G=0; 8 k4 C2 I# d. X3 G
                 Time_SN=3;
1 R( n7 Q* H1 O                 FLAG_SN_Y=1;
/ u! v7 C6 E% r! l9 E0 V; r                 P1=LIGHT[1];
" z3 H! J* Q( m3 M; V/ C% n" ?1 Q               while(Time_SN>=0) : F8 R8 _' H; n& f+ C( |. g9 o
        {   
, V$ o- k3 ]# R3 a5 Q# r                  DISP_SN(Time_SN); + b* K" d  e9 E- ~
                  DISP_EW(Time_EW);
; h$ X# z0 q9 ?* k        }
: K7 ]1 A. N% f3 @. r9 D' l                FLAG_SN_Y=0;
6 V3 s" ]; ^+ G& R8 ^                f_sn=0;
# E4 J0 r5 S  U3 [9 p; J/*******EW通行SN红灯******************/ 3 {4 `7 @* }' G* F4 k, d- \
        Time_EW=EW1;
" S) Z. t$ U8 u9 |7 v* Q2 [% X* ?        Time_SN=SN1; , ~  G5 V  Q1 E
                f_ew=1;8 m1 S  Q- _1 d+ P( n  u. `
                P1=LIGHT[2];
- o, ^) ^- b8 h' D8 k+ Q* L                /***EW绿灯亮***/
" ~1 o8 j2 F# @* e        while(Time_EW>=0)
# A, g5 a2 G  Q7 }  \- r1 `        {  
9 Y8 N$ T8 G$ Z3 M  n# y: u2 k           if(Time_EW==3)8 k: y8 k; |! B; E, ~$ \, Y
                        {
7 c8 h: z: y/ k9 v                           FLAG_EW_G=1;
2 Z" P0 J% W  x* B/ X: w6 _' {' {                        }
5 Q2 i, L6 @( W/ a" n& ?                    if(F_DISP==0)   
( P$ Q/ M- j2 h: l             {* g& r) ^1 n! I2 q! {7 I0 }8 i/ U4 X
                          DISP_EW(Time_EW);1 y! b9 R$ }8 P  _
                         } 5 L7 |- L: w4 y6 D# n
                     DISP_SN(Time_SN);
1 A+ |' t6 y7 i0 k5 o0 s        } ( k( k6 M7 Q& Z) y& G1 M: Q# J
        P1=0X00;' s( q& z+ u/ R6 @
                FLAG_EW_G=0; ) j  y+ w0 h4 O6 R! P! }
                /***切换为黄灯***/9 ^) g3 B" Z8 L) e1 {
                 Time_EW=3;2 }) K+ s+ T- r  z$ w; p) H& c
                 FLAG_EW_Y=1;
2 ]0 o' V/ n7 g7 J                 P1=LIGHT[3];
( o/ k* {. b6 i3 J$ Y" K: {  Y       while(Time_EW>=0)
* F0 E3 n6 Z$ c& G* A- }        {    % E7 w) z' ^4 X( o  S1 [
                  DISP_SN(Time_SN); + ]9 K9 S$ q3 u
                  DISP_EW(Time_EW);( p8 H' _: S6 Q: V$ a0 q
        }
& c/ @$ \) j1 w0 Y. S                FLAG_SN_Y=0;
! T9 Q& D  R% H( N) M                P1=0x00; ; `" m; m: n. o) k
}
7 E* m3 w! B, d  q# Dvoid init(void)
) f! n6 j, s' L; m/ W0 g6 T{: u* ^- D+ t6 {6 E0 V
    IT0=0;
7 c' P6 Z- Q" ]    TMOD=0x01;//定时器工作于方式1
! T1 ^0 H) u- p4 \  n4 C    TH0=(65536-50000)/256;//定时器赋初值
2 V  @: z5 r- s: V1 u/ ?% K    TL0=(65536-50000)%256; 6 u/ L( g+ a9 S, P5 u* q2 \& m8 x
    EA=1;//CPU开中断总允许 ! [2 e" N( ~9 {6 D$ e; Y: H3 f$ n
    ET0=1;//开定时中断 . o- b* G9 ~3 f; v# a
          EX0=1;1 ?, r6 I# j" N- s5 j9 j5 Q
    TR0=1;//启动定时器0  
) g2 ^" A1 w% d0 n9 l1 f0 u          fm=1;
; B  k3 I& J/ f- T}4 t) H! j, h. o, }( T3 X
/********************************************************************/; y6 x& R4 C9 _$ e9 O* W

: ^5 f, P  H$ |# K& j9 _void main(void)
3 Z' J7 C: [8 d2 K( C- s{
5 R) Z9 U$ M9 K1 J    init();
- c* n! `4 L# V; \# F) V( I1 N        check();8 N, p1 i2 a! u0 J4 P, ]
    while(1) : l) c, h8 w. [; l- P/ S
    { ; q' p2 ^1 }" ]0 s) b* `6 W: c
           led_disp();
/ Y0 x# v+ O% {' A2 \0 @' o9 e8 j    } 5 J! c% T' ?9 k- c1 b
} 9 ?: }, u5 q9 r8 E+ l
/*****************定时器0*********************/. u% B; Z3 r$ P9 C5 b* ^! K
void timer0(void) interrupt 1
$ Y" b; J) W! m/ z{
9 O' c; n) X: D2 X    static uchar count;   A2 [" l  a9 O
    TH0=(65536-50000)/256; % |  H+ C+ _5 M6 x" W  y" G
    TL0=(65536-50000)%256;
: R- G/ K$ a) d% b5 g. M8 U    count++;2 J, _0 P- m/ T/ `- j/ ^( y
        keyscan(); 3 w1 P9 T# I3 [
        while(flag)
" m( q$ r; Z% V8 {         {
5 Y: f3 t1 ?3 ]# J$ z                 if(a!=0)* C& o7 H9 o1 J! {# T2 w2 `
                  {
/ b2 a1 j! Z# _+ ]4 G. c& }                          if(a==1)8 S( d0 E6 k% D6 I# w  {& e: ^
                          DISP_EW(EW1);
- `! ?" I+ O7 t- |2 M: ^                          if(a==2)5 n8 g2 b7 ]1 x' |
                          DISP_SN(SN);, K. |( F6 m5 m' C) H) I2 f+ ~# z
                          if(a==3)$ ^" C+ O- E' u
                          {
- @- n2 \, c. z                DISP_EW(EW1);
6 ]6 B( T5 M. \$ M9 X* ]  K( g/ m& z                                DISP_SN(SN);2 K3 C) ~( l* F7 o
              }          6 D# T7 c+ Q/ ~# ^/ p5 J& z
                  }. ^) S* b) J  ~" y
           keyscan();" y+ U$ R" o+ \; I
         }
) j- D4 u7 l2 j: n+ x& z; [        if(FLAG_SN_G==1)% m8 j4 K% D/ l( v
        {6 f' |/ U* v* R6 X6 B* o
           if(count%10==0)" W  E' f% V9 r
           {/ A! _; P: E0 u3 a% M2 I3 E
              SN_G=~SN_G;6 {# r; V1 D8 i# h5 e3 V
                  F_DISP=~F_DISP;
6 F5 ?* ?0 u' z# C+ b2 k                  fm=~fm;. L; d5 s/ }6 e8 {0 Z
           }" ?5 i( J2 ^0 U8 {3 A! q
        }8 `% ?- V, d" j/ A0 z9 J
        if(FLAG_SN_Y==1): _' g$ S+ @' P. T( W3 x& l. R
        {4 R! O: L4 S  @4 r* b% ]; l6 B
           if(count%10==0)
; U4 S5 |7 D- a: N' O0 _( u8 O           {
% m+ V3 y' i# k' ]; f! l3 O             SN_Yellow=~SN_Yellow;6 |: E7 Y" z: }) v: [$ b
                  fm=~fm;- m5 F7 V5 l1 b* A
           }4 D  Q1 f/ B+ ]+ V4 w
        }
6 y/ ~! O# r% h9 c! a' d, [        if(FLAG_EW_G==1)
( R$ Z  U! z* r3 L        {
- j+ _, }9 ]0 v2 J8 P* c           if(count%10==0)
5 ]/ z2 o$ N1 ?% z* O0 _           {( T% A) E  t. h
              EW_G=~EW_G;
1 ?1 u5 B3 V1 @* E, `0 v0 A6 P( Q; E                  F_DISP=~F_DISP;
: ~$ ^: b) {" Y4 l" [                   fm=~fm;
6 `) r; I& v) Y( W4 T           }0 c. f* u5 j  [# D2 b# _1 q0 {
        }: w$ n- L- O+ t
        if(FLAG_EW_Y==1)+ ^- G; d" ]2 S8 G: u, }. W  J
        {0 [/ h$ Q3 C5 F) n# P
           if(count%10==0)2 A. X6 y7 w* Q3 H' K2 I
           {
5 J9 q$ N" z. A& ~             EW_Yellow=~EW_Yellow;
$ m+ C" m4 `. |1 y                  fm=~fm;1 j- z0 s% ^' h4 ]0 j
           }- i4 c7 v: ]3 q. i5 a& e5 f
        }
! j5 J6 c( D8 b4 F. h9 P1 c    if(count==20)
0 S) I: r  Z2 L0 I8 V2 g! T. l! ^    { 7 M! B; J4 [2 c+ n
        Time_EW--;
  P9 h% S6 U/ d" j( C) _* N) G2 l! X, L4 S9 F

# n$ t/ j0 K; B, E6 r- c! {- x# t…………限于本文篇幅 余下代码请从论坛下载附件…………4 b5 T4 J+ X8 {' F; s; i
全部资料下载:
  B* x. ]9 C$ T# m5 P7 i* C- q) i
游客,如果您要查看本帖隐藏内容请回复
' x) h6 k  Y: d3 _- b
* S" }! C& \% m7 p# d+ [

该用户从未签到

3#
发表于 2019-11-27 18:51 | 只看该作者
1111111111
  • TA的每日心情
    郁闷
    2019-12-3 15:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
    发表于 2019-12-3 12:39 | 只看该作者
    拿去学习,感谢楼主

    该用户从未签到

    6#
    发表于 2019-12-6 10:54 | 只看该作者

    该用户从未签到

    8#
    发表于 2020-12-25 11:01 | 只看该作者
    11111111111111
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-19 07:15 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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