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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
交通灯仿真 AD画的原理图与PCB 源代码! c! g3 P; ]' X' w0 Q3 t

/ [9 f6 Q% h  Z% }
! Z3 S& k" j$ `2 I( c6 P7 m; M0 X
这个51单片机做的交通灯可以实现时间按键可以加,可以减,实现南北通行,东西通行。
% M% Q4 Z8 k! Q/ e9 v% X6 g; X" k1 |$ A8 ?6 a# R
交通灯仿真:
4 j3 b; `! b4 Y) X+ `. i/ L; p $ F0 s: q. ?8 U3 a4 i
单片机交通灯的原理图(用ad画的)! E& F( F$ V( u" `8 `8 n
/ W3 U. h! w- p

, k, H8 e& A8 D! L8 upcb图:' a2 V* ?. ?" {2 y2 j* D. k: v
) Z& _$ r3 r- }; N3 P- T
$ y; w' X, e6 p% @6 x

! ~) D1 [8 N: {# J1 \# z, x单片机源程序:

$ C4 i! V3 S! y2 J# V; w) I#include <reg52.h> : `, B8 {4 }' R: H, @
#define uchar   unsigned char
( F9 }% F: a( ?% F  E9 R#define uint    unsigned int
, a# B' K# U7 F' ^/*****定义控制位**********************/ * V8 K2 o( Q! J% V; I# f% T* y; N
sbit    EW_LED2=P2^3;           //EW_LED2控制位
' f5 e% ~, n5 y9 K2 n& q1 p6 O. e. \sbit    EW_LED1=P2^2;           //EW_LED1控制位 ; U# L1 Y# b$ s! s! n
sbit    SN_LED2=P2^1;           //SN_LED2控制位
5 _$ O% z* M8 ]3 msbit    SN_LED1=P2^0;           //SN_LED1控制位
1 Z* ?' P/ {5 T3 F  Z- y) Msbit    SN_G=P1^2;                            //SN绿灯
# ?6 t2 K( I- g1 gsbit    EW_G=P1^5;                                //EW绿灯
5 D' x. Q2 Z4 B- u1 L2 fsbit    SN_Yellow=P1^1;         //SN黄灯 ( G" |+ V4 l7 |; G2 m
sbit    EW_Yellow=P1^4;         //EW黄灯 3 q4 L! d6 T) t! L: W$ ]
sbit    EW_Red=P1^3;            //EW红灯
, b- S7 _" F3 [* s: Z  J" Ssbit    SN_Red=P1^0;            //SN红灯
) U; _9 O; P( f( Ysbit    s=P2^4;                 //功能选择键
+ ^- E* A8 z; u* c+ q/ @  k: f8 esbit    key1=P2^5;              //按键加及东西强制通行- Y) _* P& R  ~! X. l5 n
sbit    key2=P2^6;              //按键减及南北强制通行) i1 Y/ `4 D0 t/ q; k5 m4 b+ M! s+ B
sbit    fm=P3^7;                //蜂鸣器
: d( O/ S6 O/ P5 a8 esbit    dula=P2^7;
+ u! Q$ O' q! _* O% x' t$ d# ?sbit    P3_2=P3^2;
5 ~4 S: Y8 W( C" ~0 ~bit     FLAG_SN_Y,FLAG_SN_G,f_sn;  //SN黄灯标志位,绿灯标志位,sn运行标志位
7 T0 D6 y/ P/ t+ Y2 S; W, \4 r1 K7 ~bit     FLAG_EW_Y,FLAG_EW_G,f_ew;  //EW黄灯标志位,绿灯标志位,ew运行标志位
+ P& c2 ~( I6 X! [bit     F_DISP=0,flag=0,flag_key=0; 8 p2 Q$ |( I" X7 J
char    Time_EW;                //东西方向倒计时单元 * Z; Y' _" v: h$ Y; F
char    Time_SN;                //南北方向倒计时单元 7 E( z: \. }) ^6 j
uchar EW=24,SN=20,EW1=30,SN1=34; //程序初始化赋值正常模式
8 Z- H7 g6 j. [" V$ |: G. L! ~uchar a=0,i,c=0;   `9 S% O3 H% s4 n7 L$ z7 I1 A
uchar code table[]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //1~~~~9段选码   a8 m3 _+ C3 E& Y7 K
uchar code LIGHT[]= {0x0c,//SN通行- f8 C6 Q8 n* |1 W; q% a
        0x0a,//SN黄灯
* M. n% m) n% y    0x21,//EW通行
: {4 k6 X& i( K9 ]1 f        0x11,//EW黄灯; ^& R+ t( `& t, o0 P: v
        0x09//全红- b! O. |  b7 O% j2 I' v4 Y
        }; //交通信号灯控制代码 0 n% J, Z- a% T
/**************** 延时子程序*********************/
- k% M( H8 g$ {  l5 s5 V- Qvoid delay1(uchar k)1 Y# A& [$ z/ u) c* ?, L; A( u
{2 `( T; N3 t( Z1 n2 g! a2 o4 z
   uchar i,j;4 t# ?  B* O) f
   for(i=100;i>0;i--)# V) H/ P$ l+ z0 O+ t4 F
     for(j=k;j>0;j--);
$ _# q* i% a9 m* p}  
" o& m( d4 H# H6 k. J5 D& ?void Delay(uchar  a)
' T- a. O2 W8 i* a# B: a{ + K4 G% G- `; G; w9 `( n; j0 R
    uchar   i; 9 M2 u" R' h8 S$ t1 b6 h* W9 B0 G
    i=a; 8 _" e8 k+ p' _6 G- z, `
    while(i--) 9 k1 d6 j3 b. D' o. u
    { . a7 J: y1 a; e
        ;
! i. H9 j* m- R: D) i, y    }
& ~4 f& q) ^7 |}! E$ W. Y+ w6 m$ f) E& z& V! b( ?
/***************EW方向SN方向主干道数码管显示驱动 ****************/
5 s0 k3 m, a( Yvoid DISP_SN(char g) : Y/ O8 H% M/ n1 ~4 W
{   @/ i7 y2 Z( f) V4 T
    char h,l;
! s# b3 [& Q$ c& l    h=g/10;  //SN方向计时的十位数
1 P+ A: z& z- e' t/ v& V; s- u    l=g%10;  //SN方向计时的个位数
- \+ W4 T. K+ s1 g: M: m        dula=1;3 L0 H( [$ U6 Z% Q" f
    P0=table[l];   //显示SN计时时间的低位9 Q2 I3 t: P8 J
        dula=0;   H4 M; J: U0 j
    SN_LED2=0; # h. e( {$ k% Z/ y- p$ s9 G
    Delay(2);. w/ |) u  f' G" k% t
    SN_LED2=1;
  h+ {4 j3 S7 ?        P0=0;
5 E: ^. w/ C) ]( _        dula=1;0 w8 o+ K6 ~5 ~  J. P
    P0=table[h];   //显示SN计时时间的高位
" V' s$ u  d2 m4 Q4 o        dula=0; ) i' _5 G1 |4 i6 q* E
    SN_LED1=0; # X, X: ?1 r5 y3 S+ I& q. v  a' U# q
    Delay(2);
, |# v+ \9 k- j    SN_LED1=1;7 l3 z: d$ V3 ?. E; a+ c
        P0=0;8 t9 n4 I, ^5 O. \
} / S6 I7 U2 @, t0 d" E2 m- v' a+ O: P
void DISP_EW(char b)$ U1 W: Q$ a' i* _/ F/ e
{3 M. j9 o: ]0 E" z' h3 N# _
  char h,l;
! x( m" m9 n! Z  B: A    h=b/10;  //EW方向计时的十位数 8 G! o: }' q& j6 Q/ H8 C
    l=b%10;  //EW方向计时的个位数
* M' @9 {" o9 O( a        dula=1;" K- g1 Q' ]+ z3 s, D8 M5 g
    P0=table[l];   //显示EW计时时间的低位4 i5 j% m1 H% {
        dula=0;
! _! _2 ?# g) I/ M0 g    EW_LED2=0; " G$ g. ~8 I! c' c( Z1 a
    Delay(2);
# W- F3 \6 n; a: e        P0=0;1 t8 `8 }5 ~0 e) u/ A
    EW_LED2=1; 0 e: z$ A3 F. Q2 T9 A2 q4 S
        dula=1;! J+ r' s5 E  Q/ \6 G7 ^! `
    P0=table[h];   //显示EW计时时间的高位
, C" K. C. A; u0 P2 B        dula=0;
& f3 _9 k; i, }. _# p    EW_LED1=0;
9 Q8 H& }1 b$ F7 ?" f% u! T  o    Delay(2);
6 D3 s4 o$ X' B    EW_LED1=1;
% l8 m2 ^- F2 Z- m& S8 T* F3 [        P0=0;3 S- f: X  h: k5 p8 @
}
; I9 Z$ C& b) K8 J8 S9 L/**************开机自检***********/
$ }% e* C4 `  f5 r  k  i/ uvoid check(void)$ \! k$ n, I  P( Z
{
6 k* `1 m: i9 t1 b/ K" |' c  Time_EW=5;
( v  O; o1 q1 Z* O- y  Time_SN=5;
9 p- W( J$ W) W: r0 W7 k$ F# Z  f_sn=1;
4 A, K, L, F$ q1 v  f_ew=1;
! K: b$ K& j' \! o4 ^  while(Time_SN>=0&&Time_EW>=0)+ L* t& Z( q4 k  J' ~
  {; }+ I% k8 U5 d  }& }
    P1=LIGHT[4];
& t3 r1 j& n- X0 S& {    DISP_SN(Time_SN);
$ ?+ ~3 O6 g3 s" S2 w$ t& V    DISP_EW(Time_EW);
4 ~$ b  g3 R$ ]/ }! u5 T  }
' m: O6 y  J' K- B# _! Q9 u2 T}/ q2 q6 @) J. O+ I9 c
/**************无显示**************/3 ?" X9 Z, I- r* B9 [: c1 ~
void dispnon(void)
8 [6 x- ~) N8 j4 {. V3 d{  t) u0 s6 S5 s! j; B0 F
        dula=1;
# Z9 f: U; F  B, p- d: C2 ?    P0=0;   //显示SN计时时间的低位: P& R4 ~, D" u
        dula=0;
0 o" g% z( k/ y5 u  y+ b; C    SN_LED2=0;
7 T  \! _9 B+ q# D" k, L    Delay(2);
. y7 T9 [* G  a6 O        P0=0; ; E( f  |" R$ }5 F! s
    SN_LED2=1; 1 \5 P0 w/ b! C( q- u
        dula=1;) X( e: z# v# }" O1 |7 r
    P0=0;   //显示SN计时时间的高位9 L" H- Q1 o/ t1 ^0 @
        dula=0; , t" x( p# v- |! L# [. D
    SN_LED1=0;
- Q; B9 a. c% A# Y6 R- o( r6 R6 r    Delay(2);
3 m1 J8 ]8 w' L        P0=0;
% ^; s3 R* C) L    SN_LED1=1;7 ^& C* `$ `: a7 M+ s; Y0 f0 ^. s
8 N7 s  n3 B" t# K7 {, k& K
        dula=1;8 K+ _1 \. n6 [$ G( F9 ?
    P0=0;   //显示EW计时时间的低位2 ^1 @5 b, l; h7 y, x6 V
        dula=0;
7 i% z$ ^" o+ P    EW_LED2=0; 1 K# P! k: A) ?) ?& B- Y( Q
    Delay(2);* ^- I6 G3 B  w' P" C7 O/ l: z) H
        P0=0;
3 ?' c1 Z3 Z, s( K& z1 {* Z* J    EW_LED2=1; & n2 F% S) N7 v& H% C- I! I
        dula=1;
6 u5 Z& x; t- ^- l    P0=0;   //显示EW计时时间的高位 8 q8 K2 X! ]. B7 Y4 S
        dula=0;
" S" I9 _# a; j6 K    EW_LED1=0;
' X4 d6 s: S1 d, `4 g' Q9 a6 }    Delay(2);
  H2 C* u3 |: K4 q/ ]3 O5 j    EW_LED1=1;
- R5 z4 k$ B9 s+ Z. [        P0=0;) _% Y: o4 _; l( a6 T7 K
}
4 m% b$ q1 U4 |! p8 f/***************按键检测*************/
0 d) w9 d# h% {void keyscan(void)- }  F+ y( t' v$ s
{
1 A: f* u3 q( ~2 u4 h          if(s==0)
4 A  E3 N& Z7 Y          {0 o  W" v* @; X3 W. p( Q' ^  n
              delay1(5);5 b" S2 G. {4 Y7 F$ [
                         if(s==0): d% a; d  L; }! \: Q6 U# J
                         {7 ^1 n" l9 E' d# u; K0 g# O
                                 if(flag_key==0)# o3 U0 o* q* b  d' ^! ?; c
                                 {         ) p! d- m1 R5 ]" p1 L7 R
                                                 a++;; v: T& @2 ~6 C, z- y0 _
                                                flag=1;
* F) f( D: `- _. x" v! H  Q& }( s                                                TR0=0;+ E$ N4 i. \2 @; w
                                                P1=LIGHT[4];3 v" ]( {- O$ E
                                           if(a==4); x4 h; _* b5 J$ L4 ?
                                           {
5 u4 M7 `$ H2 d/ x) t                                                        a=0;
4 Z, u# b6 `& I- W0 J                                                        flag=0;+ w7 O% Z, @3 g+ k/ U. A
                                                         if(f_sn==1&&f_ew==1)
" Q/ m0 c. l: v  H" e" U9 R8 V                                                         P1=LIGHT[4];. K% s, k' L1 I: F
                                                         if(f_sn==1&&f_ew==0)- c0 }: A- {' s6 P
                                                         P1=LIGHT[0];$ O+ s, {7 r. u/ k
                                                         if(FLAG_SN_Y==1)
$ i% w% {- ?0 g7 \                                                         P1=LIGHT[1];; \1 x- I6 K7 f( ?' g6 [
                                                         if(f_ew==1&&f_sn==0)5 Q& ^' z; b' U' S3 R2 T+ l' D) y+ M0 O
                                                         P1=LIGHT[2];
' b# ]5 r3 K0 P, r! Q                                                         if(FLAG_EW_Y==1)
& d3 k* g' {" s1 a$ L- e6 B& F                                                         P1=LIGHT[3];
3 j) `' z5 x( k* {                                                        TR0=1;8 W! w- n/ k5 G# G& \/ a  n' g1 N
                                           }
& n3 \3 D  v) N! y3 G& S3 S+ p  E                              }4 ]+ z0 u5 x, h" G3 q) U
                                 else if(flag_key==1). d1 X6 `: v8 ~5 ?
                                    {
% b; t, W; o! n+ j8 x1 T' s; I  h                                                flag_key=0;
! O* \( L- a5 U! U                        flag=0;: y: c# U* b; X2 c
                                                if(f_sn==1&&f_ew==1); A* S4 O1 L4 R0 {3 h2 z
                                                 P1=LIGHT[4];
' T1 O/ v' L6 q$ X2 O                                                 if(f_sn==1&&f_ew==0)
1 |% @$ F) G; t5 h! _* X                                                 P1=LIGHT[0];
4 W1 m# y+ m0 S, x" }0 e                                                 if(FLAG_SN_Y==1)1 y; ~2 Y/ L; ^# R4 g
                                                 P1=LIGHT[1];
5 R% s2 M& ]0 f4 ?5 b2 e( u                                                 if(f_ew==1&&f_sn==0)
- S# e: `& p2 h, f                                                 P1=LIGHT[2];
- d% P; f0 F1 b9 _2 J  B2 {                                                 if(FLAG_EW_Y==1)
+ s0 E! P# U8 o0 a2 B. V                                                 P1=LIGHT[3];6 i" G5 Z' h, J
                                                TR0=1;8 Z7 Y: ^7 M( |1 V% j
                    }
: _; y8 g8 p- S5 X/ {$ E% P1 X                           } " k$ q9 j+ \+ c4 P
                         while(!s);
8 r' Z8 }  v4 _7 }               }                         , ?# L+ E! Q- \7 w
          if(a!=0)( B. M* D3 _0 c/ Z1 b, F
          {4 Y! J( f1 X9 d/ }4 {! l
             if(key1==0)
0 j1 P- w5 F; H( V3 r0 Y2 _/ G                  {
8 e. @, ^) S1 T$ {3 P                    delay1(5);
0 T7 T, I$ C' Q+ ]% n# ^, ]                         if(key1==0)! C; {) O% @' c" m  W
                         {
5 J$ I5 x6 c  i. t                                                if(a==1)
  x1 C" h, f8 C: G+ p* M/ j9 W                                           {
7 X) J: w0 s5 b' C# j5 q( Y6 X                                                        SN++;
3 a! s0 w+ u1 L1 G) c                                                        EW++;$ F+ E9 a; Z0 I7 ~# o( T
                                                 if(SN==100)
8 D: h" V6 @" E; Y; ?2 Y                                                         SN=0;2 y% `& t4 P, q1 C- {4 h
                                                 if(EW==100)
* P' {( K5 `8 {" J                                                         EW=0;) ~% B8 i* u1 k' G6 q
                                                        DISP_SN(SN);' S' m2 A$ @! |
                                                        DISP_EW(EW1);$ Y/ ]! x* u) a0 m  x5 n3 D0 K
                                                }
6 o# ]  s) q, w7 w) n                                                 if(a==2)# Y6 T& ~) m  O" ]6 w# A3 x
                                                 {$ T6 U) C7 I! m2 H2 x8 ^
                                                                 EW1++;& a8 K3 Y  i  Z
                                                                 SN1++;+ R9 K2 V1 i3 P% z2 e
                                                         if(EW1==100)6 B  A, p9 x3 P, O
                                                                 EW1=0;5 |; E3 ^5 b+ w; z' v
                                                         if(SN==100)! ]' [6 p6 H9 x, O0 J) o& {
                                                                 SN1=0;
1 Q6 T9 m, r( D# {8 Y                                                         DISP_EW(EW1);
# s; c0 z6 `; x$ M9 F2 T0 j- u                                                         DISP_SN(SN);
% n9 F8 Y- v: W* _  z9 T, S" F8 q                                                 }% w; ?3 J! M2 r/ V4 k
                                                         while(!key1)" s  s+ L$ }3 c. D1 t0 N" _7 j8 T- E
                                                         {
9 ^$ d$ O! q7 K0 J& @9 w$ B' I                                                                if(a==1)
) f& Y5 ^- a* |; f2 B1 q1 v: R                                                                {
% b0 T4 a/ p5 \; U: j; d3 q6 [                                                                        DISP_SN(SN);
# m1 Z7 N7 K6 J5 T  C, W                                                                        DISP_EW(EW1);5 Z% w( r$ X& M3 y  Q6 d8 K5 h1 F
                                                                }3 |+ a' D+ X) r# ~1 Q2 ]/ j' ^
                                                                 if(a==2)2 S' V0 m; t0 G' C5 M
                                                                 {
+ T7 S5 s' i, {" A$ ^3 E                                                                        DISP_EW(EW1);2 Y7 X9 G4 c  V, w4 B( z% `
                                                                 DISP_SN(SN);( ^. {+ l7 _( W# f8 Z
                                                                 }
! H0 e( {( h/ N2 f' Y. q/ f4 @3 ~                                                         }
( y3 w4 B/ d9 \5 a6 m/ d7 H                        }
/ G6 m1 ^% X; S4 J/ D                        }                        
' n) |9 K* D0 _2 R8 X                if(key2==0)) ?8 I# ]0 C, j5 r# [7 J. X
                  {5 ^: R6 Q7 j; K& {/ V% s/ M' m: H# L
                                 delay1(5);
$ s2 \, [5 t, v% \: ?# K/ V9 ]/ \                                 if(key2==0)0 ~% F" b8 ?# `: h* m+ D
                                 {% x+ w% ]5 y/ g' |) {4 N
                                                if(a==1)
$ C9 a9 O5 c# x# y6 r! u& k                                                 {' E9 c. G! @( a  u5 n
                                                        SN--;
8 u* C4 d  L6 d+ J1 A$ F                                                        EW--;' M3 H( a/ _' t. o6 J
                                                         if(SN==-1)7 C) {5 O  R' Y/ M/ x
                                                                 SN=99;
. D( l. y, R1 a, h9 x) v                                                         if(EW==-1)7 X6 A. W9 g$ a  B8 f" B- ~
                                                                 EW=99;
8 }+ ?2 W/ l1 y+ T: g$ ^0 I6 D                                                                DISP_SN(SN);
$ j* j; }( ?0 b7 H* X4 F5 I$ w                                                                DISP_EW(EW1);8 m# R: c* t0 `: F( c8 _9 a
                                                 }
6 m& C7 q$ Q: Q* g6 O; v8 K" ?                                                         if(a==2)
6 [. f7 T+ B# C4 g6 ^" O                                                         {3 o/ u% b; S' @$ {6 J& r% a8 j
                                                                 EW1--;  v( v' v6 M: h8 H
                                                                 SN1--;
0 o3 J' Y) z1 Y) f$ ~$ R. [                                                         if(EW1==-1)
, C, k; h: D, s: K3 s$ G                                                                 EW1=99;
5 R8 {* G  `# J- p/ J; Y                                                         if(SN1==-1)
5 j: y+ L# f: Z# E( _                                                                 SN1=99;# v: u8 q3 P; F+ b/ _
                                                         DISP_EW(EW1);! _: P# l9 G$ L
                                                         DISP_SN(SN);
) \5 `2 v- ]/ t' K                                                         }& f% S" S. h7 q" U* d9 _
                                                                         while(!key2)7 V" z. u- K* t4 o1 U
                                                                         {# D: b( D% S1 ~5 P& |# m
                                                                                if(a==1)
3 t( @& i: C& U+ m                                                                                {8 |7 M, x# o( n* V, A% W- e
                                                                                        DISP_SN(SN);9 m, C* O4 y* D  C4 }
                                                                                        DISP_EW(EW1);& k+ ?0 v" o1 z! f2 _( X# i
                                                                                }
( _3 p- _& R( V/ `) Y                                                                         if(a==2)8 o$ `7 u) {/ U2 _% X/ V
                                                                         {; T$ Q& K9 l. M8 R: j/ |" M, \
                                                                                        DISP_EW(EW1);
* y$ }# e7 I* B; _+ R$ f' a                                                                                 DISP_SN(SN);" r/ W4 z7 a% C/ w8 h% y0 v  @
                                                                                 }6 n/ Q8 H4 @( J3 P% t; g( B
                                                                         }7 ?( u& x% s! Z6 ]/ w$ t
                           }7 ~* @5 d" z/ }, U& F, l5 B; R
                                }                        8 t2 K7 A- n6 Z; u
          }4 o' |$ V! w7 v' a' f/ {! I1 t
         if(a==0)2 v! F; q- Z1 h
         {5 O0 s+ u; S' p. R
             if(key1==0); F/ K2 V; z, D  [! p* w5 j
                 {
* `: ?: R) j0 x' }                     delay1(5);
1 a# E  [7 c# x7 ?9 ]+ h8 z% b                         if(key1==0)( n! u* [2 {& j* T1 S4 H8 _
                     {
5 w8 Q: R3 V5 d                        TR0=0;( x$ b$ T% W. w- Y# I5 W* ?: O
                                flag=1;
1 ~2 Y$ l' M2 B; R9 g" B                                P0=0;
0 N0 d4 a2 I4 p$ V, z9 d                            fm=1;. n3 q7 t1 S6 T( Q6 e  J9 G5 E
                                flag_key=1;
; d4 ?- e4 M% K$ J: t6 n                     }
0 d" L6 @4 O0 U9 Y                         while(!key1);
& N; h" [1 P$ \              dispnon();
2 @3 I: [  Q: G4 Y: U+ h( T. R             P1=LIGHT[0];
. K' D+ V+ j- I; {1 G, }0 c                 }
1 {. T0 H6 x7 y                 if(key2==0)& x: @$ d. C: ?, @3 [6 @3 R( i# ~
                 {6 D- E: b7 ^* n: ?' `
                     delay1(5);! N" @- X- i* Z9 B: e: ~) F
                         if(key2==0)5 U+ j2 G* n. ]: w1 x
                     {4 p" u- \* m( [6 P( T! I
                        TR0=0;
! h: H* k0 D: H                                   flag=1;
9 a: s) [9 b0 p1 [& t3 H# R                                   P0=0;
3 n3 A7 r" r( j                                         fm=1;# y7 A% d, b8 D- W! A6 `' D
                                         c++;
4 M* g7 q2 U- s" k5 c                                 flag_key=1;; p& c. P& T1 y) z+ h
4 _1 ^0 q( T$ V) u
                     }/ S$ N: a1 k4 Y1 p3 @* O! r
                         while(!key2);6 U2 a2 ~9 o1 e7 B- s8 `, X6 b+ ?
                         dispnon();         7 ~+ @- |; |! w4 A
                         P1=LIGHT[2];
. o2 _! m; U: w3 a& K                 }
( h1 T$ q0 e3 m         } : |* i: _$ m& X
}
! i; u, k' _/ w8 gvoid led_disp(void)3 J7 i" [3 H) f8 p
{4 @+ ^& [. M) q& A9 V# X  p% m
  /*******SN通行EW红灯*** ***************/ : U7 m7 k9 K0 {
        FLAG_EW_Y=0; + @; y! s/ G% R3 i( |6 Z8 c
        Time_EW=EW; * q& h) [; }$ A0 _
        Time_SN=SN;
4 }4 O: B% C  k9 |1 S' L                f_ew=0;
, ]+ I$ f/ Q7 T3 {& m1 N                f_sn=1;
8 D+ |) b! M9 B) s: ]! t6 X                P1=LIGHT[0];
" A7 o1 `5 E& k  Y7 I        while(Time_SN>=0)
1 R& F7 @/ d5 p3 g$ b        {   
! x8 r- r6 t* L( c: W* O                    if(Time_SN==3)
. E" Q0 v( K( ^; b4 I9 l; v, R                        {
  r3 R, S: H3 |. Z! E; _                           FLAG_SN_G=1;
; [" j5 o3 X" X) y+ n) Z                        }
! V4 Q% \* t+ @3 H                    if(F_DISP==0)   2 M& f7 I* x1 m5 ?( v  f( N/ p6 k
             {, @; X+ ~- V# ?+ B" w. J
                          DISP_SN(Time_SN);
5 k9 Z9 _+ j# p! S6 Y                          } 5 ]7 M) K- E. |) a' E' a% {8 J
                  DISP_EW(Time_EW);
9 n1 {' @6 `5 h! Y        } 2 {6 ~) N3 ]5 m% f
                /**SN黄灯闪烁***/# a% G9 p0 H' R+ p% F8 ]2 c
                 FLAG_SN_G=0; , J8 \3 O; L# j. V2 A# y6 N
                 Time_SN=3;
! |2 M. K4 D, S5 g                 FLAG_SN_Y=1;
' @, b/ ^& M  w# r+ w: @! l( q, e                 P1=LIGHT[1];+ C( }3 R4 C, K5 E- J0 C: F
               while(Time_SN>=0) 6 `! E  z' o# ^% ~; g+ d/ n
        {   
8 e: R; O0 O2 S                  DISP_SN(Time_SN); " L3 X7 v4 ]9 F9 c6 ]; v. h/ G
                  DISP_EW(Time_EW);" s6 w5 W$ {# H% R' s
        }6 [, }, Y, J( W
                FLAG_SN_Y=0;
- N  o( @+ R8 B4 [                f_sn=0;" |+ w/ t/ j* R& ^2 G- q& i
/*******EW通行SN红灯******************/ 5 x& {4 ]% I% s8 L" A& o+ T
        Time_EW=EW1;
( {1 H" p/ i8 M5 m! L6 B        Time_SN=SN1;
. [" F: H6 x, T7 j. z! ]                f_ew=1;
: d: C/ W8 s+ {                P1=LIGHT[2];
. h& A2 ]- Z9 _. y3 N                /***EW绿灯亮***/5 w5 M# d1 Q$ ^8 N0 P) ^
        while(Time_EW>=0)
0 [5 K2 S+ e; v2 f( z        {  1 `6 _& K# N9 B; i# f, w; C
           if(Time_EW==3)
6 T# M2 c! f/ s: w! }) V                        {
/ [' u' n' w/ f( c' `- L' ~  m                           FLAG_EW_G=1;
7 o2 P+ C) {! u" o                        } 9 ]1 x/ M' T: ]) |  D4 S# O/ c( j3 q0 G
                    if(F_DISP==0)   
" a/ z  S. y& ]# f1 {  V9 F             {% e- n* Z+ s5 r0 L( h& `
                          DISP_EW(Time_EW);
# ?" M+ N* ~- \                         }   d' e7 r0 b9 y8 j* y
                     DISP_SN(Time_SN);
& j/ P3 i6 J* ^        } 8 G, F- M( T1 s5 D9 O3 i2 c
        P1=0X00;& q2 U; ^/ V1 v- v- e+ {/ w
                FLAG_EW_G=0;
4 i: f  A5 O" y* j                /***切换为黄灯***/
1 s' S5 _2 |1 `, V* ?5 M                 Time_EW=3;) u+ C% Q* e' C* i
                 FLAG_EW_Y=1; 3 f8 p: C  v8 n! [* n
                 P1=LIGHT[3];
0 W. O8 f" |; l. f% Z/ p       while(Time_EW>=0) 6 f8 B* S" V, E( K, V( q
        {    1 Y; w* h9 a) w( T  z
                  DISP_SN(Time_SN); 0 Z! M/ F( Q7 _" M% T' V
                  DISP_EW(Time_EW);
* V. A# }4 i& C        }
1 Z% \6 ^2 b, U- ~9 m& Y                FLAG_SN_Y=0;
3 T) v" t! E0 n, P+ `                P1=0x00; 8 F2 d$ j* }2 o+ _* k
}2 K( D2 U. H& E
void init(void)
' V# @, A2 ^7 S{
  x9 X7 v" f: q& S; b    IT0=0;
- C( P9 F/ ~* f- N9 K    TMOD=0x01;//定时器工作于方式1
  l: Y$ O/ z6 Z& U0 p( F' v    TH0=(65536-50000)/256;//定时器赋初值
6 a3 G. Y' X6 o* S    TL0=(65536-50000)%256;
# J) k1 M5 u- J8 i3 g5 N    EA=1;//CPU开中断总允许
" y0 p- S( Y& ?! [4 |( {- Y0 N    ET0=1;//开定时中断 : U) m9 h8 `+ Z  h$ G
          EX0=1;
5 l, X; n3 c7 E) B' ]    TR0=1;//启动定时器0  
: Y4 L9 r! M0 j# C9 E: }1 q$ L, w          fm=1;
, n0 a* w- T+ u; U) g, o& f}
! R7 x. b3 O- j" i; l* r+ i! S/********************************************************************/
& K2 y6 \6 [) `2 L  U
8 }$ |, e: E% y9 D7 j& [3 |! evoid main(void)
" q! S$ y% h1 o) t" Z7 L% ]{ 5 ?/ P  J6 R1 T
    init();( z4 {2 B$ X5 o2 p
        check();
3 z2 q7 ?' H2 e    while(1) 7 p  a% y% u6 ]' }
    {
; ^$ N) O5 E4 M& B           led_disp();
, [2 c1 \/ F0 |- L* D) x% ^1 S- S8 w    } & m, {6 U- l# V! v* K3 I( [
} 5 X6 F7 u7 }* j
/*****************定时器0*********************/" p( K- B6 x2 E5 C1 m
void timer0(void) interrupt 1
2 M7 r4 R/ \" \) ^- ]/ x, v. o{ * S! J; z8 t' K2 c: w$ O& @4 h& ?
    static uchar count; 1 D9 i6 b# r# C8 L# B
    TH0=(65536-50000)/256;
  K* L! ]# \% U/ a7 n, M+ f! h4 S) t    TL0=(65536-50000)%256; 5 l+ t* t0 B* y, J( H- i! `
    count++;8 q+ ~) h- v' p# M0 @; c
        keyscan();
, z) d1 g* ]7 Q# F* A  ]        while(flag)
- z' j9 v% A1 A- P6 E         {, d3 T- P: o$ q
                 if(a!=0)1 F" h* W! r# }% @4 z) w- C
                  {& a  A% _6 Y0 y! b1 F" R' B
                          if(a==1)
! Y8 @' x* F; h! _* {                          DISP_EW(EW1);
+ n3 p* D3 d  x4 f1 [                          if(a==2)
8 N6 \7 C( F) V, w4 W                          DISP_SN(SN);
7 Z+ [9 z  J. R* U4 }3 x& _                          if(a==3)' t- @1 z$ A- K) r7 F
                          {3 }' i( g$ O5 I! H, o: [
                DISP_EW(EW1);
/ u. x/ u' I" m! U3 C7 g                                DISP_SN(SN);9 \- E) d( x( H, j. f' o
              }         
- h: Z% Q& t( L' C# _                  }
3 o2 i; @  H  @  n           keyscan();3 }: u4 W* o+ J2 n' g
         }
0 v' J" d$ i9 \; x/ ^( v        if(FLAG_SN_G==1)
. _' A' N  B/ i9 d        {# ?6 K6 P% F3 Z  ^  T8 u9 C
           if(count%10==0)
' d3 E3 \$ K, E4 V" v           {
& e* F8 J$ B) E: M; k              SN_G=~SN_G;
$ u; q9 i# D* }' Y                  F_DISP=~F_DISP;
3 N4 {% u& N7 a% S) Q$ b8 b4 N                  fm=~fm;5 Y5 M& ]* C; u& e/ E
           }
/ L+ u6 H5 k) G7 W1 h# @$ e        }
/ p. @% |5 z' D        if(FLAG_SN_Y==1)* Q2 a- \$ s+ _; O5 @
        {& j5 {' w: I- T$ ~) h
           if(count%10==0). V2 {! N/ B0 N- i
           {
: F! Y& ]- [% E# D, }% y0 x; v- T             SN_Yellow=~SN_Yellow;+ Y/ y% `. v; K  s& Z
                  fm=~fm;5 L2 i' F: x3 T4 @% k
           }
; H. ~' h! z, c. f! ~        }
" [- {& N# J2 @0 ~        if(FLAG_EW_G==1); A3 d. E# o% F/ r
        {
! a7 k& u8 y1 h/ E           if(count%10==0)
7 O! {  g: {4 o/ h           {# B( j3 {5 p' Z* m2 _# S: {; ]8 t
              EW_G=~EW_G;7 \1 X% W" N% H
                  F_DISP=~F_DISP;+ h/ W- v1 q2 U6 A
                   fm=~fm;
( Q% P4 Q3 @  O4 ~& i           }& y9 G. ~! W: P+ S' D% g
        }
  o5 f# ^# l, C: D2 B% v9 w* N8 x        if(FLAG_EW_Y==1)0 r1 M! x$ O) J6 V2 g0 p3 Q- P
        {( Y% v8 [* `! T: l0 {. @! }
           if(count%10==0)
( _' A* E* t, R$ \- @$ G           {# d$ _: p- N; |6 a& h4 c
             EW_Yellow=~EW_Yellow;, j; L3 Z# [; n2 l0 U. _
                  fm=~fm;2 |" J8 U& v- A% u$ D9 m
           }! D2 [. M2 h" i0 N" r+ @6 P9 s+ F
        }- ], K0 g& ?. q6 s" N2 Y
    if(count==20) % i$ S. {, L9 H4 N, P2 ^
    {
4 y: ~! q4 p3 t2 G        Time_EW--; $ K, n5 ]4 S* N

. Z4 ~, w# C1 b# Q" g+ F9 \" P9 W0 s3 C' \  o. x
…………限于本文篇幅 余下代码请从论坛下载附件…………( i3 @7 E* u. D' [, M' S
全部资料下载:7 I2 z9 f  `) ?: x9 w5 P
游客,如果您要查看本帖隐藏内容请回复

( L: ^7 V! r; q3 R% A& a) h
" q9 ^) N! Z6 a' Y" T6 [5 x4 {

该用户从未签到

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-10 09:19 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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