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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
交通灯仿真 AD画的原理图与PCB 源代码, g) E5 U. @9 }# `/ H

% I4 }4 Z4 U( ?

7 T) j" V( I$ S这个51单片机做的交通灯可以实现时间按键可以加,可以减,实现南北通行,东西通行。 # R: W5 {! D" ?' x
: u/ N9 R. W6 L* |+ r4 x
交通灯仿真:
) b# ?% c6 k% M* y . {: v! M2 h! s" Z7 J
单片机交通灯的原理图(用ad画的)8 q8 T* B' n) u
: @4 g3 z; a+ I0 z# A# O* X6 L% b
8 e# C- A6 W* X3 A
pcb图:/ G% K+ s6 ]1 Y- L4 P
( D  ^2 X; n7 y5 o$ i9 s5 x. j
1 n: d" l" n3 U! \$ L

7 c' J! q% _4 r3 v( p单片机源程序:

8 c2 z, ~8 T9 s8 X+ p6 f  i#include <reg52.h> 9 D8 k4 Y4 _" J" U) V* \4 z
#define uchar   unsigned char 3 V6 O' T" f& k
#define uint    unsigned int3 V1 e# ]' J' K; p9 U0 g
/*****定义控制位**********************/
, g! ]2 J* }5 |& J  O4 d3 Ysbit    EW_LED2=P2^3;           //EW_LED2控制位
3 K( L+ u; b+ t  R9 \% Hsbit    EW_LED1=P2^2;           //EW_LED1控制位
& a6 W  z7 o/ Usbit    SN_LED2=P2^1;           //SN_LED2控制位 + H/ V4 ^* @$ w2 o4 z
sbit    SN_LED1=P2^0;           //SN_LED1控制位 $ A% v0 j: T" O; T$ ^* G# ]" N0 |
sbit    SN_G=P1^2;                            //SN绿灯
# P4 Q/ w% s' Y9 u% usbit    EW_G=P1^5;                                //EW绿灯0 B/ F: k3 y) c& v* Z" r. N
sbit    SN_Yellow=P1^1;         //SN黄灯
* i4 h4 K7 q" b+ A) o- lsbit    EW_Yellow=P1^4;         //EW黄灯 % v' K! N: q' E7 z$ H
sbit    EW_Red=P1^3;            //EW红灯
2 D+ w- Q( f# q% ssbit    SN_Red=P1^0;            //SN红灯 + c% h5 G' u; c
sbit    s=P2^4;                 //功能选择键
/ @5 v* q, k2 v6 t1 K/ Qsbit    key1=P2^5;              //按键加及东西强制通行- L# C8 n/ ?0 T0 J0 R1 @. Z
sbit    key2=P2^6;              //按键减及南北强制通行$ [1 j' T& |) {$ ?
sbit    fm=P3^7;                //蜂鸣器
4 w0 {- v$ s5 A; b( Ysbit    dula=P2^7;
9 b% |+ Q% I! N' K3 Z3 O2 O) e/ g& Lsbit    P3_2=P3^2;
3 G: |1 a" R  I+ Bbit     FLAG_SN_Y,FLAG_SN_G,f_sn;  //SN黄灯标志位,绿灯标志位,sn运行标志位3 j& o! a# x& b* |" N( t; v- B
bit     FLAG_EW_Y,FLAG_EW_G,f_ew;  //EW黄灯标志位,绿灯标志位,ew运行标志位
; V* n1 v& s8 e1 Bbit     F_DISP=0,flag=0,flag_key=0;
# F- Q4 b! |1 k/ W* j9 kchar    Time_EW;                //东西方向倒计时单元 . [1 k$ p$ I% ?6 `8 ^
char    Time_SN;                //南北方向倒计时单元 $ M/ o3 y& y; w) Z: R
uchar EW=24,SN=20,EW1=30,SN1=34; //程序初始化赋值正常模式 7 E! p: ^! s. T- j9 G
uchar a=0,i,c=0; # E* Q8 H; ^. z+ k9 [0 i
uchar code table[]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //1~~~~9段选码
  M/ n( Z5 I( g2 R* v: ~uchar code LIGHT[]= {0x0c,//SN通行. s& \( w. X/ n4 P+ @+ h7 m; @
        0x0a,//SN黄灯
- g. S4 _- k" I  r" h    0x21,//EW通行
# h! h6 R8 G2 I/ X2 W        0x11,//EW黄灯! x0 R( o( O1 C1 ^4 F
        0x09//全红
) ~$ J. Y0 i5 `! J' f% Y        }; //交通信号灯控制代码 3 A5 S, i! a1 J0 Y9 ?
/**************** 延时子程序*********************/ 5 D" a; @) \- k5 H2 H- h. ]
void delay1(uchar k)+ b% g; G9 R# M" _/ r; X
{- H* a& J2 P' E  v: K
   uchar i,j;
5 @/ L0 Q6 M3 c/ `; A   for(i=100;i>0;i--)# A; e: C; z" e# p! y
     for(j=k;j>0;j--);$ e/ h/ C" {6 Q8 Z! n% L! b  Q
}  / T) D9 ?3 T$ H) P7 y
void Delay(uchar  a) $ X/ e4 O7 ]: j2 h5 E
{
. e. a" [2 k5 h% f& H2 S% p    uchar   i;
+ Q2 c" a1 e1 j4 i- t6 S    i=a;
& U8 l0 `: S, b/ V0 }6 _! T- v    while(i--)
, m1 O+ ?7 o% J    { 4 f! k% h" s, {& D
        ;
4 c* k2 W- t9 Y: c8 Z    } 7 l. C$ Y! P: d+ f' |/ N* w  K# \( t
}
" T4 N& g0 i2 N$ a, W/***************EW方向SN方向主干道数码管显示驱动 ****************/
# V0 N, |( W' a# M, wvoid DISP_SN(char g)
/ ~# N0 K% g9 i{ " K) O4 y0 R+ x" {& H6 a
    char h,l; & j+ {# o9 f1 a* ]
    h=g/10;  //SN方向计时的十位数 / A" D6 w" Y% n
    l=g%10;  //SN方向计时的个位数
$ ~7 l* `& n, T1 T- l        dula=1;' [* c2 Y# l  v6 O
    P0=table[l];   //显示SN计时时间的低位1 C/ N4 _- g. e4 @
        dula=0;
3 D4 Y" F$ Q% D; S9 v% e4 Q    SN_LED2=0;
/ X  O, p: l9 Z6 ?5 o    Delay(2);6 l7 y* c& b$ r  D3 C, [6 K
    SN_LED2=1;
: W" h+ I" E' E3 B        P0=0;
8 N0 ~2 n% t0 Z% j( q        dula=1;
3 G2 W4 c" y' |5 N+ H& e* G    P0=table[h];   //显示SN计时时间的高位
! J& y  Q/ K) z% A2 r' b4 b0 Z        dula=0; 5 n* Z8 w2 z+ A" Q9 g
    SN_LED1=0; 8 Z3 V9 w& D6 ~. }
    Delay(2); 5 @) R, \% F3 p; E- x* N, Y; _  D
    SN_LED1=1;9 b# `1 C- y& B0 f
        P0=0;, C+ k5 N6 u/ V( w% U
} ! b) X, y7 E0 A! [# R; f7 q
void DISP_EW(char b)
3 ^0 n- e& y0 s! h4 v4 C2 j{
8 k9 h$ `- J( l& u; w- n2 E7 a" [  char h,l;
1 G8 s6 l* m; ^8 \2 z    h=b/10;  //EW方向计时的十位数 . R& s) t! L5 E5 o7 `
    l=b%10;  //EW方向计时的个位数
( O: n) L& N- N! P7 k) u- t" U        dula=1;
  E, i' ^) u; o" @8 [0 _& p) ]    P0=table[l];   //显示EW计时时间的低位
2 T1 x! _- G" X' K        dula=0;
9 d+ J& i& x4 [) E" l2 G7 A    EW_LED2=0; / J4 k1 L% G5 n3 \( k" s
    Delay(2);5 T" L( Y  l5 ^
        P0=0;1 K) e6 A1 ^+ P+ t( a4 b9 d" z
    EW_LED2=1;
8 x+ q7 Q5 S. ^. i) U        dula=1;
; Y; r8 x& G/ w, R: |    P0=table[h];   //显示EW计时时间的高位
; \" N, j5 m3 R% F3 R$ J# E0 R2 g; V        dula=0;. J% T. t3 k) N8 B5 _
    EW_LED1=0; 6 `/ M, a1 w1 W0 t
    Delay(2); - _. I' x& Q+ U+ V) P1 z
    EW_LED1=1; ; K! [# j& L+ U" _, c' o
        P0=0;! k6 L% g; K1 b" _
}3 |0 m4 S* v3 u( R' Q- \" @
/**************开机自检***********/
5 C  ?7 r" g, f) wvoid check(void)
! z6 q: h5 W/ `  q{
3 O# c, W; q1 I: r& b% D' ~" P- w  Time_EW=5;
( a6 I- }) W. j( K% s9 \  Time_SN=5;4 K) d7 ?$ Q4 ]$ @2 V
  f_sn=1;
; L  Y8 R; L4 G- S! z# b8 N  f_ew=1;
/ D. f) t& Z9 b  while(Time_SN>=0&&Time_EW>=0)
  x" `9 A$ T# j2 m6 d# Z  {
% j* `' _: [  r: ?" }* B( i    P1=LIGHT[4];
4 [5 o/ Q1 q+ b5 S  e; G$ u    DISP_SN(Time_SN); 3 a- O* }* U* G$ A' C
    DISP_EW(Time_EW);/ |9 w9 F. J( L1 I! v
  }- W9 P/ u8 f% P* u1 ~2 n
}
& ^6 C  @+ m. c9 d' N6 {) K/**************无显示**************/- Q8 k! e4 d( u, M7 M
void dispnon(void)) Q' [! Q0 k# N. `; O
{  v/ C* @# p. H) r; [& i2 v
        dula=1;/ R  D1 P# G9 V% A5 C
    P0=0;   //显示SN计时时间的低位3 w- T* ^$ m; ?, Y( }. y
        dula=0;
* n! s! Z" l# T) N/ S) @    SN_LED2=0;
$ ^# b* C) b) C7 P' J- R$ `    Delay(2);
) i/ O+ ]4 j" C$ O' J' d        P0=0;
7 t" a8 t3 E2 Q6 N4 W    SN_LED2=1; 1 D5 f9 d) ^9 |% K: w
        dula=1;* n) ~- v6 U! q" V; G+ }- ^
    P0=0;   //显示SN计时时间的高位% o. M  t' v' t" N& u
        dula=0; : T9 X0 n# Q- V
    SN_LED1=0;
: J" k" d2 U$ i$ O# G    Delay(2);
2 e, j( b* ^# J. R        P0=0;  {' u# J! V) x1 i! x8 K2 J
    SN_LED1=1;; L$ e8 e* @& f  N$ G

( k  t% `9 _2 z3 j; d: ~        dula=1;) c% }- R" ^+ t/ f7 E; t0 {
    P0=0;   //显示EW计时时间的低位
% i0 @. K, ~4 [1 {0 w, N        dula=0;
( d4 L2 L1 r# d0 Y    EW_LED2=0;
; B2 x) a* a) g! c    Delay(2);
$ |! \* I* ^8 a0 L3 C6 \        P0=0;
' }; j$ P- T6 a; n- B* Z: K, l1 c    EW_LED2=1; 7 w/ P0 q% Q+ i* Q: N
        dula=1;
  S! f: b! ?' T1 ?    P0=0;   //显示EW计时时间的高位
: J- t( P0 y* i' `  o  d        dula=0;9 w2 H: n+ y0 p; S$ D
    EW_LED1=0;
- h" F8 `8 W4 n1 M8 b! {    Delay(2);
2 a' w* g2 X) I- V    EW_LED1=1; ' Z) u- ]4 |, a
        P0=0;
) Y% B8 _4 a& \) i9 p- f}
" x& l2 L. ?: D/***************按键检测*************/7 L- f: \+ Z7 c3 ?
void keyscan(void)4 v  x1 \! L* g; J
{7 E* T3 t: q0 d6 g# V/ J, r: {  P
          if(s==0)
0 v6 x$ P+ c% W3 R: D% N! P' a          {
. v* S( X9 M. [/ |+ {& d7 T9 \0 N5 ]              delay1(5);
, o6 R& Q7 B& B1 m' N: n( P                         if(s==0)' R# b* L+ {8 M* M  I& v, B* ?
                         {/ i: I% h$ k. L3 ^! q, o" [0 [
                                 if(flag_key==0)
/ @7 F" a( k1 W" [  {2 z/ o                                 {         
' l* M# [1 @, S0 J. M% a                                                 a++;) h1 \( e' I8 i: {
                                                flag=1;* U$ u% m. W' W$ N4 O' k/ }
                                                TR0=0;
' W- L/ H* H( N: n' @9 d$ R                                                P1=LIGHT[4];
) J& c* J8 h. o: z9 h- c: N                                           if(a==4)- A5 Z0 i& @; L8 h5 a* Y& ~8 H  C7 y
                                           {
7 c4 N! Q3 L- U6 q                                                        a=0;
% W: o' v  }; W  @+ w                                                        flag=0;
7 M/ g/ m/ S9 m7 L3 ?                                                         if(f_sn==1&&f_ew==1)
( Q8 e5 \( ?6 P4 C7 F                                                         P1=LIGHT[4];; _& O4 u: z6 W& G! ]
                                                         if(f_sn==1&&f_ew==0)
2 C4 d$ @/ R2 D  t0 `$ s7 C4 {                                                         P1=LIGHT[0];5 @7 F  v- P1 D! _7 T/ j; n3 `* q
                                                         if(FLAG_SN_Y==1)
& K% |8 z5 [6 b# c4 e4 [( U) O                                                         P1=LIGHT[1];
$ E" i1 D) ]. W' ~$ F1 p/ _6 S                                                         if(f_ew==1&&f_sn==0)2 o+ l. k( w- ~1 E! U* A' M
                                                         P1=LIGHT[2];; x- q  ^4 V4 K0 p9 V
                                                         if(FLAG_EW_Y==1)
$ A  Y; L. y2 O3 I0 Q+ t                                                         P1=LIGHT[3];8 N6 x" W% P5 x
                                                        TR0=1;
9 D: U/ z. ~1 I$ F) J! d$ l, V3 _                                           }
3 L/ J! b2 }6 e2 q                              }
. `! M; |: ?2 @$ D* [  w. W9 S                                 else if(flag_key==1)0 ]) r) z4 E% I4 X2 |. h1 ]" y" }
                                    {" {6 [( t& U1 J8 s2 V
                                                flag_key=0;
. M9 g1 m4 T' g4 r                        flag=0;
  A! C9 N1 W# q& T                                                if(f_sn==1&&f_ew==1)
: ]/ t4 I' X- v. p& [                                                 P1=LIGHT[4];
- f# t, y) f" ?: U                                                 if(f_sn==1&&f_ew==0)
/ c' ~% f1 [3 _" x( Y- B4 b                                                 P1=LIGHT[0];; D) f) E; \4 {8 M9 j$ n
                                                 if(FLAG_SN_Y==1). w2 {0 `1 {: j8 ]. A
                                                 P1=LIGHT[1];
" a- [  O5 ^$ `6 ^9 S                                                 if(f_ew==1&&f_sn==0)8 o) d  W: f) S1 I4 j: ?
                                                 P1=LIGHT[2];- X! V2 Q% }+ B, d0 \
                                                 if(FLAG_EW_Y==1)% x7 S& {+ R# g; x" n
                                                 P1=LIGHT[3];
8 q1 S6 Q, o- c% h; d. A& ~                                                TR0=1;4 l) \1 ~3 p1 n  A* _7 f' n
                    }$ s! x  Y2 j3 K, r: L7 E
                           } $ M! H. s4 K4 n* E' c7 [
                         while(!s);. n- o7 B% a+ G6 s; m: R  \
               }                         4 G. ^. ?* {% W8 [9 y) i4 I
          if(a!=0)
6 V# X1 ]2 b4 \! f          {) y& p; {# O- I) y) t
             if(key1==0)# O& t3 g; S  ~# c8 b* v
                  {( M3 e% A2 y$ x. A( @- s, p
                    delay1(5);
8 O0 O9 V, M9 l9 o' h( M3 H! [; |7 ~                         if(key1==0)3 h5 t/ A. J; u$ d. Q( D0 [, Z& K) E
                         {1 ~  p* p) h, k  p
                                                if(a==1)
" H# F" L+ @9 a+ n4 W; `& l. h" B6 N$ ]                                           {: f" I; e; ?0 d1 _$ B; Y! u
                                                        SN++;! Y6 Y+ v! k0 k$ ?* k  J
                                                        EW++;1 S9 P) p5 v9 I& e9 W* U# a
                                                 if(SN==100)
9 g: E! d: M/ k7 P                                                         SN=0;
5 G! u- `0 l4 a5 i! Q. ]                                                 if(EW==100)
* Q3 j4 b# ~( |7 B. H                                                         EW=0;6 g: _3 U. n2 C/ A) m+ }
                                                        DISP_SN(SN);! `1 i( h0 r' U
                                                        DISP_EW(EW1);
8 K  ~6 S  e* O' T                                                }: ]0 J( ~$ u" o: ]" K/ P
                                                 if(a==2)
; Q- N$ ?' @9 f! L: t9 |                                                 {
( S3 D  j9 j  E& U6 I4 {) q                                                                 EW1++;
/ ?/ T% _0 W1 E/ h! r) F* r                                                                 SN1++;& i; i, A+ n& k# F. l/ r+ Y# [
                                                         if(EW1==100)8 E. p3 Z% g- |/ I) H4 E
                                                                 EW1=0;
% a: [2 o4 k% O+ l- u                                                         if(SN==100)$ `  G$ w- Q: f
                                                                 SN1=0;6 ~8 H' d& K; F3 q0 W1 F! U$ g7 }- v
                                                         DISP_EW(EW1);
8 R  q+ {6 Y' f/ n: P                                                         DISP_SN(SN);- O' u* H. F9 v$ U* K: \) M2 Q; p$ I2 I
                                                 }0 f8 v3 g* |4 A* j( [
                                                         while(!key1)
/ [0 s9 N$ W. d% f4 @+ m8 S                                                         {4 d% Y9 n2 U/ J0 P
                                                                if(a==1)  n" l/ K, l$ @( r8 V% f* h( r
                                                                {
2 h# y9 B6 D: j% Z                                                                        DISP_SN(SN);
& t  c  x4 k" y" f1 I                                                                        DISP_EW(EW1);8 T! Y+ B# {" r* l7 r
                                                                }
/ }/ Q6 y/ h8 b) y# U5 {, O                                                                 if(a==2)5 e3 R, L; Z$ n3 z& T: P
                                                                 {5 [. l! V. b4 |
                                                                        DISP_EW(EW1);9 @1 e& ~; k1 H9 J' Q! Y
                                                                 DISP_SN(SN);- v) t" p$ M2 i3 d
                                                                 }
9 }& T, J, o8 r) Z7 [5 R/ j; U                                                         }
/ o: k9 P% u  b6 f' j$ i                        }
6 n- V. s5 Z' I$ Z9 j                        }                        
* w1 ]4 t2 r8 u0 c8 |2 i2 @                if(key2==0)4 u7 f0 o, O- J7 ^/ K- b
                  {
% I5 l  R; z9 P0 i                                 delay1(5);
8 X$ z# j0 z0 M; u2 f3 s, q  [$ k                                 if(key2==0): X( y  P3 P9 i- i
                                 {$ ?) D: w2 G% H  h8 X; U
                                                if(a==1)3 N' m6 j- F! b. s) t; B
                                                 {
% M: |7 \% J) Z1 B- R4 |4 P  E                                                        SN--;8 U0 n8 ^, m' H7 f, n5 z% Y/ s# c
                                                        EW--;3 N+ |0 |- m* ]0 q) ~) C  t/ E
                                                         if(SN==-1)% x7 j- g. S% j2 P6 B0 H; F
                                                                 SN=99;
: @# [8 x6 w) X) S                                                         if(EW==-1)
4 @- K2 M, t7 O1 p, f                                                                 EW=99;( V) v, L& j1 Y
                                                                DISP_SN(SN);
: I  F5 Z; X/ y1 L0 n$ M+ l                                                                DISP_EW(EW1);
4 F4 I5 _: i$ ^                                                 }
) q" U. F+ B9 K! s                                                         if(a==2): t- s3 J% A) E4 @1 M' [& B& S
                                                         {; m! e- m* B7 \! |8 t
                                                                 EW1--;, H, u1 E$ E) @9 v" ~# r) q; z
                                                                 SN1--;
  Q/ }* q6 N5 R  L% n                                                         if(EW1==-1)
8 U; l' n; `6 E1 {4 M+ q+ ~) `# D                                                                 EW1=99;. R2 D& |" c1 Z0 E1 W* R( }
                                                         if(SN1==-1)
2 e; U% v" p' t9 b/ _6 G; n- D                                                                 SN1=99;
. u% k& U  ^; c% n" h                                                         DISP_EW(EW1);
# v5 k1 A2 G0 [: H& P, r# R% M% u                                                         DISP_SN(SN);
* [5 }( F7 c, K' B0 a                                                         }% u, R+ k( {1 \, e( z
                                                                         while(!key2)
1 z7 [: d. j; i$ p! w: @; c                                                                         {4 ^, j* C. g/ N$ u
                                                                                if(a==1): Y/ W% Q6 L) o( ?0 V" o
                                                                                {, _! f3 ]$ n3 ]
                                                                                        DISP_SN(SN);
6 Q' x  U* z0 j1 O                                                                                        DISP_EW(EW1);
: c7 T$ G' G7 B! b                                                                                }
$ C1 H3 x1 U/ W. a3 B" g  X                                                                         if(a==2)
* x, b6 Q8 S7 b  ^# q/ D) i6 C2 h                                                                         {0 {& Y  u9 k) y' Z
                                                                                        DISP_EW(EW1);3 r" a# O* |- x; l) q, H
                                                                                 DISP_SN(SN);+ {, Y% @8 l0 O8 b7 n6 y8 L5 \" r
                                                                                 }
. f/ [) s$ K0 ^, f* ^& w; H& X1 h                                                                         }2 W! D2 ^5 A9 ~* u: s5 E
                           }7 D/ W/ c& u/ e* V* _9 \
                                }                        
5 w( m; c* G/ Q  s% _          }5 ^/ f3 b' t# ~: R' s- V! x, g
         if(a==0)
- {' b0 X+ t; @" I6 X         {" N5 w! H- L' j2 R1 |! H1 Y
             if(key1==0)
5 Y; h+ ?2 z0 R( S" G' b2 u" w                 {  X' {( k; _& D# A3 ~
                     delay1(5);
9 E) _& O3 C" C8 y+ i: L                         if(key1==0)6 b8 Z' J. h7 n( \/ L) _2 V
                     {
% R+ }/ X& m6 f8 Y; j; A                        TR0=0;# N. h2 J7 e0 F5 H3 ~
                                flag=1;1 D" ?& o0 ^0 s* {
                                P0=0;
6 g' f# E: n: i$ F                            fm=1;2 F3 S& O, K' Z
                                flag_key=1;# M/ ^' p( L& G9 r6 D
                     }
! q) _3 v( G, L4 ^                         while(!key1);
/ }+ O9 l- l. F# d              dispnon();
7 D+ ]) {6 K0 [! n- s8 j             P1=LIGHT[0];
2 }" p6 S/ r0 s/ x) I* f                 }
& t# ^6 p9 c9 g: @' [' F) Y                 if(key2==0)5 r, f) g' i) x  q
                 {5 X  [; \- s- {
                     delay1(5);6 ^; Q/ J( W2 s: R
                         if(key2==0)
4 e$ [' N$ N; T) o: L0 ]" n8 n( ~                     {
! {0 s& _6 }( E                        TR0=0;
8 k1 M. B9 G5 M, G9 p. V                                   flag=1;
# _) R, W* U3 l+ p  l5 R                                   P0=0;3 p8 F. B2 |7 m& `  d, L
                                         fm=1;
# w1 b  I6 d' c. S( S& M6 ~& G                                         c++;; }' i5 W- u: q  h- S
                                 flag_key=1;
# J% j/ V: y) k
: g+ i; v2 C/ |3 e' n$ O5 J: L                     }/ D4 K5 R) t" _3 p5 |
                         while(!key2);
+ k6 T$ S& B4 i; g9 Z, L                         dispnon();         
! L* p5 |+ F* P- l% x2 D                         P1=LIGHT[2];
6 ?: c: U0 T2 v3 e+ w                 }
, h" }9 ]/ G  X4 P  Y+ x; X" m         } + S. A% d2 c9 c6 X: r
}# d6 k" Y! k1 E* d; k, \, ?6 h
void led_disp(void)( ?% C& u9 o# \1 k: G# S
{4 ]- o( g* t5 A
  /*******SN通行EW红灯*** ***************/ ' A# L* K; z* U
        FLAG_EW_Y=0; + t6 ~/ ?2 k% c+ V5 c
        Time_EW=EW; * l- p. Y5 ^/ G9 D3 X
        Time_SN=SN; . G: w( O) q, l, J/ f) {
                f_ew=0;  }0 N; V6 c1 {; Q+ z  u& a% K
                f_sn=1; & O# `: b  a3 H. D, y/ m- [& b
                P1=LIGHT[0];( s6 n: ~. F& E% P/ j$ a
        while(Time_SN>=0) - ~9 Z) b6 c# |  R% e* r: ~; ^# `
        {   
3 R1 N+ Q0 t9 F: I5 R5 f1 `                    if(Time_SN==3)8 L' v! U: }+ \% x# `
                        {
; C0 Y5 W" ]8 m6 N                           FLAG_SN_G=1;+ B/ p) P/ E4 C9 Q
                        } 6 _/ |+ j- n3 @+ g1 a
                    if(F_DISP==0)   
) w" I9 m. \; @, T3 a! ]             {
+ o1 h6 G, ]6 z& M: V( A9 V                          DISP_SN(Time_SN);
2 b! _9 q8 F! x                          }
; M9 t* n! G9 D9 Y                  DISP_EW(Time_EW);1 F/ P; a( m+ Z4 N0 a
        } 9 |2 n: M- \& v4 [  h& h2 @
                /**SN黄灯闪烁***/- a+ M' Z  s3 u, ~& z( R/ m- K
                 FLAG_SN_G=0;
, `" g! p+ p4 ^; J5 s) k$ p( P/ m                 Time_SN=3;9 f, p4 n3 C2 L7 Z' J5 B7 w
                 FLAG_SN_Y=1;
( p% L& C& A0 `4 O- S5 S                 P1=LIGHT[1];
' q2 f2 s+ M. R; h6 g& F5 P               while(Time_SN>=0) / m1 M/ G6 G/ D8 [
        {   
  \* b8 a. d7 g/ D. C6 t/ R5 V+ ^1 W                  DISP_SN(Time_SN);
& \5 x2 |" B' a* I# d& ]3 V/ Q9 i2 R0 N                  DISP_EW(Time_EW);2 y5 X4 \. i0 e/ d2 z; C' O" e
        }
1 \9 ~# ~4 j1 G                FLAG_SN_Y=0;- B' |6 o% @" [* _8 b4 S+ D: ~- ~
                f_sn=0;) _/ M8 }  P$ n; }: z" r/ z9 K
/*******EW通行SN红灯******************/
% e& p3 [( M  Y2 C% n2 ^        Time_EW=EW1; 9 R% [5 R% |4 x4 B" m" y
        Time_SN=SN1;
. w. p" J; T  S* S0 Z                f_ew=1;
  }) S7 x5 I8 o4 t                P1=LIGHT[2];
$ k$ b/ Q7 Q) J* m. j                /***EW绿灯亮***/
6 f& H0 G% G' _% M; v1 t        while(Time_EW>=0) / {# B: ^  n. ~+ Z3 ]6 T/ O1 G: ~
        {  
+ {# n% A* H% ?3 a, Y  u( L8 j           if(Time_EW==3)# M) h& O1 L7 H
                        {
/ [" K! t6 w. s' V& S2 y3 L3 B  f                           FLAG_EW_G=1;) D# @5 @, `: P5 n  @0 x- i+ Y( U4 a
                        } % {9 D+ [) o4 U+ P" {4 S  ]# d# {
                    if(F_DISP==0)   
! C* V, A% `  s             {
* {/ E/ J) C2 J                          DISP_EW(Time_EW);
% O$ |6 M& u9 q( E1 E                         }
6 s3 N+ P8 \2 [$ _                     DISP_SN(Time_SN);' H# s4 t* [2 b- p
        }   q4 c+ k" s* ?
        P1=0X00;6 r6 g6 K* Y) Q3 d0 |# E9 U' G
                FLAG_EW_G=0;
" v  D3 I; Q/ C! Y2 Y                /***切换为黄灯***/$ e8 I& H# j/ u" N( N& {
                 Time_EW=3;6 s4 n8 Z% J. |$ Q, r3 _( q# E
                 FLAG_EW_Y=1; + V3 e; F+ z' R; @8 e- B* T
                 P1=LIGHT[3];6 e+ _7 a5 Y! r5 E
       while(Time_EW>=0) / l5 g/ i' H  P  I, I. K$ J3 d+ H
        {   
& v' A# ?5 U: Y" \" h2 y                  DISP_SN(Time_SN);
2 f: u! X' e7 i- ~5 T* r6 q% r! [                  DISP_EW(Time_EW);# P) O& @1 u7 @: S& l7 |
        }
; ]# M# i+ a4 t                FLAG_SN_Y=0;6 g1 y; _8 L5 a) r& D/ d/ l0 y
                P1=0x00;
$ H9 U3 c8 c$ a" B. R}8 B  T0 A8 }8 \3 R! G
void init(void)
* u( G" s$ c' q/ M5 J8 o# G5 R  o{8 M5 i' @( [# I2 k' M
    IT0=0;" q0 h$ q: [8 E. |
    TMOD=0x01;//定时器工作于方式1
! ?: T: J! F) U9 _    TH0=(65536-50000)/256;//定时器赋初值 % t$ F. d6 ]( I' T, }
    TL0=(65536-50000)%256;
3 B$ t. _, U; p! ~( `, M. k    EA=1;//CPU开中断总允许 . z; i9 C( Y% ]" O+ a% ^5 S2 c
    ET0=1;//开定时中断
' w$ `/ \2 z8 O: o6 o, H          EX0=1;& g4 Q9 I' E  S: j. j
    TR0=1;//启动定时器0  # v3 j7 ^" s" S6 r
          fm=1;
% [% y; Z; A& N+ A7 ~$ w}
- l6 F- E8 V4 }' R% j0 s/********************************************************************/
" T) o$ P; t# `+ s4 _4 I) S7 H" L# M9 W3 i# f1 A
void main(void)
9 W. l0 i4 g' a3 x- p4 h{ - p2 M4 e; p! N0 B0 @1 `
    init();% W/ D& }  T! o6 |. y
        check();
$ L7 J0 I% P' ^0 S& P4 {( T    while(1) % N0 \8 B3 I% Q7 f
    {   @' l0 B) s/ \9 e  N
           led_disp();; q2 k' E2 ?' h0 n6 |
    } , f0 r: C# H/ B5 ^  k$ g1 B! l
}
2 x+ G1 n1 l6 F0 V& a/*****************定时器0*********************/! S' e& B2 g% v/ R$ V9 N# X6 b
void timer0(void) interrupt 1 - w0 }) G" b, n0 u/ u
{ ) X6 v1 K' R2 K1 E) u6 T2 A1 e
    static uchar count;
4 o/ |/ U- ?% l* D    TH0=(65536-50000)/256; 1 e& X. ^4 I9 T7 I
    TL0=(65536-50000)%256; ' F  w/ ]) H/ B2 K7 T9 ]
    count++;
) m6 Q$ b3 G' s/ x4 z4 b        keyscan(); 1 `- v% {3 a6 [0 Q8 q# x, U' l5 J0 d
        while(flag)
* L, U! o* t6 m- o         {
9 N, w, g3 y6 G                 if(a!=0)4 \6 ?+ ^( k+ I  O$ u
                  {' P' R; P5 Q- D' d5 s$ p% c
                          if(a==1)* p  T, z( z" i6 @" l" u% e  }
                          DISP_EW(EW1);
0 W0 k6 o' t$ u0 ^                          if(a==2)
" V2 x) C5 |. }" o! a) c                          DISP_SN(SN);
4 s/ K' c1 D4 n  D0 X0 P* |                          if(a==3)
: u/ z# K; C" h  Z                          {6 t; A$ I. `+ l7 a
                DISP_EW(EW1);
5 n0 f- Y9 g( Y7 S" s                                DISP_SN(SN);! C6 _2 `/ P7 t, w# K( S' L
              }         
9 P% j3 s  o7 Z% x5 l- u3 s                  }
4 n3 X) t  D6 l& V. S/ m4 R5 \  G           keyscan();1 _/ A% N. Z! d9 {2 g' ^& ~
         }
$ P' Q  Z) H- [        if(FLAG_SN_G==1)- c. e& S3 o0 A; v  O
        {# B6 N% b* y$ \) H: j; L' ?
           if(count%10==0)
$ i5 Z/ b9 X6 l! Z9 Y8 \# ^           {
8 H, J7 P" D3 ?              SN_G=~SN_G;0 B3 v* A0 ?6 X" }! _1 R4 p( I( A
                  F_DISP=~F_DISP;6 b! H+ F  D; ?$ I0 f2 v4 m
                  fm=~fm;; ~( ?% V: F0 @1 @, u- r. u$ {9 V
           }
0 x. v$ Z, M. ]5 o& F/ I. F  Z, _. w        }
+ f4 T  Q/ ^0 V9 Y1 n% o        if(FLAG_SN_Y==1)
6 z3 f2 K! s) I8 o        {, o/ t) o5 h1 K. f: H1 m
           if(count%10==0)
8 L: B1 G8 g! D& R' V' z           {
" {# O: k8 C0 x8 z! E             SN_Yellow=~SN_Yellow;
2 O* Q7 A; k5 S) S                  fm=~fm;
& H, ^8 [$ [- y$ s5 Y           }
% y& M9 }5 |. K2 H* Y        }1 _' ^' y' A; T4 V( W$ W
        if(FLAG_EW_G==1)) q' g4 G. s( ]9 E* t" L
        {. I  p4 {- Z7 C1 j% f. m- w5 j
           if(count%10==0)
# t6 J6 w) k3 N7 n6 r- [           {8 q% v9 t, n. i' [/ K: T2 F; A
              EW_G=~EW_G;& w$ @& w5 R! ~- A  s% ^
                  F_DISP=~F_DISP;! {! L; I) y3 l0 x. b0 I+ V
                   fm=~fm;; P5 H* S9 d0 B
           }' S+ i1 f$ G0 D" o+ c+ _. [: E! u1 @
        }2 `8 t9 U* x! H1 ^
        if(FLAG_EW_Y==1)
  b( p% }0 p# H9 w  j! k- R" T        {
3 {7 s- T' A  j' n- Q           if(count%10==0)5 E: |- N" N: @+ y
           {8 {% @. U. j4 ^1 o3 e! f4 D( m
             EW_Yellow=~EW_Yellow;
- t" H: R( ^" j+ L                  fm=~fm;
% J; M: d2 C  _! |) z           }
" Z9 c/ E( T& c% H/ G* M# c1 ~        }
3 l$ R! ~3 X, Z6 Q# \8 D    if(count==20)
6 X5 v6 ?7 W( k; L! `- q( y7 [    { % b( t" \$ ?0 ^2 _
        Time_EW--;
8 q0 w% I* j: O$ S
) W: [) r: u. q* h5 ^
' T2 u# z' I) }. v" c+ `…………限于本文篇幅 余下代码请从论坛下载附件…………
6 O5 K) W9 T  {+ [" s4 s) M全部资料下载:
- [$ v- c3 [* i9 K. b" t1 o
游客,如果您要查看本帖隐藏内容请回复

0 T. C; V/ y2 w; x$ o

1 e7 ]1 y, |( H( F  |% z8 |

该用户从未签到

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-6-13 02:50 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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