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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
交通灯设计 AD格式的原理图和PCB与单片机源代码# h; E0 |; }' e8 e) p
' e0 b  ?9 z5 K2 x, i" f
: `1 K2 O  ]! p
一个用51单片机做的交通灯的设计制作,而且带ad画的原理图和pcb,有c语言和汇编语言两种格式的源代码.5 Q6 e6 R0 D0 {

4 J3 R; Z' L; G: u& Oad格式的原理图:$ I( R% D4 ]3 O0 H/ h" i  S

8 O* L( d" I' i1 e/ [9 z( ?; \( _& p1 t
" e- Y: }- q4 C4 {3 ~) [1 H
pcb图:* [7 ^  N- O: I! M
5 ~" I9 f" \: m9 N) L- _& G3 }
单片机c语言源代码:

) p0 E8 Z# v. m/*        程序效果:单片机模拟控制交通灯程序,规则如下:当南北通车时,此时南北的绿灯亮,* u$ X" I% h9 S
东西的红灯亮,之后南北的绿灯闪烁3次,过后黄灯亮,延时片刻,转东西绿灯亮同时南北红灯亮,
$ N: H$ ~1 w$ {# w2 N( A之后东西的绿灯闪烁3次,过后黄灯亮,延时片刻;数码管显示的值都同步,结束。*/
' m2 w% J. A' ], p. u( J#include //头文件
( g: T9 b% z! H2 A/ _#define uchar unsigned char//宏定义
3 p. l" E# d8 A8 G#define uint  unsigned int
5 X1 t, X% U8 r, D/*  旧IO定义*/" I4 c( L' A- r2 I# V0 }6 {
sbit FMQ=        P1^0;                //蜂鸣器( J5 o2 P6 W$ [, m1 B
sbit QR        =        P1^3;                //北红灯
* c$ T7 Z1 E% x) v1 }sbit QY        =        P1^1 ;       //北黄灯
# y7 [6 l1 x! \sbit QG        =        P1^2 ;    //北绿灯" ~1 [6 `, E- _: j7 B' F) F  ?! V
sbit HR        =        P2^2 ;    //南红灯
6 l! c) i0 a6 G' d+ y( G6 nsbit HY        =        P2^0;     //南黄灯5 x" d+ C+ Y4 q: q: |
sbit HG        =        P2^1;     //南绿灯        
; V' u/ Z$ f4 T' M" ?, p! rsbit ZR        =        P1^4 ;    //东红灯
9 J  l* T4 f' g, C0 ?; |sbit ZY        =        P1^5 ;    //东黄灯
; e4 z* E( ], Y3 ~9 W- }sbit ZG        =        P1^6 ;    //东绿灯
3 T! C9 D" c* S3 x6 u" V- |sbit YR        =        P2^5 ;    //西红灯2 }5 o2 o& k7 ^' `! Y# w; E* \
sbit YY        =        P2^4 ;    //西黄灯0 r2 y& b! ]* B! U9 F
sbit YG        =        P2^3 ;    //西绿灯         
* m1 t  E; ]5 M5 M6 nsbit SWITCH1        =        P2^7;        //时间显示的十位控制1 l, ^, ?% L$ W, X
sbit SWITCH2        =        P2^6;        //时间显示的个位控制
! |3 Y( L/ ]( S( I/*        //新IO定义% y! w7 `2 {8 A: s( [
sbit FMQ=        P1^0;                //蜂鸣器
* J2 |2 Y, z8 z; T6 Bsbit QR        =        P1^1;                //北红灯
) o8 m- x. j- p% m$ dsbit QY        =        P1^2 ;       //北黄灯0 ^3 ^$ Y, }6 k
sbit QG        =        P1^3 ;    //北绿灯! X' r( t2 }4 P1 S+ G) B& U$ G
sbit HR        =        P1^4 ;    //南红灯, |  t/ f3 k+ j
sbit HY        =        P1^5;     //南黄灯
5 V' n9 N7 z  J  ]/ J  `sbit HG        =        P1^6;     //南绿灯        
. D% ]2 F4 e8 X1 X! N: ~! rsbit ZR        =        P2^7 ;    //东红灯
4 {3 D0 K/ _/ Ysbit ZY        =        P2^6 ;    //东黄灯
, Y( X% s, v: T( G2 Tsbit ZG        =        P2^5 ;    //东绿灯
, J! A2 T" |7 K, Dsbit YR        =        P2^2 ;    //西红灯. l9 c- l. q+ m2 p$ i  j: D; t$ g9 j
sbit YY        =        P2^3 ;    //西黄灯2 H% W* M) `+ }( ^& r. E2 ]2 P
sbit YG        =        P2^4 ;    //西绿灯         1 I6 w& M9 y& ^6 W
sbit SWITCH1        =        P2^1;        //时间显示的十位控制
# l3 C0 x) f/ z8 w) W( v  zsbit SWITCH2        =        P2^0;        //时间显示的个位控制
5 W4 t3 W3 @/ V: A( k7 V, c*/& }; h. h( ]* K8 M/ e$ }6 @9 v
//sbit P3_2=P3^2;
, S0 h! r$ W/ q; h& m& v% B//sbit P3_3=P3^3;; k! Y9 x3 L/ k, C3 `
uchar DAT;//显示时间变量
( p+ G& v3 V! X# B: M$ C0 Fuchar DISP[2]={0,0};//显示缓冲区
* j6 q! f  F3 L. y3 @uchar code table[]={0xC0,0xF9,0xA4,0xB0, ////共阳数码管段码表0  1 2 3
8 Q' b+ G3 N. P6 R* B0x99,0x92,0x82,0xF8,0x80,0x90,0xFF        //4 5 6 7 8 9 灭
, |# N$ ?( \  }4 `9 p};' E* @" [6 A1 e4 t6 z
void DISPCLK(uchar i);//显示函数7 I4 g# ]+ N' n2 `  E
0 f! s8 o- Y% I  [, Y

1 N- A! X5 ?1 ~1 d. rvoid DEL1MS(uint z)        //延时子函数6 n* Z5 U1 T* r' o/ Q$ g
{' f2 c: d3 x% X
uint x,y;3 O, z' H: I/ {5 M, V, C
for(x=0;x<z;x++)
4 |. u& I! B4 E" H: |+ z* H8 Lfor(y=0;y<110;y++);; u9 E- ?7 Y6 e5 h
}
, z8 u3 D2 T! P& w8 r  Svoid main()    //主函数
9 Q7 F2 ^  y9 i{    //  uchar i,j,k,m,n;//定义局部变量$ D) i9 s( Q' H/ F
     uchar i,j;
: |2 g$ U# m7 o& T( r( ?    TCON=0x5;  //外部中断为下降沿触发: T4 F7 W5 u# Z9 t7 r5 ?
         PX1=1;//南北方向高优先级
0 o  I% F. l* Y! g0 W/ X' n     EX0=1;           //! @0 p1 i3 X: P" y3 {: @# k
     EX1=1;    //开外部中断& L) T9 H  S" }& k- ?" k
     EA=1;     //开总中断) p0 I* n5 r3 R) R) V. [4 r7 {
        //IO口初始化7 C+ p9 C2 e0 p
         P0=0xFF;" \; M7 w& x, M2 l# E( E7 [
         P1=0xFF;( T' F9 s9 y. @( v; M
         P2=0xFF;
+ D0 B7 _. C+ A0 y& K5 }, ]" t2 I         P3=0xFF;        
( X1 ?8 n2 B# y; g         //DAT=25; //汇编0x254 _* X% D% `( m- f
   while(1)
; g8 ^1 q" z' w0 ?5 A& g7 L   {4 V- X/ _* z; o
          P1=0xFF;//灯灭! B! q9 }( ?' G* }! b7 _& i, h6 k, Y
          P2=0xFF;//2 D6 E6 b, @& Q
          DAT=30;//写入每一通路的通行时间- z. y  z4 e4 q$ \' |
          QG=0;//南北向绿灯亮
0 p* x: C" S! h  W3 S( m& o3 p          HG=0;
; a, i3 K% Q/ c& D0 I# y          ZR=0;//东西向红灯亮& b" T% W( y- E5 Z* I
          YR=0;
: }+ Y5 F3 m! C3 m1 ]) ]' N4 N5 T  /*5 k9 l; ]/ \; h5 w% X4 U
QR        =1;                //北红灯
' }2 q  M' s. e. Q* \  Q9 f% t QY        =1         ;       //北黄灯  ]! C" M: S, h  g# U9 U
QG        =0         ;    //北绿灯 QG=0;//南北向绿灯亮
# K  ~5 Z4 K7 r8 a5 Y. O6 l HR        =1         ;    //南红灯% R) i% ^0 }% x% A9 a9 b' a
HY        =1    ;     //南黄灯3 W5 b9 i/ H" U2 d: S& s2 }# C" i
HG        =0        ;     //南绿灯        
% V( B- F7 V/ I4 W3 C* T/ b ZR        =0         ;    //东红灯
* k& C& U2 g' K ZY        =1         ;    //东黄灯
* C/ O# t* A! J4 q# K ZG        =1         ;    //东绿灯$ V3 S% A) g: ?% c
YR        =0         ;    //西红灯, H9 v* v! r( C$ _% x
YY        =1         ;    //西黄灯5 B1 h, c5 p4 Q! [( x3 N0 u' z
YG        =1         ;    //西绿灯
6 B8 H) t* D& l' d        */  * ~" o  i* l& Q5 i3 }! @5 A
          //ACC=DAT;
3 w. `6 h% m6 y3 Z* `2 \8 S  k1 }5 O/ n; n  X+ |4 X

0 ^  I% d8 u1 C" i( Z" p& L          for(i=0;i<25;i++)8 Z0 F2 P- L. O8 D" c
          {        
' \5 V7 s8 f' B. m6 \" N( Y            for(j=0;j<220;j++)
' O  X7 k" F" v% T# g3 W3 I                {
* j/ u8 v2 ?2 n4 r- k                  // BCD();//BCD码调整
& e0 u3 y7 }4 \/ j                   DISPCLK(DAT);//显示
% U* d  B7 }+ \7 ^) p( _# F! O                   DEL1MS(3);//延时3毫秒   : V& Q. V5 X! Z1 o

" Y& ^& K1 Y7 ^8 L8 O/ n

0 ^7 N+ n+ }1 m/ h3 F" X( m                 }
, q- g" r% @% l                 FMQ=1;//蜂鸣器响
$ L; Y5 y! ~' P3 L                 //ACC=DAT;4 |9 j+ I" R2 o( v) d- C; s# M
                // ACC=ACC+0x99; //完成数字的减1操作
" {) j2 f1 e8 }4 V! D4 m
4 P% N8 V% n5 N. F+ u
& Q+ G2 S' N" F2 `+ m
                // DA A;//???        , }* C# h) f) {4 D- w
                 DAT=DAT-1; //调整好的数字送显存                 
" p$ ~$ B( Q+ A, R  f0 O8 ^- a9 v           }  Q* K7 R* }6 @1 M
$ c* I7 v! Q6 [" W  ?" k1 k" O
: r6 G: a: @0 v6 J
           //最后5秒黄灯闪
  D( B; P9 {7 |7 X. F, I5 ?                 P1=0xff;
+ P: ?! a, B% |' l' _- Z5 z                 P2=0xff;//关所有的灯" @8 [- E& S8 T0 M* I
                 ZY=0;//黄灯亮! P5 z& b9 M* I! M! a  s
                 YY=0;4 ]  e5 y% Z" j9 w" F  n7 T# ~
                 QY=0;+ {" h6 ^- x! a  e& p
                 HY=0;                  
/ b8 k4 y1 y6 b  `0 @6 g& y/ d                for(i=0;i<5;i++)
7 U2 M& K# Q2 c4 ]8 p+ O/ H+ |          {          R! j6 m1 }5 V% l7 X" {! i+ C
            for(j=0;j<220;j++)
  C6 s/ W* @  |6 I, F+ c                {! m1 D" V$ [, n: H( r( g$ {
                   //BCD();//BCD码调整; |  C2 W$ y! Z3 ~
                   DISPCLK(DAT);//显示
' r# ^! ~' b' g- C0 o+ @- f                   DEL1MS(3);//延时3毫秒
7 ^: n. P3 P. O0 j/ D                  
: [2 O9 [( \8 v0 c# ]. \                 }
( a6 |7 N; f) u) g' J( ~* j                 QY=~QY;// 南北向黄灯亮
# c8 S1 f9 I9 y5 k0 Y0 A                 HY=~HY;
" ~% `. V  S# M0 ?7 Z                 ZY=~ZY;//东西方向黄灯亮
3 {2 q( T$ J( S( e, [4 v1 S9 J( t# ^9 ]                 YY=~YY;  
. }4 h6 @- [7 v4 M  s                 FMQ=~FMQ;//黄灯时蜂鸣器叫一声
# M8 w* r) l. B; Y  n% P
0 f5 F" o; T1 r6 G

, g& |2 l1 F" C- h                 DAT=DAT-1; ////完成数字的减1操作,调整好的数字送显存         * F7 Z, R" B1 k6 V
                 - _# q: n8 C) @& N  a+ k
           }
7 }& V. I) {" U" w* b+ G/ P" a$ f% f2 W4 C. e" N

4 ]- C( K8 i' t( D/ u           P1=0xff;' L2 `3 K/ ^; M( ?& b, a
           P2=0xff;         5 B" X4 r, G0 q9 V
           DAT=20; //汇编0x207 |3 w6 _6 t) p/ E' X' E* B
           ZG=0;//东西方向绿灯亮
/ Z+ H2 Q: c( m: [( o           YG=0;
; Z9 R: X. ^& p           QR=0;//南北方向红灯亮
0 w6 O2 ^6 E) J6 |3 _8 H# o/ R( {           HR=0;
4 G% B$ t* E9 ]" ?9 m& `1 X           ACC=DAT;
+ P6 s1 g1 N& Z+ F9 Y' C+ P' O- Q+ \           for(i=0;i<15;i++)//执行15秒
& Z; u) \! I9 p* n9 |: t          {        & R9 v' x8 i- b2 \% }
            for(j=0;j<220;j++)5 y" t1 i# L* B) r
                {+ x$ I/ z% W8 J& @
                   //BCD();//BCD码调整( R/ l2 C" m0 F, F. b' y$ K" \
                   DISPCLK(DAT);//显示
' A+ ^: g, d  K. W2 C# x+ Z' U                   DEL1MS(3);//延时3毫秒  
- ~( k7 C. u6 I9 R# P8 s; w0 b                 }
1 P/ F6 D2 H; u& v! A/ {$ q                 FMQ=1;//蜂鸣器响
8 }: ^4 O0 e/ J" X7 h) j* A3 ^             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存
. o1 B& ~  w7 V               
7 ]% F0 P2 w6 z% C5 x5 |" n           }
6 ^" v8 P" \/ v0 @, p4 d( g                 //最后5秒黄灯闪' C/ l& s; N( K* ~& M* f+ j
                 P1=0xff;# _9 D) v, E0 i: F) Z
                 P2=0xff;//关所有的灯# {5 t- z- {0 \2 S$ l+ x9 b
                 ZY=0;//黄灯亮
' N; G8 F% s2 X. Q6 a* n                 YY=0;
! D- E# o) ~" ?# |: g3 h                 QY=0;% w9 r& `5 N- N3 c) T2 X. `% m
                 HY=0;
) I' h- X" e. c  b; ]          for(i=0;i<5;i++)
' F" C. A% U& {6 o) R          {        
3 m! \; n' V' {9 w8 y" b            for(j=0;j<220;j++)' P8 G( W& f* B! A% x; k9 V! I
                {
9 \' u8 m% Y$ L                   //BCD();//BCD码调整& V, o& r9 L& w8 ~$ w
                   DISPCLK(DAT);//显示
) `3 O3 X) i* H4 T9 @                   DEL1MS(3);//延时3毫秒                    
* H+ a' p' v! L# f: ^! L                 }2 s8 n8 e5 U  }3 K1 c9 I
                 QY=~QY;// 南北向黄灯亮3 |- K6 F. M' u
                 HY=~HY;
+ ]! X! S' j3 g8 h8 n" R7 |' V                 ZY=~ZY;//东西方向黄灯亮
- p2 }. B) g" n& J9 _                 YY=~YY;  , B: k0 M% Q5 O# M
                 FMQ=~FMQ;//黄灯时蜂鸣器叫一声. ^6 ^5 z% f5 r0 c
% N- h* W+ `, U5 q3 E7 o2 w
" H$ n9 @- R8 w! X- ^# H; T
                 DAT=DAT-1; //完成数字的减1操作 ,调整好的数字送显存         ' v4 w7 x5 R$ p# D6 e# L! \
                 
# p' D" }6 e9 F; H           }
) f+ B& O' p+ E+ }        }         
3 d2 g6 q, d3 ~6 f7 W+ s                 , d% k9 P8 L; C- f8 O: L) w) l/ f
}4 j- H* a8 r8 z
( C" l, G' X$ Q9 }+ _& v

& @* C% W; i$ U. O# R5 }& Cvoid D_X()  interrupt 0 using 0        //东西(横向)方向道路紧急通行50秒中断程序
$ B. U/ Z6 z1 p{        
, v! c. a7 p$ J        uchar i,j,temp1,temp2,temp3; //定义局部变量
5 w( Z! V7 g) t' B" w, X         EA=0;//关总中断
7 L6 h; |5 V& s6 l+ t        P3_2=1;, V1 n) X: O0 S& D0 J
        while(!P3_2) ;//等待按键释放5 A1 A8 P# |# D/ e& _
        temp1=DAT;//保存显示数据- n" E' p2 M, {# n; F4 y' q' P, F1 ?4 c
        temp2=P1;
- K0 C) r2 W' s5 n  l4 \        temp3=P2;$ ?; O/ R  o" l+ |/ R+ X( [2 a- ]
+ {3 q5 R4 A/ U1 f1 @+ S

6 \: m, ^2 ^- P        DAT=50;
# w( q# Y2 V' ?7 v1 T        P1=0xff;
# p5 Y* g- M0 `        P2=0xff;$ I8 X9 X% P+ H0 Z3 L/ b5 M" j
        ZG=0;//东西方向绿灯亮$ g3 ?& a0 q4 [" `
        YG=0;
0 J* H! R0 T1 p* V        QR=0; //南北向红灯亮
4 E! N' ?! r' K- u6 w: ~        HR=0;
" n# |. j3 v, P; t9 N9 {        
  B# J8 O2 i' L0 `9 z# X         % }" T- w( k5 M0 s& j, U4 v
        for(i=0;i<50;i++)//执行50秒" Y( d8 D# e; ]1 T
        {        
+ F" U. w7 q3 \7 r1 y            for(j=0;j<220;j++)0 i7 w1 @6 C; n$ \: W
                {
5 S% `) H6 k8 s2 m% F8 w                   //BCD(DAT);//BCD码调整" T' M% ]* ^% J) h- J5 g
                   DISPCLK(DAT);//显示2 m1 W0 x/ G: A& K7 r, N" Y- x
                   DEL1MS(3);//延时3毫秒6 t! e+ R7 I9 j* r
                 }( R) t, N4 T: Y# E7 d
             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存               
5 ?# n6 v0 R% R* n/ F         }
! \/ F8 a7 n* J+ `$ x6 Z* x        DAT=temp1;//回复显示数据7 x, D4 P! v# k
        P1=temp2;
7 R% ~. p  M- H( v* q. \3 {+ V$ f1 Y        P2=temp3;# r' r; |+ J9 g9 l2 C
: w7 ~8 S; R  W/ a

* p% d0 a, Y! i9 c        EA=1;//开总中断
2 C  _5 p* {$ e) b% ^ }
4 C& q; P( D! b" u: Z, C3 O4 K4 {) s  p
" v$ r0 h3 S( l+ P5 U6 C4 R
void N_B()  interrupt 2 using 0         //南北(纵向)方向道路紧急中断程序
/ n8 M, c( y; r2 C{        
2 i$ ], @) P% X6 U6 @% |/ K         uchar i,j,temp1,temp2,temp3; //定义局部变量: P% ]& ~; ^! y/ q
        EA=0;//关总中断
4 j( H- o3 x* N: r" V7 ^        P3_3=1;
8 S% [5 H( F9 b$ W( J        while(!P3_3) ;//等待按键释放+ ^- R9 g3 `9 k7 \* a6 A/ d
        temp1=DAT;//保存显示数据
0 E0 j5 z- Y5 ^$ S% J        temp2=P1;
+ z) G7 k( u  _% d        temp3=P2;0 {8 T  l4 Y3 W( b# |

" p/ C/ l6 v  i- T

3 W" }( r) e  n        DAT=50;8 k  l: k6 v2 |& ^0 G3 ^
        P1=0xff;  |5 G% w, T$ v, I0 q' v
        P2=0xff;4 G8 s0 d% X" q* J; @3 \& O
        ZR=0;//东西方向红灯亮( |! X" V: B1 s, r: k9 ?" V# f
        YR=0;
6 \% r) Q0 b7 @' U" ^4 q% Q        QG=0; //南北向绿灯亮
0 Q  o& m$ F3 Z7 M& @0 \3 a% B& H        HG=0;         
* x2 e# C% z8 s4 A. _        for(i=0;i<50;i++)//执行50秒6 L* `7 L7 r' D' u# O+ F
        {          z8 ^) I8 ]; p/ d
            for(j=0;j<220;j++)* E! B, N/ v8 @# o8 E6 e! U0 i
                {
8 `# @3 r) x: P                   //BCD(DAT);//BCD码调整, @7 a( o: P& b
                   DISPCLK(DAT);//显示
6 O2 V# }6 q0 ]( }. ]1 S                   DEL1MS(3);//延时3毫秒
3 a) r& y) ^: X8 d                 }
" g; z* q. `5 S+ X; S4 s             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存                9 r+ r, J' B7 R$ k
         }3 C; _2 p( @, W% k9 g; E& U
        DAT=temp1;//回复显示数据
' ^2 f+ ]* _2 S$ `        P1=temp2;& O$ L( v8 V$ x2 ^: ]7 S
        7 _0 g' U7 V/ v' y

* G  o* n* Z$ i
' s' n+ t& `& H: ]4 G
…………限于本文篇幅 余下代码请下载附件…………
/ H0 A* \2 \$ D6 \; H1 ?
& \; I! ]1 O8 g1 u# S6 N; s
, G; ~/ p( p  Z- l+ A

/ U- ^! G: F& h, C$ G& j, v+ w
7 x1 W9 E/ X7 a, q
汇编语言单片机源码:# d1 C% C& f3 p; L1 r1 k7 @

) d1 C# g; l1 ~;智能交通灯控制器程序
. g( ^1 W+ w4 n; M                ;以下程序完成各脚的预定义
$ f* ~- A  c% |7 _; h8 O9 k                FMQ        EQU        P1.0                ;蜂鸣器
# i1 d/ J) S$ w                QR        EQU        P1.1                ;北红灯' w1 u) B% Q2 T# i6 C& L
                QY        EQU        P1.2                ;北黄灯
" V; C9 R1 i/ g; w( [" Y                QG        EQU        P1.3                ;北绿灯, [2 `. k$ k2 U
                HR        EQU        P1.4                ;南红灯% ~2 |& I- n2 e) v2 h4 R  o
                HY        EQU        P1.5                ;南黄灯
* J' P* T! ^+ f4 M9 [                HG        EQU        P1.6                ;南绿灯        
+ ^* b5 Q6 @5 u# D                ZR        EQU        P2.7                ;东红灯
% r# C; O+ G1 d4 G# J3 g" p' z3 }! ?                ZY        EQU        P2.6                ;东黄灯: r4 m% ]/ K2 Z/ r
                ZG        EQU        P2.5                ;东绿灯                , `0 E! S) M- b
                YR        EQU        P2.2                ;西红灯
  ]; A# h# O: X                YY        EQU        P2.3                ;西黄灯                : r( k. P' V9 ~% Y
                YG        EQU        P2.4                ;西绿灯
, F" G# G5 _$ W                SWITCH1        EQU        P2.1                ;时间显示的十位控制               
* Q5 i6 a# U/ B0 `. r3 e8 }- f5 B6 _                SWITCH2        EQU        P2.0                ;时间显示的个位控制
# s- J3 t3 c) ]2 {" S* R
1 U3 S! t' S% c, Z" b0 _                DAT        EQU        60H                ;显存
, `. G2 j3 p! X2 B# P! S( o8 c4 z) L* h/ o, j0 V
                ORG  0000H
+ ~' W# k6 Q. s0 b! W) _( K# v                 LJMP START
  a% s; M0 C* z  F+ V                 ORG  0003H
9 O: ]. d4 O& ?0 Z                 LJMP D_X                        ;外部中断0,东西向紧急按键8 i/ S6 n- i5 O
                 ORG  000BH
9 x$ g; d7 t& r; V% E+ n5 s6 j                 RETI                                ;
6 z" j: _3 S# e# ^5 D/ _                 ORG  0013H7 t  U* b, e5 d& ~5 q
                 LJMP N_B                        ;外部中断1,南北向紧急按键
4 U7 k2 ~/ N$ U; `6 C6 F% D                 ORG  001BH( v  z- u2 ^8 n. ^/ t" F( E  |
                 RETI
' z' P- x8 J9 S                 ORG  0023H
! M2 V$ c% d* p5 B0 K5 ?- e8 u, z                 RETI
/ ]5 v1 _" L$ l# `  x2 Y% A) i) D
% v6 x* P% k' \+ n. h                 ORG  0040H                        ;定位$ O" i3 d' J8 H/ x2 O5 S: e
START:
* f$ p% R/ m: p* c/ m
5 i8 s/ `9 |+ N- ?9 N" o                MOV        TCON,        #5H                ;外部中断为下降沿触发. z5 o! O+ m* L1 F1 ]" R0 c7 _- H' P
                SETB        EX0                        ;  L( P4 j7 A- C" @5 F: h
                SETB        EX1                        ;开外部中断& N7 r& I+ ^. \/ V" ]4 z
                SETB        EA                        ;开总中断
. l# D3 i& i9 e/ V& s% M" c                ;IO口初始化
% n. v+ P* a7 S# L( E, U                MOV   P0,#0FFH
4 G" w- p  N7 i/ f                MOV   P1,#0FFH                        ;' |4 P% ?+ n  R! S: A. y* P
                MOV   P2,#0FFH   ;, T, H: d8 F' H' X/ H
                MOV   P3,#0FFH                        ;
8 v9 k& l1 S/ Z+ ~9 a; d                MOV        DAT,        #25H                ;3 C, [' c: z+ A/ @& W2 Q
+ H2 y0 |- f) P4 F) a0 q) A
& A8 a5 k$ Z  y! e! p- Q; O
AUTCLK:( u5 m0 t# _6 r0 y
                MOV        P1,        #0FFH                ;0 j5 N" O6 f6 L" Z
                MOV        P2,        #0FFH                ;  
3 b. ]7 K& Y3 I0 ~: E                MOV        DAT,        #30H                ;写入每一通路的通行时间
( m" G1 f" Q% {9 X8 V1 T                CLR        QG                        ;南北向绿灯亮2 }$ `6 w+ ~- y; I# P! G
                CLR        HG                        ;8 ]  N' f: t! X$ ]$ q: d
                CLR        ZR                        ;东西向红灯亮: ]& Y' [3 k9 S0 Z1 f7 c$ k
                CLR        YR                        ;
# z; _$ i, y- _8 T" Q1 s) o2 q/ G+ R8 ]) b( N0 V
                        MOV        A,        DAT                ;
+ X" X/ p" i# m$ y                MOV        R2,        #25                ;写入时间值
4 j0 O2 Q5 l1 F6 P; {1 }A1:- S  @: g: n' L
                MOV        R1,        #220                ;
! s+ p3 ?; R3 e' rA2:+ @9 I9 i, U6 X+ v: L* i
                ACALL        BCD                        ;BCD调整9 P- q' f8 X/ p5 G. T7 p' h
                ACALL        DISPCLK                        ;显示0 C) A9 p# i1 m9 ~
                ACALL        DEL1MS                        ;延时4 M5 f* e) g" M6 [- a' w9 J  z
                ACALL        DEL1MS                        ;
& T$ M, r" ~1 J: |                ACALL        DEL1MS                        ;
( k5 P# @, p# b( z9 s& l                DJNZ        R1,        A2                ;
+ E" c4 V" @2 w+ ^7 r                SETB        FMQ                        ;        : ]* Q; M" D' b8 U& [1 N5 h
                MOV        A,        DAT                ;完成数字的减1操作
' c8 u; [3 p6 p                ADD        A,        #99H                ;2 R* A  q0 p* b4 g( V- w) a
                DA        A                        ;
9 H/ f6 S* s% \* Y" Y                MOV        DAT,        A                ;调整好的数字送显存5 ]8 R! v* a# ^3 d
                DJNZ        R2,        A1                ;, s' Q; k+ l* a8 X& a6 L9 X
                ;最后5秒黄灯闪$ m9 _8 ^( u4 ~9 `
                MOV        P1,        #0FFH                ;
0 m4 E" ^  }* S                MOV        P2,        #0FFH                ;关所有灯                                   
$ C: I. m) M, ?, H* a: R                CLR        ZY                        ;黄灯亮0 C, V( C: l* h7 \' k
                CLR        YY                        ;
+ {; @- h* b: z! t$ t                CLR        QY                        ;
: v( ]/ t, o% U2 R" r                CLR        HY                        ;
5 Q1 I& R( z9 _/ E  |5 ^' e
- q, ^" t) t6 t                MOV        R2,        #5                ;8 V. i  o+ O9 Q$ o9 I8 `
A3:& Z9 x2 S' B# K/ U" D% o; W
                MOV        R1,        #220                ;
  h" F6 ]5 P, yA4:: @  y. C% ~: A2 g1 j
                ACALL        BCD                        ;, U( X( {5 c$ V  ?) O
                ACALL        DISPCLK                        ;
+ D% N; ^' z8 ^                ACALL        DEL1MS                        ;2 Z* h5 |8 i8 P2 I; @- L
                ACALL        DEL1MS                        ;
2 |5 Q" c, Z( n* c: R                ACALL        DEL1MS                        ;
5 N: P) ~# G+ W' M/ n! u- h9 j                DJNZ        R1,        A4                ;
. f1 ^) J2 F6 R) }" V  k7 ~7 p5 {) T                CPL        QY                        ;南北向绿灯亮$ Q. w7 `" P7 {6 E
                CPL        HY                        ;
* d1 v7 `) ]) y% j! G& Y2 s1 G                CPL        ZY                        ;东西向红灯亮+ w# \! r8 o' x) x8 b. g7 k
                CPL        YY                        ;        
5 m! w( d7 V8 l- s. {                CPL        FMQ                        ;黄灯时蜂鸣器叫一声
* ?5 X0 t- _; b: G/ f6 c" p                MOV        A,        DAT                ;- t- D) ]: q8 V# E' Y0 s% P
                ADD        A,        #99H                ;( U2 @' S; ]1 E  G6 i
                DA        A                        ;
- V5 J$ e$ ~# H, y( p$ T/ m                MOV        DAT,        A                ;
: c. s7 i8 H  |# z                DJNZ        R2,        A3                ;
3 s' h9 _/ Q7 m) j$ R! [' b& {, Z. X/ e$ M

5 b# i; {  I1 J  o, X7 z                ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@! i: p3 w" \# f' f  ^4 M
                MOV        P1,        #0FFH                ;
3 x6 k* Y3 ^' a5 H0 i5 Z, H5 s& a                MOV        P2,        #0FFH                ;: P6 A% _2 i: F* ]% q3 O
                MOV        DAT,        #20H                ;" \- E; _: G) u0 @2 e/ ]& r
                CLR        ZG                        ;东西向绿灯亮9 r  J# K2 [6 I2 x! L
                CLR        YG                        ;
+ i- m+ c# w( x                CLR        QR                        ;南北向红灯亮& |4 O7 b" O6 |9 j
                CLR        HR                        ;# G4 V, T9 j+ R4 L: v
                MOV        A,        DAT                ;
7 D6 W1 I1 q+ o1 O" f2 i# D( a# M                MOV        R2,        #15                ;执行15秒2 K" S0 m& y+ B; t2 v& ^4 }8 H8 E
A5:0 f% G7 q8 a9 }) Z0 S  q. J
                MOV        R1,        #220                ;
8 e0 _; p: H5 e. i9 e- UA6:5 Z$ ]9 |$ I  Y& b" E- B, r3 v7 I3 [
                ACALL        BCD                        ;BCD调整
! y8 c5 I5 l0 Z* B                ACALL        DISPCLK                        ;显示/ _6 @4 ~! ~0 H3 N0 l
                ACALL        DEL1MS                        ;5 `3 t6 `  H- @! n  Z6 I
                ACALL        DEL1MS                        ;4 `5 M3 R/ K0 x& ^( S* j# r+ V: S
                ACALL        DEL1MS                        ;0 ]- e  u, i  J  t, z
                DJNZ        R1,        A6                ;
4 ]4 r3 ~0 V* V, C' P  v2 }                SETB        FMQ                        ;        
2 `2 m! A# @* ^  @6 S1 ]) s. H9 c                MOV        A,        DAT                ;
4 m  I" m4 B, w6 V( X- s9 \  h7 p) \0 l                ADD        A,        #99H                ;减1操作
" Q3 J7 J, C9 ^( {7 h                DA        A                        ;
: Y6 m& J& D# Y4 R8 E( R                MOV        DAT,        A                ;
- h6 w0 W8 P+ U6 Y/ y# T! a                DJNZ        R2,        A5                ;* A/ A1 l' u- _& t% f
                ;最后5秒黄灯闪& d* R) t3 ?8 c- C2 W+ z- R' E. r
                MOV        P1,        #0FFH                ;
/ `2 n: E; d$ C8 s5 f  O! H                MOV        P2,        #0FFH                ;关所有灯$ k  w( D+ O$ T2 L- \5 O4 ^  {: Q3 O
                CLR        ZY                        ;黄灯亮2 ]. J- R7 j* m+ J$ ~
                CLR        YY                        ;: B) @& I# s2 f8 n( s& I  _
                CLR        QY                        ;
& F( x) `1 b0 {9 g1 W                CLR        HY                        ;
! j4 I! S* e3 W) _2 x  ?; B7 C
% p2 k/ X( k. J! \/ Z  y1 p8 o                MOV        R2,        #5                ;
& \  E0 C4 @4 K% }6 k( yA7:
3 V8 s+ d! p* V& v, w3 F8 |                MOV        R1,        #220                ;. }1 i" V2 ?8 I
A8:1 K  H" s: ^- L" e2 p) ]$ t& ~
                ACALL        BCD                        ;
2 a' w- d  F7 f! e4 l                ACALL        DISPCLK                        ;
% J% h: f* a" _, L  l                ACALL        DEL1MS                        ;
0 z$ m6 w) U4 ]3 y$ t                ACALL        DEL1MS                        ;" Y; C8 V% C' v1 e+ j' b2 \' Q1 y
                ACALL        DEL1MS                        ;9 w/ d5 G1 M8 y
                DJNZ        R1,        A8                ;  b, S6 N6 R& S/ t2 S$ n3 t
                CPL        QY                        ;南北向黄灯亮0 e3 n% j9 @  l0 N
                CPL        HY                        ;
# b" {8 h7 d6 k% H                CPL        ZY                        ;东西向黄灯亮" H- E( R8 a2 O9 b  u% E- F
                CPL        YY                        ;        7 s* ]+ n7 c& u1 p( _
                CPL        FMQ                        ;黄灯时蜂鸣器叫一声6 }* G) A, s5 b) m
                MOV        A,        DAT                ;
4 e$ Y* W' ?- m; k4 }                ADD        A,        #99H                ;1 u, M5 F; I  U( R3 \# k
                DA        A                        ;
; |% K( H* P7 n9 L7 K" j1 Y                MOV        DAT,        A                ;8 l1 {' l: h* q. w, n5 |0 v+ l
                DJNZ        R2,        A7                ;
  E/ r% [1 M' |: D( F% M                AJMP        AUTCLK                        ;) F( R1 @& V) M; \5 K
                NOP                                ;
' G: [. a) G: F+ @4 [! @/ `0 ^% r2 `" k; Z                NOP                                ;7 p# o7 U# {9 i
                NOP                                ;
: r; R+ e8 z* h  V% W0 p. S                LJMP START0 G- |; E1 E% a6 ?+ Z
;;*********************************( h" U" J( W8 b0 A5 {- T( ?3 S1 f
;;显示子程序+ e3 z  D8 c4 P' m
;;**********************************           
& Y6 _9 R! I/ R: e3 ]DISPCLK:
* v( h- f7 [; c5 K        MOV        DPTR,        #TAB        ;定入表头
. g4 N0 m5 e4 S! Y        ;显示个位+ f' S0 Z7 O$ b. |( R$ G2 D2 o% N
        MOV        A,        50H        ;* V& j% _% M! |) F% P
        MOVC        A,        @A+DPTR        ;
# e- ]: K; T- _6 _1 X  G               MOV        P0,        A        ;! h; w% r7 K) f  A: L
               CLR        SWITCH2                ;  个位显示
# _( ?! I& ]# g. B+ V" L               LCALL        DEL1MS                ;
& a5 y9 J7 \* ^1 ]9 e/ O               SETB        SWITCH2                ;个位灭
  ^1 y' W. r1 G5 J* `# |& S6 p# c               ;显示十位  `6 R! d' F% p
               MOV        A,        51H        ;
3 @8 Z* ^  h! a/ {* j0 }9 I               MOVC        A,        @A+DPTR        ;
1 ~: T0 {% S5 C! o6 O' k! O$ J/ h               MOV        P0,        A        ;
+ J3 X; v  l; [8 R# c               CLR        SWITCH1                ; 十位显示
( Y$ m- w+ P% V$ n9 r) n4 h1 V               LCALL        DEL1MS                ;" }0 b  d8 n' T, H% u, M: u9 k
               SETB        SWITCH1                ; 十位灭5 E; N2 }, _; |% _
               RET                        ;
8 J2 [  Z6 Q7 i1 R, i$ i; s               NOP                        ;
: u0 H9 z, z  L! T2 }  s               NOP                        ;
9 N3 |9 {1 P( K/ C9 h               NOP                        ;
0 h7 S0 e* v& p& T, ?( M1 Q; x- P- m               LJMP  START
  @, T' F, `0 W( X;************************************************************! r# N" x' U, G4 X4 K. x! M
;横向道路紧急中断程序
* m- {! p& b- _;************************************************************; D3 F* ^+ ~# ?% T% s! @7 g
D_X:& Y0 I$ t& Z, e% A* ~8 R
                CLR        EA                        ;关总中断7 r% G/ z4 U: V* Y' R0 ~5 S
                JNB        P3.2,        [        DISCUZ_CODE_19        ]nbsp;               ;
+ m6 Z) V0 y: L* Z# u, w1 m                MOV        A,        DAT                ;保存显示数据1 v# l( ?8 ]+ W" [, c6 s, m" |
                MOV        20H,        A                ;
7 l5 b+ _, m- c' M0 r* U                MOV        DAT,        #50H                ;
& |& _' M6 p( }- h! v; m. [2 G1 ^                MOV        21H,        P1                ;
, P1 f/ d% H; n                MOV        22H,        P2                ;: W! s/ _: S+ P( W) m$ A- `
                MOV        P1,        #0FFH                ;$ q6 V1 @' h9 n/ G
                MOV        P2,        #0FFH                ;
. C% \$ S' ?- R* C9 `5 E: C( I                CLR        ZG                        ;东西向绿灯亮
$ z- T! h& Q9 b+ E, W9 L                CLR        YG                        ;
3 ^$ u  j! K  g5 @                CLR        QR                        ;南北向红灯亮
( I' j, s+ k& U. _: m
, _: K$ Z4 b3 c: L( V+ \. ]
, l* v% M9 _- a7 N5 U…………限于本文篇幅 余下代码请下载附件…………
1 ]) `- u+ b, F5 l1 f! v" e) q0 O0 k: [4 G
游客,如果您要查看本帖隐藏内容请回复

7 s# N0 |2 H$ {2 N- R1 l* D

1 _7 q$ \+ K& `( d
& n( J- c  S& b
& u8 z- [0 W# a/ X2 Z# Y

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 06:20 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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