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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
交通灯设计 AD格式的原理图和PCB与单片机源代码
+ ]) l5 [% R1 n3 F
" \! W  }3 F' B# ?6 q8 ]+ _. t6 i

( N9 S/ S, ?9 {) |一个用51单片机做的交通灯的设计制作,而且带ad画的原理图和pcb,有c语言和汇编语言两种格式的源代码.
% b+ Y8 D) |& {! U; v; F) u7 f6 ~/ c' j; ?) j" M$ C% }
ad格式的原理图:
3 l  b9 E: P% z+ i9 H2 w
, a  A6 H1 a, H* u" M* Q' d$ F: K. a# i
/ l( d' P0 p: J' S& U
pcb图:
7 R* N1 \# Z& i4 q% {$ w: X) ?
" }3 l1 U7 s1 _- D+ m7 W单片机c语言源代码:
& E3 J8 j& Q  f* V* _. e7 g/ s+ Y
/*        程序效果:单片机模拟控制交通灯程序,规则如下:当南北通车时,此时南北的绿灯亮,$ @3 K0 y, ]8 M- D3 f! L8 [0 C
东西的红灯亮,之后南北的绿灯闪烁3次,过后黄灯亮,延时片刻,转东西绿灯亮同时南北红灯亮,
. d6 k/ m' h: v: i# w& R" X之后东西的绿灯闪烁3次,过后黄灯亮,延时片刻;数码管显示的值都同步,结束。*/( K' ~+ y, w  S
#include //头文件
( H0 @5 ]" c+ A/ N- Z, C- q5 d; t#define uchar unsigned char//宏定义. q! `9 z# H) p+ h
#define uint  unsigned int  F% T7 ]/ L( w0 [, x& c7 q; v; N
/*  旧IO定义*/2 k* \+ Q2 P/ c! v) L
sbit FMQ=        P1^0;                //蜂鸣器
) r3 O7 }, k, t  r8 h+ Ssbit QR        =        P1^3;                //北红灯2 M6 Q6 N, @  l8 Z6 A9 d2 x* _
sbit QY        =        P1^1 ;       //北黄灯
9 T8 W% D2 S9 V2 I* Z4 \5 e- `sbit QG        =        P1^2 ;    //北绿灯
. K/ @6 x  I: R1 Isbit HR        =        P2^2 ;    //南红灯, J, D' G1 Q3 v  ^0 _; W3 c
sbit HY        =        P2^0;     //南黄灯
0 b# V( y5 I# m  P! e  r3 G+ `sbit HG        =        P2^1;     //南绿灯        * l0 @( b7 V0 \
sbit ZR        =        P1^4 ;    //东红灯
' [1 D& B7 h; }) bsbit ZY        =        P1^5 ;    //东黄灯# m: }: ^. }+ K$ \2 s, j. t0 L
sbit ZG        =        P1^6 ;    //东绿灯
& A, l. t; d. \sbit YR        =        P2^5 ;    //西红灯
. ]2 n# _, j! B5 ~4 b  esbit YY        =        P2^4 ;    //西黄灯0 o' Y4 ?* t1 j4 i
sbit YG        =        P2^3 ;    //西绿灯         " a* F+ `) s( ^$ x+ @+ P
sbit SWITCH1        =        P2^7;        //时间显示的十位控制
+ e# S9 B6 u  d% Jsbit SWITCH2        =        P2^6;        //时间显示的个位控制
7 q; Z  W+ V9 B1 i' f5 C$ x/*        //新IO定义  p3 s* O& m, \5 W4 y
sbit FMQ=        P1^0;                //蜂鸣器3 v/ `7 }8 s* b( ^
sbit QR        =        P1^1;                //北红灯
. @& b* o; y0 v, ?sbit QY        =        P1^2 ;       //北黄灯
! B) @* v3 u% F7 i7 ?sbit QG        =        P1^3 ;    //北绿灯
- s8 V2 w) P- Q$ h1 Tsbit HR        =        P1^4 ;    //南红灯/ g) @* a: P0 T2 a. r& y% N
sbit HY        =        P1^5;     //南黄灯
* U# q$ Y7 J1 w! J$ n3 ~) Rsbit HG        =        P1^6;     //南绿灯        
) W( y3 ^4 D! J  D: K" ]5 q* Usbit ZR        =        P2^7 ;    //东红灯2 @2 f: g) ^9 l- I
sbit ZY        =        P2^6 ;    //东黄灯1 K5 |% |# |% O8 \  _
sbit ZG        =        P2^5 ;    //东绿灯
& Y$ y$ t8 i) n/ fsbit YR        =        P2^2 ;    //西红灯1 h" o4 I) C6 m6 C; M
sbit YY        =        P2^3 ;    //西黄灯6 |5 u1 \* k& T' y( D
sbit YG        =        P2^4 ;    //西绿灯         - V7 M; ]: K6 i) ~% `
sbit SWITCH1        =        P2^1;        //时间显示的十位控制
. {+ e4 P' d, a1 h# t* gsbit SWITCH2        =        P2^0;        //时间显示的个位控制
' M& A0 I* Y7 H9 [( V1 x/ G; z*/
0 H0 I/ p, X  M! e% D* [$ V" H+ ]//sbit P3_2=P3^2;. u" ^; o: I/ U0 T# N5 K( X2 c
//sbit P3_3=P3^3;$ ~7 S* S4 \, A% T1 j/ P
uchar DAT;//显示时间变量
$ j5 W) S. ~6 R8 C, f$ `8 yuchar DISP[2]={0,0};//显示缓冲区; A- O* s( J% a0 l
uchar code table[]={0xC0,0xF9,0xA4,0xB0, ////共阳数码管段码表0  1 2 32 s# o0 Y; c" p5 @& S+ I
0x99,0x92,0x82,0xF8,0x80,0x90,0xFF        //4 5 6 7 8 9 灭1 L5 s8 S# Y/ t2 c* R& w# s
};5 ^# j7 ~9 X! ?  ^; F8 A& m
void DISPCLK(uchar i);//显示函数
  y% W2 W! {! D  S( Y! p8 |; Z: o( k& C; P) p

0 h5 s! }5 V2 F7 z/ x1 L/ @void DEL1MS(uint z)        //延时子函数
0 Y4 `: r; w% B* L{  B) Y4 }( @8 k' A5 C% w
uint x,y;
( w( M3 C3 i0 ^) I( Hfor(x=0;x<z;x++)
8 w; d6 [2 {$ Z% ]3 D) jfor(y=0;y<110;y++);
4 I' P7 \, A" R. a3 J; p}- }9 C4 v! S+ ]4 G2 P2 E
void main()    //主函数
' w: I9 J. x! c- e9 D1 C{    //  uchar i,j,k,m,n;//定义局部变量! O6 `% \: x; C. @2 l' h+ x
     uchar i,j;( N1 i2 a' B% l' z0 G- P. I
    TCON=0x5;  //外部中断为下降沿触发# h; K$ @4 F2 K- I% D1 x
         PX1=1;//南北方向高优先级5 ]2 q( Q& I( o0 j  X
     EX0=1;           //8 r! a1 C! w. T) H- k; ~
     EX1=1;    //开外部中断3 W3 {% K' T' @- Z
     EA=1;     //开总中断' a" e1 q+ ?. D2 [2 ~
        //IO口初始化+ s: @% e% `* l  _
         P0=0xFF;
6 J* [& B6 [+ Q+ P- H/ _         P1=0xFF;
; s/ M  L1 x5 B6 h! d8 L  }- b         P2=0xFF; / j, p" I; ~4 E/ f
         P3=0xFF;        
' k, h0 \. V) p. g; v) ?         //DAT=25; //汇编0x25/ H6 Y4 x) g0 T* S& |# x
   while(1)
& O" i  k7 R, q2 ]9 \   {
" B& V6 Q: x9 W5 w0 G          P1=0xFF;//灯灭
5 o6 _6 g' n" O          P2=0xFF;//
4 n9 v# ^7 R5 g- z7 |% B1 [          DAT=30;//写入每一通路的通行时间
# \5 ~  s2 j/ O9 M/ U          QG=0;//南北向绿灯亮3 G  X$ [2 V9 b4 c7 i& _$ E- u$ @' t
          HG=0;/ T4 {$ t' Q$ V  {# d) T2 @
          ZR=0;//东西向红灯亮- m2 a8 ^$ A/ C  f$ @
          YR=0;
" H- W8 L! S' h  /*
5 _7 p! F/ B. E0 h5 G9 s QR        =1;                //北红灯
& K0 E& E" e# I! X  b3 P QY        =1         ;       //北黄灯; K# r. f, R/ M* Q% @, ^
QG        =0         ;    //北绿灯 QG=0;//南北向绿灯亮  y2 T' ~7 N' G: m) N
HR        =1         ;    //南红灯
, @2 K+ i# j+ z, \1 f$ C HY        =1    ;     //南黄灯
1 |- Q6 @1 ]$ i& h HG        =0        ;     //南绿灯        2 e$ e# \4 e& b6 J' a( W
ZR        =0         ;    //东红灯: J+ K! ~: Z9 T7 L) d, ~! a
ZY        =1         ;    //东黄灯9 F* k3 w3 m% w3 B4 y8 H. r$ v
ZG        =1         ;    //东绿灯
" ^4 J2 }6 U* P1 ~* M* |+ K7 F YR        =0         ;    //西红灯3 p8 |/ ^7 U3 q/ q
YY        =1         ;    //西黄灯3 p! \( k, I0 X! Q6 C5 E" `
YG        =1         ;    //西绿灯
$ c# G7 S; x$ [8 a2 B/ A        */  9 N9 ^6 k) ?# a( A% R' K' v
          //ACC=DAT;
+ a! t7 I  p7 `3 p$ t
- z7 i) ?7 k- G% h* F; Y

& w. l8 Q8 b, P" J: O8 H# {2 H          for(i=0;i<25;i++)
7 G7 V) G* Q9 I          {        7 ]$ d7 D$ @- {4 b
            for(j=0;j<220;j++)4 s/ p6 ?9 f& V% x9 M+ S
                {2 x- m3 D* V8 c- I* x1 N
                  // BCD();//BCD码调整, }/ [: a1 Z+ I7 V2 j
                   DISPCLK(DAT);//显示0 I( n* C$ \% l/ M$ [
                   DEL1MS(3);//延时3毫秒   7 x: E8 G( e# M0 m  P
3 J3 I' k# S( N7 b# j  L

1 ]5 h; ^1 s( j/ O' K% n                 }
/ i1 p4 {2 A, n4 T0 K- }6 ]                 FMQ=1;//蜂鸣器响  }2 ?+ O/ T! L! s% Q; g
                 //ACC=DAT;) ^/ l+ h; P2 r1 Y! B) O! {6 x
                // ACC=ACC+0x99; //完成数字的减1操作
2 p0 b- t2 L  g5 e$ J* c
0 l9 b& \, q0 M, |- c' o/ k

* N8 a4 p" g4 \! A4 X2 b$ ?                // DA A;//???        
% N8 v1 l8 a$ l3 P                 DAT=DAT-1; //调整好的数字送显存                 - z$ L& A) b" \" W
           }
  U# X$ D5 ^  V1 U+ U- L  k7 y5 y* w! e4 y
# ]. G; K- s0 l: v
           //最后5秒黄灯闪
+ x8 k; V. B' l  [/ s, M                 P1=0xff;' `. n3 s. K4 l- [; E
                 P2=0xff;//关所有的灯6 k" ^6 ?: {$ Z3 s
                 ZY=0;//黄灯亮+ k7 t# P4 N- E
                 YY=0;6 ~* k6 O( \8 w& T. m* `, V
                 QY=0;
( P3 d- Z9 g' F6 ]$ X1 C8 O, ]                 HY=0;                  ) J6 S8 K# Z0 Y4 s' b; V0 a8 M
                for(i=0;i<5;i++)) _9 N- p3 e* e+ l  I# L
          {        
' d  X+ k  q" f4 g            for(j=0;j<220;j++)5 @5 P$ n0 ]: ]; X* h, K3 v2 m' K4 `7 X
                {
9 s6 A0 h0 M' i6 o6 L) X                   //BCD();//BCD码调整
3 n8 ^9 c' u4 i5 F7 C0 G                   DISPCLK(DAT);//显示
" M6 [/ d1 I0 y; s                   DEL1MS(3);//延时3毫秒9 I7 P2 i9 a9 Z) G
                   ! U( H4 C2 I/ E* e
                 }
& d3 e  M, X! Y; }# ]                 QY=~QY;// 南北向黄灯亮* ]3 S/ q/ {# n4 W0 z$ N
                 HY=~HY;; f( {  s- u" _( m2 o
                 ZY=~ZY;//东西方向黄灯亮
4 n' U) f1 w3 h1 X7 T                 YY=~YY;  
# ^4 y& u# n! G# v2 \                 FMQ=~FMQ;//黄灯时蜂鸣器叫一声5 h$ O5 R& x) o0 `& {/ l

1 i8 I& n* ]- O& y! C: b- H
* d0 u) D* N0 v, Q0 [, g
                 DAT=DAT-1; ////完成数字的减1操作,调整好的数字送显存         
4 t" b" h7 u% N: t5 n4 P                 
, @; U" {! F$ k" l           }
2 r( F' c' l4 e
7 G+ n$ Y! ]$ Q. C9 e3 G, s
& c2 ]2 ^& n/ @- a" x  Z
           P1=0xff;# j! X2 B" v- q
           P2=0xff;         
  e3 ]# Q" S- h0 ^0 _0 Q+ ]& C           DAT=20; //汇编0x20. f  ~3 }5 f) L% }) H
           ZG=0;//东西方向绿灯亮
' z6 P! q( }1 o  X% }( X           YG=0;* s6 K% y2 K1 b7 e- f- i( Y
           QR=0;//南北方向红灯亮
. N* C: p: T: F& s1 B           HR=0;
+ Q  w0 D" r5 I& z: B! B, y           ACC=DAT;
4 U4 e# o3 G1 ^% L% w+ K/ c           for(i=0;i<15;i++)//执行15秒
/ E7 J. k# L+ [& X6 a; R. E          {        
1 K7 A6 s# I6 Q: _2 o, _7 a            for(j=0;j<220;j++)% y2 E9 _* p6 p
                {1 J: S- K5 O) P6 l+ A  `5 P
                   //BCD();//BCD码调整
3 R. E6 ?8 D4 N+ v4 n                   DISPCLK(DAT);//显示
) Z* ~- ]5 l# c4 N1 g( c                   DEL1MS(3);//延时3毫秒  
! e/ c" q7 z9 U* R3 F# ~                 }
. W) [. f" C3 y                 FMQ=1;//蜂鸣器响
. v* j) G. c& N1 W             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存
4 _$ [4 g5 O2 A2 W, B. o               
0 O7 w! K6 P& ?           }
- X( O2 p0 M  q                 //最后5秒黄灯闪7 P9 q' l' c! e0 L8 c; S! Q
                 P1=0xff;
, k0 p) W2 j- ^                 P2=0xff;//关所有的灯
. {. {: i" `. U. r1 Y4 j# J$ Y                 ZY=0;//黄灯亮% p! r0 S3 O2 l6 O
                 YY=0;
' S! f6 X. q+ C/ p, f6 M  g$ w3 l                 QY=0;
" M2 T) x7 }- L3 ]0 d                 HY=0;
( q7 z7 P- N' D+ [! D          for(i=0;i<5;i++)) U! l2 G# o0 O, |4 y
          {        
9 b, \7 U6 g0 p* O. T0 G            for(j=0;j<220;j++)* d3 H( l& _' `  L5 N1 ]) J
                {
1 O. G6 b2 @" _7 j, J1 X2 o( K                   //BCD();//BCD码调整: \7 \! H! d: }; m$ i: u
                   DISPCLK(DAT);//显示
5 B1 @  B. Y" L; U                   DEL1MS(3);//延时3毫秒                    
: [; h: j3 F, Q) k: t+ @- K                 }
$ x9 _* p$ Y% q: q% M1 {4 t" B                 QY=~QY;// 南北向黄灯亮6 s0 e  Q6 U8 y8 A' l% j" {# k2 F; ~
                 HY=~HY;
; P) G3 \# X& [4 F6 E  J                 ZY=~ZY;//东西方向黄灯亮
  s, q3 }5 L* p9 M4 z                 YY=~YY;  
% ~1 E( U6 r5 x& D6 Y! q! L                 FMQ=~FMQ;//黄灯时蜂鸣器叫一声
. D$ ^' m1 W5 [0 S9 {
  S: U2 M" m" N5 b, }2 I

% L9 x6 j) m; h# {! i- Y                 DAT=DAT-1; //完成数字的减1操作 ,调整好的数字送显存         
) e6 t4 N7 `' K: @8 P# Q* {                 % F! o( U  Y1 t- P6 v, p2 ^3 A$ Q
           }
" u( V& P" W! r8 E- ~        }         ) C0 B" p: H. Q6 |
                 & Z7 b' q" {. T+ o% q
}
% P6 T6 A/ E2 W% I7 y# c# m) |  n! y: o, W5 |

  b8 d. f. c( I3 ^7 q  Vvoid D_X()  interrupt 0 using 0        //东西(横向)方向道路紧急通行50秒中断程序
: f7 y$ X* c  ]8 V7 t. S9 V{        ) F1 Q! A3 r& v- _
        uchar i,j,temp1,temp2,temp3; //定义局部变量
) |# j' \0 _( C0 _; S         EA=0;//关总中断! [) R6 L5 d2 F8 f; d
        P3_2=1;
7 ^. q- R  j4 ?0 b5 q        while(!P3_2) ;//等待按键释放
5 P- f! W+ C5 |7 b9 f        temp1=DAT;//保存显示数据
% h9 F4 I! H1 v        temp2=P1;: u# v8 f* B5 j' H
        temp3=P2;0 L' K* {! y& {  d, m
/ J; a; u  g/ Q9 g2 c
( Y9 z) X2 ~& C) J7 h, h* s
        DAT=50;
3 N& Z3 g0 l; y8 F( A        P1=0xff;
/ X9 C. t: P, ]- d! h        P2=0xff;+ V' W! {$ z( m1 ~$ ^+ ~
        ZG=0;//东西方向绿灯亮
9 P4 b1 \2 N( J        YG=0;
& C8 c  e/ @- L8 A2 s9 t1 H        QR=0; //南北向红灯亮' y+ R0 Z- x1 F, B/ a1 w
        HR=0;   O7 Q/ u$ {) d$ H
        
" T+ K: U- z. q' k         7 D* M* O3 ^# n4 h/ E
        for(i=0;i<50;i++)//执行50秒
5 Q! I8 F2 g& f/ r" {0 Z        {        6 g2 v# ], u3 i' p4 q3 n: q% h4 [
            for(j=0;j<220;j++)
* D+ m8 `  z# [2 n+ g                {7 g+ g  m3 A8 a: C+ z% F. A
                   //BCD(DAT);//BCD码调整
9 [# w/ t( D! \0 b3 `# ^/ s! g8 j                   DISPCLK(DAT);//显示. M0 r# R1 ?0 X. V+ o- W* ^" @' X
                   DEL1MS(3);//延时3毫秒3 V% w4 W$ ^1 U' r6 Y
                 }: L/ \) f; o! r- W0 y+ c) o
             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存               
# s5 D. M) G( {# r7 V% {( U7 c         }4 E# f: U. _. ]3 |0 H0 Y) v
        DAT=temp1;//回复显示数据' Q& ^5 b7 h% v9 }$ n1 |
        P1=temp2;: R% r: Q; `( f. _7 c. P" q
        P2=temp3;
2 z  q  K8 d! d) S. c
" Q6 q! _0 G( M: N: E
+ H& k" w% j- k# ^! R
        EA=1;//开总中断 ) _1 O# l4 X" t+ B2 a) C$ N
}
; {5 J5 n1 \& Q9 q) Z' ?9 ]& O* ?3 d: Y2 X( L) r7 d6 C

$ m: W+ p, E( H( x, k9 I7 Y) e# l# Svoid N_B()  interrupt 2 using 0         //南北(纵向)方向道路紧急中断程序
$ f$ \6 a: [. _; P* ?9 m  l' E{        
, j2 _, D9 X7 v$ ]2 X: b4 C% f5 M- s         uchar i,j,temp1,temp2,temp3; //定义局部变量2 _" {7 B5 x6 o" H+ h
        EA=0;//关总中断
/ B) Y. C% H4 X* f0 d% G0 g+ ?        P3_3=1;9 E0 J* Z& \) @. C0 g$ f. _  V' s3 f
        while(!P3_3) ;//等待按键释放8 f9 {" r7 V" C, G# M! ]
        temp1=DAT;//保存显示数据4 V( u3 r! v9 E
        temp2=P1;6 j4 f' Y$ S/ V+ _
        temp3=P2;1 z2 k) c* q* v1 k0 L0 w2 f
, \9 k; j* _: o

: f% y/ [4 `8 l  ?  @        DAT=50;. B+ g  A3 Z0 q- W. h: n
        P1=0xff;; T1 B( x% U- j' B6 L, r- x: Q
        P2=0xff;7 P8 j* y/ C1 W
        ZR=0;//东西方向红灯亮
' n( _! y" v4 X6 [! I# q" S1 [( `5 |        YR=0;
9 z+ m, y4 b8 F5 ]) Q. v- L        QG=0; //南北向绿灯亮
7 J% d+ l( Y8 P# ]3 G% z        HG=0;         
+ f1 ~$ |8 H9 t# _0 Z        for(i=0;i<50;i++)//执行50秒9 r$ x0 z) }8 d- G
        {        1 h, F  R# J, u, O" L( C! q' h$ H
            for(j=0;j<220;j++)
  U" D+ J8 z8 c! h8 G; [+ A+ y                {
% o/ z7 ~) i/ t# i" L                   //BCD(DAT);//BCD码调整4 v6 l, d5 {" }+ ]
                   DISPCLK(DAT);//显示$ R' ~& c8 b0 d4 e. s
                   DEL1MS(3);//延时3毫秒
; e9 Q5 r- Y. i9 f) @                 }
; v: ?* z# {1 n, z  q; M             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存                # L( Z3 t. J! q+ B; A8 C, n' G2 _  C
         }
  U! |# P4 v1 H. Y        DAT=temp1;//回复显示数据! s5 C# I0 a" r
        P1=temp2;
! s1 ~" w  u% X7 o# m) t8 ?        7 a& E! _  p( {+ G
* U/ q4 ?# S/ V! i# x
6 T+ V5 Y& w3 i, F& y! B
…………限于本文篇幅 余下代码请下载附件…………: x0 E: u( [2 z# a( \+ C
0 A" Q7 C; }: c# k
& l$ X' j7 d- b( t
' h- _7 U0 V  F( D! ?
+ Q% w6 X4 u$ h
汇编语言单片机源码:2 w& y5 o2 W+ J/ L2 C+ E% A

1 ?2 }9 H' m) T. z- e1 _$ g0 l. M3 @;智能交通灯控制器程序( \  `( X1 w5 R' t/ h' |: w
                ;以下程序完成各脚的预定义- g3 H. {& W; R, X
                FMQ        EQU        P1.0                ;蜂鸣器
2 _% s" J8 a. K* s  u0 z! b3 r                QR        EQU        P1.1                ;北红灯
; k% l/ R, k( G! p  R( D. l                QY        EQU        P1.2                ;北黄灯$ Q9 v# r/ s3 a/ C/ d& K# x
                QG        EQU        P1.3                ;北绿灯
5 I- Q/ j6 X. Y% c+ F                HR        EQU        P1.4                ;南红灯
' ], ]0 O, I6 j3 V: d# a& ?$ ?                HY        EQU        P1.5                ;南黄灯, o5 ?! k" b) @4 u' A+ ?6 [
                HG        EQU        P1.6                ;南绿灯        2 A2 V" E0 q  G1 C1 O, o& X
                ZR        EQU        P2.7                ;东红灯1 [3 a* K$ ]0 s/ `# W9 Y
                ZY        EQU        P2.6                ;东黄灯
: T9 e! Y- P4 [1 ~1 E                ZG        EQU        P2.5                ;东绿灯               
: O0 r+ l* j4 @$ I7 y1 U                YR        EQU        P2.2                ;西红灯4 ~8 a  r" a1 a/ K( P
                YY        EQU        P2.3                ;西黄灯                . v9 G5 s9 f/ n7 k
                YG        EQU        P2.4                ;西绿灯4 |, M  V% d; K3 B0 N3 k1 @
                SWITCH1        EQU        P2.1                ;时间显示的十位控制               
$ d5 ]) \/ C0 V2 T( K5 J: U6 C                SWITCH2        EQU        P2.0                ;时间显示的个位控制* w. A- {% q( I& m  e& N. a

! z8 b. u, {: G/ p8 k1 l+ [4 m                DAT        EQU        60H                ;显存
/ t$ H# o  ]' b6 U6 H
- Q& y) c- z, _/ v. [                ORG  0000H
) t6 |5 F4 A2 j4 m4 W                 LJMP START
" Z/ |8 ?- e" R3 Z3 @5 q, J% l                 ORG  0003H  {2 f1 F3 A; F1 q9 R! i' E
                 LJMP D_X                        ;外部中断0,东西向紧急按键
' Y3 B' j( ~) V; J* p2 k0 J* [$ {                 ORG  000BH
9 a. P& }# ^6 t" r4 L3 H$ |* W' }                 RETI                                ;% d* I' t" M5 [) v8 i
                 ORG  0013H
( w; l% |( L# s6 u" A  R- a' z8 A$ ^. [                 LJMP N_B                        ;外部中断1,南北向紧急按键2 m  I3 D1 I5 v. s. G, O+ ^
                 ORG  001BH, Z! N% `0 {+ m9 ^1 m
                 RETI
* I% j" A0 a. K* D: I5 B, L8 [$ c                 ORG  0023H  x# o8 W5 v4 k* J  ]; Y
                 RETI5 C1 u* m0 |& A5 q& l% T
" Q( N$ R3 Y  |, `/ o8 _
                 ORG  0040H                        ;定位3 P; h0 [3 S, Y9 o0 R4 g7 s
START:5 @% Q, ^4 i+ P

6 a; t3 r7 [' N" O                MOV        TCON,        #5H                ;外部中断为下降沿触发
7 V  {$ M9 E/ M  O5 C$ i                SETB        EX0                        ;- `+ W: u9 {% x4 [% D% M
                SETB        EX1                        ;开外部中断
2 c* K" X( y6 {( `                SETB        EA                        ;开总中断
1 ~/ ], w& V0 Z& c' ?0 A; P                ;IO口初始化
) c! _! H2 n3 H                MOV   P0,#0FFH
5 a% X5 s. B* T0 @                MOV   P1,#0FFH                        ;4 ?8 G! ?4 z1 t4 n: M7 }4 t$ Q
                MOV   P2,#0FFH   ;
$ M2 @) \1 f9 b3 q+ [' R4 ?                MOV   P3,#0FFH                        ;. S' C' O& R! a
                MOV        DAT,        #25H                ;
4 j- o: @: k# T4 F& G
% A6 I9 |  ^# Q' g; g7 D
% V- [8 O! h' r. g$ H' U1 pAUTCLK:, W9 X7 a/ h/ I( f
                MOV        P1,        #0FFH                ;
0 M! T  v1 o% e* D, N4 l% t+ J8 g                MOV        P2,        #0FFH                ;  ( g, w$ `0 {5 L: E' H" m% @
                MOV        DAT,        #30H                ;写入每一通路的通行时间
; K7 w2 T4 s6 u! N- q# z                CLR        QG                        ;南北向绿灯亮
! s5 C' C! [) B% h" g5 k) E- d                CLR        HG                        ;  N& }: z' b: Y
                CLR        ZR                        ;东西向红灯亮
  m4 E' ^9 c" D" m0 ?                CLR        YR                        ;8 `" [6 [& `) [
: C$ d+ N6 g! u- r, t6 i
                        MOV        A,        DAT                ;
/ y& X+ l! h# \/ V# n# }                MOV        R2,        #25                ;写入时间值
# z) l% V* a$ S7 AA1:
( O* `: {+ k3 x                MOV        R1,        #220                ;
% A5 ^- M" j' [% l* kA2:/ ?& n6 Z1 H; D; Y  E
                ACALL        BCD                        ;BCD调整; |, l+ l) o+ }# j
                ACALL        DISPCLK                        ;显示7 @2 D3 ]2 A7 D9 M8 b$ c9 `0 J" m3 h
                ACALL        DEL1MS                        ;延时
) r+ Q5 O' w; u: P3 b- v                ACALL        DEL1MS                        ;$ n* O7 o3 N( B
                ACALL        DEL1MS                        ;6 |' L  _1 H( R
                DJNZ        R1,        A2                ;# u( M. d7 ?: z, L5 r
                SETB        FMQ                        ;        ) Y- n: X# A: q2 _; \  W
                MOV        A,        DAT                ;完成数字的减1操作$ |) s0 t+ W4 w. X; z& X  X* E
                ADD        A,        #99H                ;' y- q4 f* J/ N
                DA        A                        ;
9 v6 f' \# r8 W5 n6 H                MOV        DAT,        A                ;调整好的数字送显存) L  G' x1 {$ e6 |3 L3 N
                DJNZ        R2,        A1                ;
: [0 U; A2 H( U1 ~1 {. J                ;最后5秒黄灯闪
3 ]+ ^& N" E. ^" N. N                MOV        P1,        #0FFH                ;& k5 l3 G! y' u! w
                MOV        P2,        #0FFH                ;关所有灯                                   0 w+ X/ [3 m; V) ?
                CLR        ZY                        ;黄灯亮
# d9 _: S6 y% l$ K* g                CLR        YY                        ;! H. l* R' `2 `6 B/ V2 W1 ?
                CLR        QY                        ;
, S, N& W3 m1 T) |0 {' t                CLR        HY                        ;$ N) k( o$ U0 o( J; A6 a( h$ ~

, F& C$ {0 s/ W3 {0 \$ `6 i! T1 L                MOV        R2,        #5                ;. o$ n: d4 |9 ~2 T
A3:1 B6 |! F1 c# A7 F1 m
                MOV        R1,        #220                ;$ {% s& j& g; X
A4:6 b8 u7 G. w3 O; {0 c" {7 a( j
                ACALL        BCD                        ;6 ^. r4 G8 _  I; R3 P
                ACALL        DISPCLK                        ;! p8 F/ P9 w3 n
                ACALL        DEL1MS                        ;
5 \$ U& {" c/ R- h' I                ACALL        DEL1MS                        ;
" |( U6 Q$ T2 c) c+ m                ACALL        DEL1MS                        ;
0 n( P3 R3 o6 A$ h" P9 D9 Z                DJNZ        R1,        A4                ;# v, y7 Z# t8 M  z8 [) a- |6 n
                CPL        QY                        ;南北向绿灯亮& b7 \/ b$ H5 l2 d! [
                CPL        HY                        ;* L' e- c. `8 w/ w! r
                CPL        ZY                        ;东西向红灯亮) O8 T: J( `8 c' s) F' ?
                CPL        YY                        ;        
8 A1 n7 \5 c7 M& X) [; j% w                CPL        FMQ                        ;黄灯时蜂鸣器叫一声: O) X. X. j' N' j# }4 m" B
                MOV        A,        DAT                ;: n: @# W- q4 c  W9 w& C
                ADD        A,        #99H                ;1 C) e- x( \' z) X7 U  Z
                DA        A                        ;
$ c9 H; G: t6 [                MOV        DAT,        A                ;
7 y  }9 C9 i  o9 ~, f- `7 z; a8 l                DJNZ        R2,        A3                ;! S4 B& t8 ^% p, b0 S! w2 B
( `5 D7 P  L  u% |
$ I8 @$ Y  v  t' s- Y
                ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@& J! b- o* A- F% z
                MOV        P1,        #0FFH                ;
$ l3 ]6 n- y9 L& I5 R                MOV        P2,        #0FFH                ;  a! V$ T+ {) I. A. [( ^
                MOV        DAT,        #20H                ;( R) E  K* p" k& r
                CLR        ZG                        ;东西向绿灯亮2 N' h: L4 _. L9 @& @8 u5 ?# j+ @
                CLR        YG                        ;- d+ D: k+ l, c1 o
                CLR        QR                        ;南北向红灯亮
  z. U- ~, h$ t9 i( |# X% h+ {                CLR        HR                        ;
2 b! e, R- N, m$ S. V                MOV        A,        DAT                ;
/ f0 O. ^; {) M) D' B# x                MOV        R2,        #15                ;执行15秒4 x/ n, m  L8 ]- v" C
A5:
& G+ f0 D" @  d$ V                MOV        R1,        #220                ;
3 B. a' B4 ~, ]2 b5 ~$ Q- \A6:
8 @+ m+ g% F; \. A2 v                ACALL        BCD                        ;BCD调整
9 N7 O+ e, v. {( a9 S                ACALL        DISPCLK                        ;显示$ U  ^0 d7 W; m
                ACALL        DEL1MS                        ;! ~0 H! f6 y0 W5 W: g
                ACALL        DEL1MS                        ;, R( S  x, R! O/ ]/ R9 f
                ACALL        DEL1MS                        ;
% W' l# f  ?$ G0 ?, J  z$ f1 Y                DJNZ        R1,        A6                ;
4 j: H3 e1 h2 S; L* `7 s8 ~                SETB        FMQ                        ;        , N/ o) l$ y( i
                MOV        A,        DAT                ;
5 _9 i7 E% V5 T& k: x# C( `                ADD        A,        #99H                ;减1操作* j( V& H3 \+ q4 s! \& m
                DA        A                        ;( L- z8 ^) }  r! e( R; H
                MOV        DAT,        A                ;
/ @; l* U, T/ I                DJNZ        R2,        A5                ;$ D/ ?" K: V9 B: z% r3 Y% S
                ;最后5秒黄灯闪
: R  A& L8 [' b' {9 q                MOV        P1,        #0FFH                ;+ f/ f, O- ^+ a: z
                MOV        P2,        #0FFH                ;关所有灯0 p/ R- Z- t5 O7 O; F
                CLR        ZY                        ;黄灯亮: y& i  }+ W( B+ f+ _: m
                CLR        YY                        ;
. L! e' A! e% M: q                CLR        QY                        ;
8 e: a. a0 d- Q                CLR        HY                        ;, t2 P$ w, @& ~0 V5 N

" N9 R5 ^8 r- o% _/ o: N9 Z( C                MOV        R2,        #5                ; 5 ~3 m% l2 h' @/ n6 H) U" P7 D
A7:$ e/ D: A3 a, V7 J- m! ~  `# D
                MOV        R1,        #220                ;
# f* Z( g+ U. Q' e2 \; y. p5 `' _A8:. T2 e' g" s8 q4 I" I
                ACALL        BCD                        ;2 E. Q1 o# I9 T1 M2 c! D
                ACALL        DISPCLK                        ;9 N! y4 A% d  a' d+ l: |0 z$ Q
                ACALL        DEL1MS                        ;1 t; f" @$ I# T8 v) T( m
                ACALL        DEL1MS                        ;" |7 D! t0 a  ~3 r, L
                ACALL        DEL1MS                        ;8 ?& e; b3 w" v. ~" o6 f
                DJNZ        R1,        A8                ;, f6 n) v% S" ~
                CPL        QY                        ;南北向黄灯亮; y: b! G5 U" U* b/ D
                CPL        HY                        ;
* j7 c/ a+ _( F) ~                CPL        ZY                        ;东西向黄灯亮
) R% d% U: r6 @" F                CPL        YY                        ;        
. a" f6 g2 X- g8 N7 u6 h& Q9 v                CPL        FMQ                        ;黄灯时蜂鸣器叫一声
9 @% G+ C' O- H                MOV        A,        DAT                ;7 E& g- _" F/ a, q9 `
                ADD        A,        #99H                ;
0 J0 N  `& u3 A  h6 W. k                DA        A                        ;, L4 I+ e7 y. {; F9 T
                MOV        DAT,        A                ;
: k9 |. R- a- u5 `5 g6 ?                DJNZ        R2,        A7                ;5 D2 ~8 |- p7 A6 T$ I
                AJMP        AUTCLK                        ;8 y" o: D  Z, @( K
                NOP                                ;
, `0 l7 k* L% u+ A$ x' i. x% k) @                NOP                                ;+ d# H6 m- r$ z. ]5 G% L$ y) k. U
                NOP                                ;3 Y( N- L5 g8 i7 O. W( Z) k
                LJMP START
# |9 @% ?) J2 y+ \3 k0 M3 ^6 e;;*********************************! c% Z7 h2 n' G; w/ F0 ~. w: V' o
;;显示子程序
9 B: v3 @9 G6 ]9 n6 c, q;;**********************************           
4 J) _+ B! U! O& GDISPCLK:" ~, ~% W; P' {, r2 A
        MOV        DPTR,        #TAB        ;定入表头
' r( |# e5 [' R9 p: ^        ;显示个位
, L' ^0 `5 G! w9 b. Y        MOV        A,        50H        ;
% H& U& C$ _5 Z' d/ t9 j; `8 ~8 K        MOVC        A,        @A+DPTR        ;5 u$ m/ X1 H4 Z. a8 }
               MOV        P0,        A        ;
1 u' a8 \9 l+ W, ]5 ^               CLR        SWITCH2                ;  个位显示
/ N2 H/ T5 B* o6 O. r2 y               LCALL        DEL1MS                ;4 Z* a% ]- j  |3 R0 X; A
               SETB        SWITCH2                ;个位灭+ `" k6 u8 \. y
               ;显示十位
+ X$ C: h/ x7 u# T6 o& g               MOV        A,        51H        ;
2 X7 O- B8 I  N0 j               MOVC        A,        @A+DPTR        ;) x8 ?, }) N) C' v8 b4 K
               MOV        P0,        A        ;5 ]1 i. p5 o% y- h) z7 L2 b* A
               CLR        SWITCH1                ; 十位显示; r- |( [2 U$ `) ]8 f3 ^# Z
               LCALL        DEL1MS                ;; y" s, q. E) w- @% \) s' Z& x; _
               SETB        SWITCH1                ; 十位灭
/ N5 a$ G/ O' m               RET                        ;
  U$ ?' N; h0 |7 n8 W- g, e5 `               NOP                        ;
7 K' z8 ]! y  X0 W- a4 r, O               NOP                        ;
! X% I, F6 z* V, F               NOP                        ;+ @5 j+ E5 `9 H! h, F4 e
               LJMP  START( |, D) K( F7 H0 r2 w
;************************************************************$ k/ e2 l+ g0 M% r
;横向道路紧急中断程序) ?5 e4 ^* d) \% N) {& e
;************************************************************0 D6 [8 D; V8 o  y! w
D_X:# x4 |+ t, H6 p" V( E( Q( U
                CLR        EA                        ;关总中断
; Q2 I' }7 F9 A0 J1 n1 _* v3 g: z                JNB        P3.2,        [        DISCUZ_CODE_19        ]nbsp;               ;
) {# M& H" J0 A9 O! s; r                MOV        A,        DAT                ;保存显示数据
; Q. f" q+ ^. R$ r! V                MOV        20H,        A                ;
% |/ p- c" J0 D0 D: {  j                MOV        DAT,        #50H                ;
* D& C* U, u7 d! \' ?' n. N* c! ~5 Q                MOV        21H,        P1                ;+ w: |0 U0 L: @5 h0 o5 O
                MOV        22H,        P2                ;
& N* z& _+ m) w; p% N                MOV        P1,        #0FFH                ;
7 m, D: N0 @' w5 O+ S) c                MOV        P2,        #0FFH                ;7 C' q. V3 \. y7 s- p2 W
                CLR        ZG                        ;东西向绿灯亮
& ?" f/ T2 k# K# M! ^                CLR        YG                        ;
* J, z9 B% c2 y2 w7 Y/ h% o6 M, l                CLR        QR                        ;南北向红灯亮; j1 H% d# a- t; o
, l/ [  c( R' e; {2 H$ f, z# d

6 N/ w! `; f+ A1 J4 A8 P& `…………限于本文篇幅 余下代码请下载附件…………" D5 j, X+ D# K* a* b: A2 J
" p* T8 t7 O/ [0 D7 g
游客,如果您要查看本帖隐藏内容请回复
  d8 w) p- X/ x3 f- B
5 |1 ~! [" K! H' p( W; n

( s8 Y8 t2 ]* O

4 d3 ~6 I( m6 e8 i( W. u

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-11 04:35 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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