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

交通灯设计 AD格式的原理图和PCB与单片机源代码

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
交通灯设计 AD格式的原理图和PCB与单片机源代码9 P/ [) `/ ]2 s' d
) y  [" |9 [' m% a
( l4 e7 Q$ @2 M
一个用51单片机做的交通灯的设计制作,而且带ad画的原理图和pcb,有c语言和汇编语言两种格式的源代码.
; H, `8 D* r6 Z1 v# `& l- O" s4 ~9 W2 \* h% m" F& x0 q$ T
ad格式的原理图:, X7 [9 t  _5 l2 Z. y- _& w1 a, m
9 [) }% Q3 h; H3 c' ?) @" a
3 M, q6 w. K. a, l( k

/ ]3 d4 A, R) s, fpcb图:
- F" p- {) z$ q) i: _ 4 b; K* g* F; E* X! v$ G( e! Z# `" V
单片机c语言源代码:

* ?. ~" ^' j0 S& i  O/*        程序效果:单片机模拟控制交通灯程序,规则如下:当南北通车时,此时南北的绿灯亮,; {  {2 Q6 [# s0 J8 F2 \) @9 ^4 m5 A. q* O
东西的红灯亮,之后南北的绿灯闪烁3次,过后黄灯亮,延时片刻,转东西绿灯亮同时南北红灯亮,5 L; c+ e9 `! Q8 q
之后东西的绿灯闪烁3次,过后黄灯亮,延时片刻;数码管显示的值都同步,结束。*/
" O% o. \! A) r1 p9 S+ [/ ~#include //头文件
& F/ l2 _' T8 o. }& O* a) a% u#define uchar unsigned char//宏定义; G# S# E- s  g6 ]
#define uint  unsigned int8 A5 O, k% I  B. u" c' B" c
/*  旧IO定义*/
2 e% t* o6 a% L0 ]sbit FMQ=        P1^0;                //蜂鸣器
* P/ N6 C# x2 M, @7 Msbit QR        =        P1^3;                //北红灯( d5 U  Q9 q' ~" Z
sbit QY        =        P1^1 ;       //北黄灯
, s" f" Y0 V# ], _1 }8 W0 z7 E% isbit QG        =        P1^2 ;    //北绿灯- i0 E% W$ V$ O  T1 C& \; |
sbit HR        =        P2^2 ;    //南红灯
0 s) R; {4 `5 Ksbit HY        =        P2^0;     //南黄灯
) [9 l: a6 S5 ~# gsbit HG        =        P2^1;     //南绿灯        3 [/ S7 X7 w$ ~+ V0 F9 w1 o' b
sbit ZR        =        P1^4 ;    //东红灯
/ Q' J2 k4 O# a! Y3 ]" T2 d* Ssbit ZY        =        P1^5 ;    //东黄灯
. \; P' ~: s  y# m% asbit ZG        =        P1^6 ;    //东绿灯
+ u1 z8 }5 T$ @" T0 [0 X  l) M) s8 v: }sbit YR        =        P2^5 ;    //西红灯, U& }' a$ P9 X1 z7 G. N
sbit YY        =        P2^4 ;    //西黄灯/ e8 u1 P9 Q6 w6 ?5 z/ a* X
sbit YG        =        P2^3 ;    //西绿灯         
/ I3 R" h* n# ^sbit SWITCH1        =        P2^7;        //时间显示的十位控制
& s6 j4 U% a" B: [; R' `6 |sbit SWITCH2        =        P2^6;        //时间显示的个位控制" w' K% _% W5 C- A+ l5 X6 Y/ @+ i
/*        //新IO定义
. T0 `; t* q$ B" j+ x& V) Y6 W" s  esbit FMQ=        P1^0;                //蜂鸣器5 a4 W& V6 ]# E# M# @
sbit QR        =        P1^1;                //北红灯
( K4 H' b! J1 E; ksbit QY        =        P1^2 ;       //北黄灯/ p) m# W1 ?, p8 s0 Z$ T+ [
sbit QG        =        P1^3 ;    //北绿灯/ g5 t: e' n* ]. X; G% o1 k
sbit HR        =        P1^4 ;    //南红灯" j8 }. p+ j7 j* s. Y
sbit HY        =        P1^5;     //南黄灯: u! t4 l! Y# r- l* Q" R( \4 P
sbit HG        =        P1^6;     //南绿灯        
4 F0 O% T5 L" `  Usbit ZR        =        P2^7 ;    //东红灯* J7 i$ I  @5 c- L
sbit ZY        =        P2^6 ;    //东黄灯& W. M+ H) n! n% L) ^
sbit ZG        =        P2^5 ;    //东绿灯
1 y" }0 ~" W! u8 C- A/ a% {sbit YR        =        P2^2 ;    //西红灯) c( B  W: G$ j0 q( J
sbit YY        =        P2^3 ;    //西黄灯) T0 ^; S+ ]4 C
sbit YG        =        P2^4 ;    //西绿灯         * e/ e  T" n6 R( e# I" R* w
sbit SWITCH1        =        P2^1;        //时间显示的十位控制
" W7 _; l$ N; _sbit SWITCH2        =        P2^0;        //时间显示的个位控制* ?- M; i1 E  r" G2 Z( v
*/( C1 ]# l* w+ [. ^! l1 l
//sbit P3_2=P3^2;1 @% S$ [, x" g5 a9 p( B3 b
//sbit P3_3=P3^3;
$ T. C/ y' X, P( b: W/ @" wuchar DAT;//显示时间变量) F2 F, @8 \7 u8 f3 B2 l* ?
uchar DISP[2]={0,0};//显示缓冲区
% q2 V( P, x" L& Fuchar code table[]={0xC0,0xF9,0xA4,0xB0, ////共阳数码管段码表0  1 2 39 u2 H2 F6 ^3 i2 r& R: \2 E7 `
0x99,0x92,0x82,0xF8,0x80,0x90,0xFF        //4 5 6 7 8 9 灭
+ F" g4 l% d3 [5 \6 V6 f8 Y/ e};. v% {5 _0 c4 g! T# o
void DISPCLK(uchar i);//显示函数
) f9 Q; f0 h8 U6 @0 O: J# ~$ z

" O. F" l" A" Q* F, M5 D% _0 Q  x. pvoid DEL1MS(uint z)        //延时子函数7 n& o1 j/ g6 ~, z9 I
{: j' I: N6 W! e/ U& n0 m
uint x,y;# e' B8 ^# j8 T9 G3 c6 X
for(x=0;x<z;x++)
% E. ], ?+ s6 O' ~  Y1 J; efor(y=0;y<110;y++);4 b, Z; s" c: K: t, b# r
}/ I! \" U! ^4 d! x. J
void main()    //主函数
- C5 Q; H' t6 g6 L6 {{    //  uchar i,j,k,m,n;//定义局部变量
" u- Y0 i. x; E1 y( ^     uchar i,j;3 N- n1 ?  E" p' a3 h
    TCON=0x5;  //外部中断为下降沿触发
# [) Q( l' E0 Z  |( m- d         PX1=1;//南北方向高优先级
! w8 W0 {! P1 \' n     EX0=1;           //+ c. ~; ]/ n& ]+ _. n2 U$ S+ N8 _
     EX1=1;    //开外部中断3 U5 S2 r( v6 S9 [2 Y
     EA=1;     //开总中断1 Y* ?5 ~! e! R: F8 ?
        //IO口初始化
& c: z6 M! O- z5 h( t         P0=0xFF;
* X3 L5 J* c7 p9 L         P1=0xFF;1 F- K3 l3 E# e8 k5 @
         P2=0xFF;
3 u; a& q  s1 ]3 n         P3=0xFF;        
( e4 M2 O7 [+ L% q! R. n( t         //DAT=25; //汇编0x259 ?/ P& U* n+ t" S. v& W( G
   while(1)
; y0 u/ t6 o$ ~3 u   {4 r) d( U! W/ V& I! y
          P1=0xFF;//灯灭$ X9 l8 Y) g. x/ P/ [" o
          P2=0xFF;//
3 O4 s* W/ Y* K9 x- q# U3 }* D- `          DAT=30;//写入每一通路的通行时间; W3 R. |, ^7 g; f
          QG=0;//南北向绿灯亮2 O' r4 X; L( h& J$ Z3 [+ g
          HG=0;
5 p$ V8 z* n+ e  a! q) k          ZR=0;//东西向红灯亮+ k, {9 [1 c8 h5 A- I
          YR=0;8 U) o6 ?, J: o' I( D, t
  /*9 Q! k9 X: r  N+ q% {
QR        =1;                //北红灯# L% w7 c) b; q" E" A0 o
QY        =1         ;       //北黄灯
% [9 {3 g0 q+ }% O: [* s QG        =0         ;    //北绿灯 QG=0;//南北向绿灯亮
* {3 X. E# f  I: G/ w) S HR        =1         ;    //南红灯8 s- j4 l0 T2 j) _- `
HY        =1    ;     //南黄灯( V8 Q' S! L6 O
HG        =0        ;     //南绿灯        9 F$ m2 B% W& r8 n6 F) Y# m$ n2 d
ZR        =0         ;    //东红灯
$ ]; k5 r- |- B5 |9 ]# ^: C ZY        =1         ;    //东黄灯* ~' O' \' w+ e4 }" E$ Q; P
ZG        =1         ;    //东绿灯
, I/ Y' K5 }, v6 O2 s0 k! ^4 M YR        =0         ;    //西红灯
2 s( l. X4 y1 J& }6 z" y7 ^ YY        =1         ;    //西黄灯
) m6 a7 L/ x# @1 N% x YG        =1         ;    //西绿灯, u; r* e2 J6 H* t
        */  
8 _( R% ?& c$ i6 b          //ACC=DAT;9 p/ e# F. E  w; z9 H

* }3 E1 D, [; y0 h& \7 P

4 m+ P; Z: q' G# z- e' ~1 Q+ P          for(i=0;i<25;i++)* I+ r: T3 C/ @& p3 G) \
          {        
  N' @" A' S# z: ?7 i            for(j=0;j<220;j++)
/ r# v2 P) Z6 M, G3 [. }" _+ ~6 Y                {4 ]4 A' X) G% V6 k- O4 i
                  // BCD();//BCD码调整, ^* r1 A6 j3 E7 [0 ]" A
                   DISPCLK(DAT);//显示
1 H& A8 D$ {% w                   DEL1MS(3);//延时3毫秒   
* b2 e! y& Z4 n0 f
, y+ i" o$ _* s! M8 T

  M2 u$ x, j7 t- D                 }# H( a1 T2 J  P, e+ h1 `1 P( o& }
                 FMQ=1;//蜂鸣器响
# |" v4 d& t2 G+ Q  Y/ i                 //ACC=DAT;: S$ }( S( \! l, R" ~* e5 {$ ?
                // ACC=ACC+0x99; //完成数字的减1操作* p6 s% b/ n/ q9 m0 H" T
0 M! \: y+ D. W5 C
/ ^$ V% `+ U* _  [9 n* F
                // DA A;//???        
$ O3 w. z* d. S/ |$ P                 DAT=DAT-1; //调整好的数字送显存                 ( B4 {8 _5 T. Z1 ]6 v, z
           }/ k4 \: B7 @" ~) k6 w8 l
0 D, A& U$ H7 F! y# K5 U( @

  Z5 W* E9 B' t  i           //最后5秒黄灯闪
  E+ u9 z+ G8 k1 G: T+ h                 P1=0xff;# x; I0 p- H$ [/ E' V# J: @& ^5 m
                 P2=0xff;//关所有的灯
2 W, d) N5 r. g                 ZY=0;//黄灯亮4 J7 z& t" `: ]5 L; c' ?9 t! f
                 YY=0;
3 m1 j9 [, Y5 p) W# l2 Z" d% t3 y                 QY=0;
- E8 m6 ]/ U4 H2 P( d1 G8 |                 HY=0;                  . Q! f) C( M3 w1 r9 v
                for(i=0;i<5;i++)2 P" \7 E, E; `% P4 ^  J
          {        ( ?0 Z  J2 d7 C8 \* h) ^3 ~8 x
            for(j=0;j<220;j++)9 }6 e0 u5 o7 E5 W% ^4 o" c  \/ U
                {5 L" F& T7 h& b
                   //BCD();//BCD码调整2 W  L" [# ^! h# G; b* R
                   DISPCLK(DAT);//显示
; g* g+ a8 f1 x) P  D                   DEL1MS(3);//延时3毫秒
4 b. }; v: h/ X7 F( j                  
' ]. _' y, C( Z                 }7 K" P& j5 w( {" ?7 [
                 QY=~QY;// 南北向黄灯亮
& Y) B( p/ H* r                 HY=~HY;
$ R2 U0 z7 w# A1 f( t; S( }( i+ h                 ZY=~ZY;//东西方向黄灯亮, [, L) G, E9 X% v
                 YY=~YY;  * H3 d2 Q3 p+ S
                 FMQ=~FMQ;//黄灯时蜂鸣器叫一声
* S0 J/ ]  Y* c+ v' S1 s' ~; ^. b2 n' Z
4 a# J$ |1 g/ E$ j* r# O2 D1 T  ?
                 DAT=DAT-1; ////完成数字的减1操作,调整好的数字送显存         
* l2 q- c) Q- _' c                 + e0 J3 f) M; k, t
           }
' a1 j. E5 w$ E4 _7 F! R7 x
: ?+ {6 D2 s4 p5 l& I5 o6 b
7 L/ F/ n5 r, V
           P1=0xff;
( v0 i& d4 Y# y. C) R# ^# v: S% T: q           P2=0xff;         
5 k# }# _) F& T6 ]7 e           DAT=20; //汇编0x20
% A: v' H7 A& R- U( J, d           ZG=0;//东西方向绿灯亮
' r  Y- V+ t: K# `           YG=0;
0 D( U- w/ ^( f5 b. N! s           QR=0;//南北方向红灯亮
7 G4 G7 b' @3 h. H           HR=0;
( w8 j+ L8 L- }$ S           ACC=DAT;; E/ E" [" H* X+ |/ A
           for(i=0;i<15;i++)//执行15秒
0 S& y) p9 w; J" J) x+ h          {        * J6 h% M$ r: A" H" N% w
            for(j=0;j<220;j++)
! T3 v2 I* E* k7 H                {7 e  ?8 z0 u; _; O* Q
                   //BCD();//BCD码调整  f) j$ y4 V/ X) v. c
                   DISPCLK(DAT);//显示
. r+ r1 t+ Z  k& c% _% Y                   DEL1MS(3);//延时3毫秒  
7 H. B! E& L! h# X3 X- m+ E                 }
+ k" Y& ^6 ?' C                 FMQ=1;//蜂鸣器响6 [! C$ z; R6 E) i  f" [, z* d
             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存
5 ]( B+ N: G. |               
0 T8 P' J. {# ]2 O           }
" ]2 V0 T, a9 V. H$ _- x( W                 //最后5秒黄灯闪
8 A, g7 P5 k6 r                 P1=0xff;
. c( C) K2 n1 K) e+ x& W                 P2=0xff;//关所有的灯
! P' T6 ]# j; |- R' `1 L; c% H* o5 y                 ZY=0;//黄灯亮+ k; c( ]! s, O. X& g. h$ f
                 YY=0;! @+ g7 @3 H; ]) `3 l& ~/ K3 P) i* p
                 QY=0;2 p) \1 U$ z" I9 V6 ^
                 HY=0;
* z/ m. m, z  U4 U/ B) M          for(i=0;i<5;i++): F5 ~1 ^9 N7 x! Q
          {        
# P3 O! n+ C4 ?9 Y+ G9 t  V            for(j=0;j<220;j++)
1 N( {- A+ ^2 g; S/ C/ L                {
% S6 P  C# v, q1 a3 C; `                   //BCD();//BCD码调整  P1 x- H( J/ q# N
                   DISPCLK(DAT);//显示
+ W, F4 T, A$ ?3 L                   DEL1MS(3);//延时3毫秒                    " V/ ^  ^* n% [, u- d' S
                 }* z9 `. C! V+ [
                 QY=~QY;// 南北向黄灯亮1 y+ s+ X% |8 v  Y- u4 s
                 HY=~HY;
- W. g% G2 D/ Q  m                 ZY=~ZY;//东西方向黄灯亮
3 `! i3 R: Q' z                 YY=~YY;  # ~2 e4 n5 O* C7 g& w- z3 y  |
                 FMQ=~FMQ;//黄灯时蜂鸣器叫一声
( b/ A. g& Z8 M  A* r% `" Y: `7 G3 f: t9 j2 U

3 L' S) ~; R' T  q- P5 v$ K                 DAT=DAT-1; //完成数字的减1操作 ,调整好的数字送显存         , l, a, I+ q; K: r
                 0 Y/ x5 M! f& @. Q2 b9 l3 [
           }
" l2 w' z! M) G* ]. i" ?/ C2 \- T        }         , y$ r" Y) |+ I; P4 }' A) M+ M
                 
  q, b# \7 M0 U7 v6 h4 q}3 N9 a2 Q4 K4 F- B5 d4 ]
$ n& E0 r1 w9 c$ D4 C
; a( m  g! \. {  D2 l
void D_X()  interrupt 0 using 0        //东西(横向)方向道路紧急通行50秒中断程序% M$ r1 H& Z5 X" g; `; Q0 ?  P
{        
# A+ Q% v7 l2 c5 v" R2 R8 U        uchar i,j,temp1,temp2,temp3; //定义局部变量
6 u9 i: {2 V" u& `         EA=0;//关总中断: w! n/ l6 Y0 b1 J
        P3_2=1;
9 }! ^; E- e1 W, {        while(!P3_2) ;//等待按键释放
8 Q! }/ m1 Y6 b9 W+ S9 |! J        temp1=DAT;//保存显示数据: _, V; [4 V; w& p$ Z8 R% S
        temp2=P1;
0 I5 K) E$ w9 @0 `        temp3=P2;
9 b- m/ c( [' D* @8 d8 y2 F/ I9 c. q% X9 G0 D" V$ y% L2 ?# d
; t2 R$ j$ j; Q+ M1 K+ A+ c
        DAT=50;' P8 ]" Z/ I+ T8 @+ ~
        P1=0xff;
5 O3 X: z6 R4 S6 v$ h# K& o6 o        P2=0xff;# @- W3 t5 Z; @' V- S' R
        ZG=0;//东西方向绿灯亮
- B1 B. \* G. k# H4 l) A3 Q        YG=0;8 P, w- c# ]3 V; _, H( K
        QR=0; //南北向红灯亮0 O# k3 P! X5 I+ Y
        HR=0;
! p1 [7 d* g0 U% r3 {. F        
4 Q5 ~; r, H- c* w* R         0 @" v8 Z0 p6 D6 H1 b5 a3 a2 x! i: h, E
        for(i=0;i<50;i++)//执行50秒
5 P) h$ _/ [/ J% S% |; E9 ^! }# f        {        9 `( b3 p9 L4 z8 U6 b- k
            for(j=0;j<220;j++)
4 U, j' i5 K/ w                {4 }, m! c/ T  x& z, K
                   //BCD(DAT);//BCD码调整
# s2 M+ m4 q7 \5 x! `# g- ^6 J: \                   DISPCLK(DAT);//显示
+ Y# S& Z' A$ a  u8 u' f  ?                   DEL1MS(3);//延时3毫秒
9 G  }" W7 {1 |( m9 ]# \                 }
9 H! j" j" J* \# E0 L1 [* d# S             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存                & \; \& D9 E  f/ v. ^; L
         }
: c* ?. u& ~9 B( F        DAT=temp1;//回复显示数据- M2 C% E. P1 {! M9 f4 e% g
        P1=temp2;7 X- s* y8 N; `5 k6 r, x; o
        P2=temp3;
/ ]5 ~- d- ?8 q8 x, T- i  l5 N. t" S; Z; C7 p
; f! h, Q2 k0 B5 g
        EA=1;//开总中断 ; j* t$ |. H9 J: Q& x
}: d$ F: X9 z7 y, _; o  u3 W7 ~! O
' t/ B8 a6 H) L5 I+ X
2 s7 ^  P; ]" v8 u
void N_B()  interrupt 2 using 0         //南北(纵向)方向道路紧急中断程序; V) X: {' E* k/ N, O% Z
{        5 Q" [/ Y" ?2 w* F, Q# v1 p$ _
         uchar i,j,temp1,temp2,temp3; //定义局部变量3 g' P5 Z8 o' G$ \
        EA=0;//关总中断* K9 u# O0 n/ E0 e3 O
        P3_3=1;; p" ~/ B. N% }7 s  ^
        while(!P3_3) ;//等待按键释放
7 }) V) o! e& {. a' x        temp1=DAT;//保存显示数据% Q( y( Z6 x* R  P; w  w( ~6 q
        temp2=P1;
: Q$ i! g& i3 p; g        temp3=P2;) y/ e- s; Q/ q) ]6 R- t. |

# [" U0 Z4 Q: D3 I6 M

; S, g6 h. \- B* A, K9 d) y        DAT=50;+ M' V: y5 K- @& s) k
        P1=0xff;+ b; b4 r9 r9 P8 @/ E2 K
        P2=0xff;
- b9 X) q4 b( ~- C        ZR=0;//东西方向红灯亮
% T& n$ R2 R; W5 `        YR=0;
; _8 D( n: R1 B7 y+ E        QG=0; //南北向绿灯亮' K8 O1 `3 u& _! K/ I, X
        HG=0;         - u3 i% c! V$ u6 O* R1 z$ d
        for(i=0;i<50;i++)//执行50秒& }9 W) b6 \' X. B1 z/ G6 `# w6 C
        {        & Q9 B! Z& @/ z: I9 W5 E4 A; U
            for(j=0;j<220;j++)
% ?2 I" m9 }$ |, h' n2 x: h                {2 L( x. g0 w0 N2 d5 n
                   //BCD(DAT);//BCD码调整
+ _8 t* d4 d8 a! ~. I                   DISPCLK(DAT);//显示" P. M) b7 x! Y% a7 N! C2 a* E
                   DEL1MS(3);//延时3毫秒
2 w7 q$ u  o/ o7 g0 P# l                 }$ y: j0 G  o- W- a6 ^. r
             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存                & D% K. e+ y& D6 S' P
         }
$ p$ {( F( ?0 [/ `6 M1 _3 l4 F        DAT=temp1;//回复显示数据3 u" ]8 Q0 u& `; r% z8 ?- w5 e, n
        P1=temp2;
/ }% H' ]' Q# f' N) B        7 c: z3 `9 R( c8 r; D) B* f
( X! s% r  q1 P2 k) b$ E1 J
4 x( P$ w- n3 L# c% r
…………限于本文篇幅 余下代码请下载附件…………
# }; K2 A' r3 {
8 g1 q" ?/ P& k# G1 G* j& l1 e' K
/ H' k  [/ E9 J' V3 v
/ b8 l# J* o) D5 @* q

* r: M* H! h) I2 f( D4 \- U: v汇编语言单片机源码:4 Y, U3 ?' I. [& `. w9 s8 l* Y
8 y; {, f5 i! K3 E8 i
;智能交通灯控制器程序
" R9 q5 V8 l3 L. l                ;以下程序完成各脚的预定义  a. I4 k( `7 u7 y( L' k
                FMQ        EQU        P1.0                ;蜂鸣器  E3 t  [  ~$ G- ^
                QR        EQU        P1.1                ;北红灯
1 e: X- L& I- V4 T' \4 ]4 V% W# `                QY        EQU        P1.2                ;北黄灯# W0 b, L9 J5 S) t/ o9 S4 t
                QG        EQU        P1.3                ;北绿灯
6 F4 `- y+ P  y  m, s' l                HR        EQU        P1.4                ;南红灯
/ r4 w8 W& R( `% e' q                HY        EQU        P1.5                ;南黄灯
6 j/ H# e8 P; ?4 J" Z2 \                HG        EQU        P1.6                ;南绿灯        
1 }( F1 H. c. k6 x                ZR        EQU        P2.7                ;东红灯
* l% P6 d3 h' t5 }/ r. s                ZY        EQU        P2.6                ;东黄灯
* c$ H- c; T- s9 V                ZG        EQU        P2.5                ;东绿灯                " a, ^% ]' K1 D6 F1 ]
                YR        EQU        P2.2                ;西红灯
5 c/ W+ g& p% `0 A  }/ R                YY        EQU        P2.3                ;西黄灯               
4 T# ]8 m& v  b9 g! {. r                YG        EQU        P2.4                ;西绿灯
8 b  c" B2 q- k  T1 N  r6 t" H                SWITCH1        EQU        P2.1                ;时间显示的十位控制               
8 M* n, z' w9 [7 U& E                SWITCH2        EQU        P2.0                ;时间显示的个位控制# ?4 \% R2 n  e  x6 ~) C* j
' [) n. P  p2 w; g5 [! p) K
                DAT        EQU        60H                ;显存) b3 [2 B' b3 P8 J! ?8 {

* q, `/ ?- o! T                ORG  0000H
6 J( }: V% v! v6 }# v                 LJMP START; r8 i; q; ?4 ~* S
                 ORG  0003H+ w$ ^0 R% ]/ @9 t" n1 h
                 LJMP D_X                        ;外部中断0,东西向紧急按键+ u# l% O* ~; J; i
                 ORG  000BH
1 x6 f1 q% ?6 u- |, O3 Y7 y                 RETI                                ;# R6 M9 c8 Y3 }& ^" Q+ g
                 ORG  0013H% a" Z7 `5 }& H5 D, g# k
                 LJMP N_B                        ;外部中断1,南北向紧急按键' L3 x/ U) E& p
                 ORG  001BH4 F9 l) S6 l' C; J
                 RETI, ~4 q6 H7 y* v9 D  H* ^3 f
                 ORG  0023H' g  P) C9 m1 P8 \
                 RETI
; y# ]2 Q+ `% |+ n$ D! R
- S+ U; P( n2 v' x+ Q6 n1 O                 ORG  0040H                        ;定位
9 y. T/ A1 @" w START:4 m2 O% D( |, k1 q6 I; \7 P
- E/ A1 F/ f: H/ B: Z+ O
                MOV        TCON,        #5H                ;外部中断为下降沿触发
* q9 }' d, Q* E! Z                SETB        EX0                        ;
1 a1 q0 g5 D$ B' S4 i/ a2 N                SETB        EX1                        ;开外部中断( V, `8 O8 V! e. u' a
                SETB        EA                        ;开总中断
! Q. L; V' R5 u/ p* ?6 ]& P                ;IO口初始化
" A% {8 n1 T: d4 ]! w+ e* [                MOV   P0,#0FFH
9 v7 q# A" X; `& M& y- T2 s: k                MOV   P1,#0FFH                        ;9 r$ q4 K) R& M& o3 R
                MOV   P2,#0FFH   ;. N& `  H' Z2 g- B' d/ q
                MOV   P3,#0FFH                        ;
" N0 F+ K" f" W% F                MOV        DAT,        #25H                ;
3 |- l  K- i7 T, j; {5 O3 h  @: M1 J: n/ K2 f" f

% V' s" h1 s0 Y9 mAUTCLK:
; B* }) l& g" t" |& ]1 j( \# m                MOV        P1,        #0FFH                ;  v( ~" f& {  H2 }& R0 H
                MOV        P2,        #0FFH                ;  + v5 y' v2 w5 w$ ^
                MOV        DAT,        #30H                ;写入每一通路的通行时间3 v" h" Y- t# i
                CLR        QG                        ;南北向绿灯亮
7 `3 s6 f- H0 C) C                CLR        HG                        ;
9 y" a& j7 B) ~                CLR        ZR                        ;东西向红灯亮
& l2 Z$ f9 g4 U4 {6 p: v                CLR        YR                        ;% \; r8 B1 P/ I7 y4 U/ p$ [& a
4 h2 `( C8 ~# r
                        MOV        A,        DAT                ;* o% `- `- [1 ~/ H
                MOV        R2,        #25                ;写入时间值2 l9 }* F5 l/ J
A1:& r" E, e0 ~( f: B! y8 V4 c0 f" d1 f
                MOV        R1,        #220                ;
4 F1 G4 Z) k! {  TA2:- o- h6 W! M0 {% P
                ACALL        BCD                        ;BCD调整/ i0 \! R; X1 D6 P
                ACALL        DISPCLK                        ;显示8 D6 {8 |/ Q/ ?
                ACALL        DEL1MS                        ;延时3 {6 l6 R" d9 o) @) S) ~, ~
                ACALL        DEL1MS                        ;# l+ D) P$ F9 H# Q* R
                ACALL        DEL1MS                        ;
* r. r% L! k8 y. D                DJNZ        R1,        A2                ;$ ^3 b4 K  q- @5 A2 d  r: [$ w
                SETB        FMQ                        ;        - `- T# C, q+ d1 z3 A
                MOV        A,        DAT                ;完成数字的减1操作) k1 K" @+ r7 }3 Z5 B4 t. P
                ADD        A,        #99H                ;
: }8 h# M8 [& N! o                DA        A                        ;
6 r6 q1 ]5 p$ A                MOV        DAT,        A                ;调整好的数字送显存
' c: F4 O  [5 O$ Q0 m. u4 M                DJNZ        R2,        A1                ;
9 @5 V  Y$ I! N# ?( v                ;最后5秒黄灯闪
1 I! Q+ c, z2 O/ F) \                MOV        P1,        #0FFH                ;, G- [9 s+ M9 |- @  U% p/ ]8 J
                MOV        P2,        #0FFH                ;关所有灯                                   & m, t" d+ S1 T8 D
                CLR        ZY                        ;黄灯亮. ]" ]. u" E) ^8 F2 `/ J, `6 \
                CLR        YY                        ;0 G$ v2 H: D  W' j" |1 M% q
                CLR        QY                        ;+ ^+ P7 h2 }! d
                CLR        HY                        ;
: c0 _1 I6 g% s. F/ N! \
2 m6 l* S/ B; G* i                MOV        R2,        #5                ;3 {4 _8 x/ w4 Z% ^3 s; q1 B% {9 D
A3:
* u: v+ z2 u6 F; a/ D. C8 u                MOV        R1,        #220                ;
/ D% N7 t. k! y: WA4:
# @* E* F2 r5 B( f" d, j                ACALL        BCD                        ;
7 D% _. r( r7 g4 _                ACALL        DISPCLK                        ;
4 e: [) L, Z: F) ^" z: ~                ACALL        DEL1MS                        ;$ I7 }8 L' Z8 I+ Y; y2 v
                ACALL        DEL1MS                        ;3 \% l7 U9 P! Y, ], i  J
                ACALL        DEL1MS                        ;7 ?/ }( ?0 [$ c: e3 T
                DJNZ        R1,        A4                ;
1 G& A6 G! A1 R; h7 {                CPL        QY                        ;南北向绿灯亮4 _0 b6 C, i& f7 n
                CPL        HY                        ;
2 ]0 \/ @$ w) X7 T: r5 e                CPL        ZY                        ;东西向红灯亮
7 M; }0 \8 d$ i8 G                CPL        YY                        ;        3 Y. y+ m3 a! ^5 K. I
                CPL        FMQ                        ;黄灯时蜂鸣器叫一声
/ j5 F/ K5 a) s3 R$ G8 c' j                MOV        A,        DAT                ;$ n$ F! p+ V0 K" n
                ADD        A,        #99H                ;
, J, _) M+ }/ f9 [4 K                DA        A                        ;8 I  q4 a- w  n
                MOV        DAT,        A                ;
( g7 W3 T1 ?) B, r) y8 \* W5 L# Z: ^                DJNZ        R2,        A3                ;
- T! I/ n# @/ _: S# \
; S7 B5 N6 {& F" o. W  F5 d* L. A2 A# f
                ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6 i; `- `& P. Y# q0 O" p+ ~3 [                MOV        P1,        #0FFH                ;" }1 I/ ?7 R5 J3 d& A
                MOV        P2,        #0FFH                ;. D, I. s; l9 ~
                MOV        DAT,        #20H                ;
$ P! |! g' J9 I$ P% s                CLR        ZG                        ;东西向绿灯亮' J  \. z( K8 G$ Z, T
                CLR        YG                        ;$ v$ {0 A( W( ?
                CLR        QR                        ;南北向红灯亮( J) [9 B" A3 [9 o9 ]
                CLR        HR                        ;1 d4 K3 a  O. i% n( P6 z+ G$ n, Z
                MOV        A,        DAT                ;+ u# |; s" {) N: G4 S- c
                MOV        R2,        #15                ;执行15秒
9 ]# d! }" K0 @7 NA5:7 t1 h' Y% _* K5 c; E
                MOV        R1,        #220                ;
6 c" D+ q4 `: ^9 [A6:
* v4 d4 e( m. {. r- T# r                ACALL        BCD                        ;BCD调整
! Q% A2 O. N& K0 \2 H                ACALL        DISPCLK                        ;显示6 \, U* d$ L" g$ S. d* K9 M
                ACALL        DEL1MS                        ;
+ i/ c' c2 B4 y; b                ACALL        DEL1MS                        ;4 v" ?8 P, b9 U' Z/ L0 k5 ~
                ACALL        DEL1MS                        ;* ?* v$ q' N: @& O  ^! |7 ]* I
                DJNZ        R1,        A6                ;
) D# w# y& V; {" j. w3 z5 {: \                SETB        FMQ                        ;        9 g# H7 A  e) V. c5 B2 j# Z1 x
                MOV        A,        DAT                ;
& o" t7 l5 Z" Q5 V' {- C/ s, z' n; K7 |                ADD        A,        #99H                ;减1操作! D- d6 y/ r8 u% _! n  j- u5 }2 e
                DA        A                        ;
6 Z. |6 B& v0 U/ g                MOV        DAT,        A                ;
0 Q4 b) ]; @& M( i$ X3 h5 e# n                DJNZ        R2,        A5                ;
2 J' W8 c" c9 Q( ?                ;最后5秒黄灯闪
5 }6 W) {6 m, k. u- w                MOV        P1,        #0FFH                ;
1 J& q) o2 J0 I& l2 C                MOV        P2,        #0FFH                ;关所有灯
8 o! I& E5 W( ^0 ?7 @6 T4 D6 x                CLR        ZY                        ;黄灯亮2 g' o, S) d+ X8 q8 ]
                CLR        YY                        ;
7 d1 _: F2 m+ W6 V* |+ }# X                CLR        QY                        ;
9 x! M. c) @. n2 v. D1 V                CLR        HY                        ;/ j- h( H9 Q. ^; c# R9 J" n4 D
1 W; `+ f1 b! ?) F
                MOV        R2,        #5                ; $ ?4 |  _$ F4 g: o) O' g3 \! x$ F
A7:* {5 W6 c0 z) v3 E
                MOV        R1,        #220                ;
+ E( c5 J9 I$ }A8:6 L3 t/ v# W" V. A9 }" w/ ^4 L
                ACALL        BCD                        ;# \5 C' Q4 z) j5 R5 C
                ACALL        DISPCLK                        ;+ N: e  a, Q! P/ C2 B) q) I
                ACALL        DEL1MS                        ;
2 B7 ^# N4 o8 j6 v# x- p* c: A                ACALL        DEL1MS                        ;
! s7 J  i; |% V; ^2 N5 X4 Y; X                ACALL        DEL1MS                        ;. v- F7 K+ }: t# C
                DJNZ        R1,        A8                ;
" D- j, c0 I% \% B+ W# C& _                CPL        QY                        ;南北向黄灯亮& }6 w7 H1 d8 Z
                CPL        HY                        ;
4 b1 U: Y8 x% z+ A5 g                CPL        ZY                        ;东西向黄灯亮
$ d6 {/ e+ W* P* e# H                CPL        YY                        ;        
% n8 c* k4 Q" _                CPL        FMQ                        ;黄灯时蜂鸣器叫一声
# ^( c. \6 q- O1 K" M  ^! s                MOV        A,        DAT                ;: D% ?: Y/ O$ Z
                ADD        A,        #99H                ;# G1 `% k8 }. X
                DA        A                        ;
, L# ?/ M+ H5 K; X" m                MOV        DAT,        A                ;3 X" W1 f. z7 G+ H. Y
                DJNZ        R2,        A7                ;
1 }2 C4 i# @: C& I                AJMP        AUTCLK                        ;
! p, d1 O$ R0 }. l                NOP                                ;
& a  ^  I- N6 p- e) ~. c                NOP                                ;/ t% k4 m( Z0 H! k" y! C9 f" s5 X/ T
                NOP                                ;$ S0 k0 {  F$ j4 N+ v7 Q+ @
                LJMP START
! O/ Z/ a: g8 ^" [) Y;;*********************************
5 _, x; V: F' j( D) `; o;;显示子程序/ z7 T: x, ?$ ~: b  u0 J1 i7 [) Z
;;**********************************           ' j3 u; ^- |9 R+ `+ \
DISPCLK:
6 o8 U9 }9 U$ [; b# f        MOV        DPTR,        #TAB        ;定入表头
3 ]* P4 ?0 Z3 h  t- i: }; x        ;显示个位
8 }' Z" s* l) y        MOV        A,        50H        ;! H) f) q2 F& S9 B4 N
        MOVC        A,        @A+DPTR        ;
+ ?, _! m; d& d5 Z3 i6 c6 ~9 l* B               MOV        P0,        A        ;3 b) C0 G, j0 X4 ^/ t
               CLR        SWITCH2                ;  个位显示
. ]$ X8 p4 v2 f+ @3 B9 [, Q               LCALL        DEL1MS                ;- S3 H, u3 Z/ [( E6 c, v1 J3 d
               SETB        SWITCH2                ;个位灭6 ?( q; o' }, R; R* S9 M& @! _
               ;显示十位% b8 V/ g9 h0 `; X
               MOV        A,        51H        ;! `, f$ {" y6 J; t6 ~
               MOVC        A,        @A+DPTR        ;
) z0 R2 J+ q/ K1 U: A4 z               MOV        P0,        A        ;8 `/ `' [: @2 ]" L  s- L* v9 r, z
               CLR        SWITCH1                ; 十位显示
3 y" }8 b! u( W$ p& k+ N" \               LCALL        DEL1MS                ;
8 `9 f/ z) w, c0 {0 q: V               SETB        SWITCH1                ; 十位灭! c- `  y" ]3 M" A) W$ p
               RET                        ;. I" U8 b: R  X5 j0 G
               NOP                        ;
$ F0 `* L" v* [& J               NOP                        ;. A. l" ]( ~1 e( F: h
               NOP                        ;- [* ]  \' B, h8 p. V
               LJMP  START# H; g5 V6 t: J& i
;************************************************************
( Q, m8 h) J# r, D2 w+ B;横向道路紧急中断程序7 r7 J, q" G" F  r: o1 J. w
;************************************************************- u( E' o' W0 e7 }! e2 S! J
D_X:
5 \* u! C, p; j( J% x                CLR        EA                        ;关总中断
7 i% w# d) k# V% N4 [                JNB        P3.2,        [        DISCUZ_CODE_19        ]nbsp;               ;
7 j9 O# |! i1 X6 j! G& D6 T                MOV        A,        DAT                ;保存显示数据
+ e" M8 [" K$ z/ O9 c                MOV        20H,        A                ;' a* `% F1 p9 Q: |3 o3 }0 Z
                MOV        DAT,        #50H                ;- p# `$ z5 c5 q( ?$ n
                MOV        21H,        P1                ;* R9 v$ v% H5 u1 _
                MOV        22H,        P2                ;% q0 E* j6 j) N+ V
                MOV        P1,        #0FFH                ;) R- Q/ U. z! y. i
                MOV        P2,        #0FFH                ;
- Z1 R  d. ?) s1 p7 I' `2 v; [                CLR        ZG                        ;东西向绿灯亮2 b( I7 i; N$ Y' V: a+ h
                CLR        YG                        ;8 y3 N8 A, Q* m( w* i
                CLR        QR                        ;南北向红灯亮
6 T) Z% F5 F3 s
. a9 R4 Q- F* x0 R
# ~$ _! O  y0 g& S  M! L$ O+ h…………限于本文篇幅 余下代码请下载附件…………# i4 R& T/ J/ F$ U- s
1 M8 p$ O/ c8 O' B. {5 R" H$ ]
游客,如果您要查看本帖隐藏内容请回复
) I& k- A3 A5 T8 \

9 @$ _, w4 K$ s3 {8 J+ `8 P  n8 O3 t# g% |& ]
5 M# T3 D  `( W" K: F

该用户从未签到

2#
发表于 2019-1-10 16:57 | 只看该作者
看看楼主的pcb文件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-8 15:01 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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