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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
交通灯设计 AD格式的原理图和PCB与单片机源代码8 V- p7 d* j/ C: A# W, k

# U3 A, t5 J& q8 E* s3 z

/ }3 O- g" G7 Y7 V$ [( n& C* W$ @: G: d一个用51单片机做的交通灯的设计制作,而且带ad画的原理图和pcb,有c语言和汇编语言两种格式的源代码.
/ U0 ~; _8 t- e2 I+ ?& a3 E5 r' a, @2 U0 R
ad格式的原理图:/ ?' t9 |( o4 s! U/ l
9 z" l' r' p9 n7 C
& o4 w( v) `. o  w
5 \) `2 C# d% M* q  Z7 k
pcb图:
6 s; w/ d8 I9 C& D+ @
* o) x$ l( T1 @# r% [单片机c语言源代码:

" u, j6 E* m. K6 p$ g! z/*        程序效果:单片机模拟控制交通灯程序,规则如下:当南北通车时,此时南北的绿灯亮,* g# H4 J" r1 F8 h! b
东西的红灯亮,之后南北的绿灯闪烁3次,过后黄灯亮,延时片刻,转东西绿灯亮同时南北红灯亮,8 L+ I! n2 b# h1 |4 [. b$ a
之后东西的绿灯闪烁3次,过后黄灯亮,延时片刻;数码管显示的值都同步,结束。*/
; v* H5 ?+ S. E1 `#include //头文件
  G2 {  h6 @; O: h#define uchar unsigned char//宏定义
' n6 @' V1 j2 n- \3 Y  ^/ d#define uint  unsigned int+ V. `, S, L  R5 G+ Q4 b
/*  旧IO定义*/
/ f3 R7 [6 `) @& |" {sbit FMQ=        P1^0;                //蜂鸣器7 X  G5 f9 ]) `( x8 K
sbit QR        =        P1^3;                //北红灯
$ t" c& Z4 S& A1 [$ r2 Hsbit QY        =        P1^1 ;       //北黄灯
3 G6 X6 }! U) ~& c7 s2 vsbit QG        =        P1^2 ;    //北绿灯3 V( v/ Q$ T) J! Y
sbit HR        =        P2^2 ;    //南红灯
8 c6 |. b6 S) j- l4 [sbit HY        =        P2^0;     //南黄灯! i# l- l0 ?4 S
sbit HG        =        P2^1;     //南绿灯        
/ f, O. X% X6 Fsbit ZR        =        P1^4 ;    //东红灯
9 T( J0 w! l! t( Z! Asbit ZY        =        P1^5 ;    //东黄灯
/ B% S8 U/ P2 E3 j; [0 ^7 msbit ZG        =        P1^6 ;    //东绿灯8 |& B4 w' @$ ]+ N6 C! T  I
sbit YR        =        P2^5 ;    //西红灯
, Y* r! S" r5 v, Usbit YY        =        P2^4 ;    //西黄灯* ^; M; Y1 ^/ G1 n: `1 G
sbit YG        =        P2^3 ;    //西绿灯         
+ D) a% Z3 O$ ^: ?. j; G6 l6 q5 w  S3 |sbit SWITCH1        =        P2^7;        //时间显示的十位控制( l. p  ^& f$ V
sbit SWITCH2        =        P2^6;        //时间显示的个位控制
. m4 a  K/ E" g. r! T/ ]/ P/*        //新IO定义$ O+ d$ F8 `& G& R
sbit FMQ=        P1^0;                //蜂鸣器
2 L& c3 p+ h. }% ?7 _% g/ k/ y: Osbit QR        =        P1^1;                //北红灯
: X8 F: N) n- C) Ssbit QY        =        P1^2 ;       //北黄灯
" E, c% i* Y$ ]) D& esbit QG        =        P1^3 ;    //北绿灯4 n' d. I: V1 e5 _4 h
sbit HR        =        P1^4 ;    //南红灯
2 v0 e" e' T+ |sbit HY        =        P1^5;     //南黄灯7 C* ^: V6 u( v# b' q) [7 p% l$ ]
sbit HG        =        P1^6;     //南绿灯        
" X. x1 p- Z* S. L/ R0 |sbit ZR        =        P2^7 ;    //东红灯2 B% {: w& e1 ?; ?- o7 M
sbit ZY        =        P2^6 ;    //东黄灯- p/ T3 L; H: `/ \
sbit ZG        =        P2^5 ;    //东绿灯
7 |6 U  ]4 O: F5 w" n5 y3 k8 {0 Jsbit YR        =        P2^2 ;    //西红灯
  v; t9 @/ W1 U4 P* psbit YY        =        P2^3 ;    //西黄灯
6 G. ^" B) A0 L6 U5 x* ssbit YG        =        P2^4 ;    //西绿灯         
1 d2 \8 `  C4 x/ U3 Z/ j( wsbit SWITCH1        =        P2^1;        //时间显示的十位控制4 [; \$ o! S" s1 ~7 F
sbit SWITCH2        =        P2^0;        //时间显示的个位控制% E' c. r* L6 B
*/0 q* u7 z: V6 j. \5 \  ~
//sbit P3_2=P3^2;
7 f) Z6 I: W9 f//sbit P3_3=P3^3;
* g4 b) G1 D. \4 quchar DAT;//显示时间变量
, P- H; x. v* F. xuchar DISP[2]={0,0};//显示缓冲区/ e: _' j* Q6 H% [
uchar code table[]={0xC0,0xF9,0xA4,0xB0, ////共阳数码管段码表0  1 2 3/ k+ p- X' ^- j6 Y& k* `& {
0x99,0x92,0x82,0xF8,0x80,0x90,0xFF        //4 5 6 7 8 9 灭
9 k5 H4 D: J2 U9 X  G% D/ }};1 q. G* N! a& c+ k
void DISPCLK(uchar i);//显示函数
8 u: x+ l; C, K! y* o
$ m) T# d$ @" N& G% R, O; u
/ ^8 A! d7 j  D+ {4 G
void DEL1MS(uint z)        //延时子函数2 t$ [2 a' M0 }6 A
{
8 ~( i  c3 {: {2 `% B3 P& ]) @4 wuint x,y;
' G5 C4 m- I$ r) {+ gfor(x=0;x<z;x++)
' e% l) @7 {; J, r9 g5 `for(y=0;y<110;y++);
+ t4 y3 @) ~. v}5 r; ^% R' r) g. B  ^- @
void main()    //主函数
% r& q+ C' W& I/ y{    //  uchar i,j,k,m,n;//定义局部变量, v/ V7 g- A- f
     uchar i,j;
% O1 i0 m  z3 D0 d; }    TCON=0x5;  //外部中断为下降沿触发
, l% _' I# |; F( |; R1 M! H: [         PX1=1;//南北方向高优先级
9 z8 p% l3 j* ]7 z2 E! W     EX0=1;           //
1 i1 |% \$ P+ ]% b: C" M     EX1=1;    //开外部中断
& v* \7 B" y7 R5 ^  m: w( z' g, B     EA=1;     //开总中断5 ^  [0 I3 f8 O
        //IO口初始化
# l# D; }( V  I0 W         P0=0xFF;0 I2 r5 k. I. ~5 U! f. }! Q
         P1=0xFF;
  k7 [/ b& B5 ]& |) q1 p         P2=0xFF;
; O5 ]( W5 B  Y( p         P3=0xFF;        
& e, |  x# U3 `         //DAT=25; //汇编0x25
  b* b: b- m2 z% R, B( ~6 o. U   while(1)
7 f$ J$ N& i0 |9 e   {
% P2 r* h8 ^6 p, i$ G1 p5 f' f6 x          P1=0xFF;//灯灭3 Z4 z2 n& K3 \% P: _
          P2=0xFF;//
4 `$ _1 I9 w* n, E) ~5 c          DAT=30;//写入每一通路的通行时间
$ o; Q8 ~- @3 z          QG=0;//南北向绿灯亮& B8 \* r3 O5 j* M
          HG=0;8 L0 }" \( A: ~9 J5 w6 [' W* P& D
          ZR=0;//东西向红灯亮
& ^3 Y% B+ m* q/ p' G) F5 N          YR=0;
( X+ b# z- Z9 r3 b' r& q8 h0 f  /*; q5 k4 o! P1 I" J7 [  G
QR        =1;                //北红灯
# ?. x5 E5 W6 p* n6 L5 m* J; C QY        =1         ;       //北黄灯
1 ~8 {, m! v9 v' s( T1 J- I QG        =0         ;    //北绿灯 QG=0;//南北向绿灯亮3 H# k6 _9 R! z! F- w4 m+ Y& w
HR        =1         ;    //南红灯
, H0 q' y: _; N0 n4 U HY        =1    ;     //南黄灯) J5 ?" r) A6 V6 s8 e
HG        =0        ;     //南绿灯        ! N; q4 o* H/ S: o9 A
ZR        =0         ;    //东红灯; R0 N7 O% w1 k: J
ZY        =1         ;    //东黄灯
2 l+ u5 Y8 d# g7 |0 H  ?4 z: h ZG        =1         ;    //东绿灯
! e& `7 ~/ X6 @/ G# a# u( s$ E YR        =0         ;    //西红灯
8 j0 |; L" p! t: p YY        =1         ;    //西黄灯- d4 Y+ G* k' C- p7 W: Y4 u- I
YG        =1         ;    //西绿灯
3 ~. \" j+ W: ^! G        */  
1 B7 }/ p2 `, ]( O          //ACC=DAT;8 _! ~* g7 ?; V4 a8 P$ ?6 c6 R
1 l% n2 x3 e. o2 f" B- ~

, V% c/ o; c; D7 \7 e* u          for(i=0;i<25;i++)* M0 m. `! D: _) R; H
          {        
( {4 y4 ]5 |, Q5 J            for(j=0;j<220;j++)
2 I0 |7 C2 j4 D+ G  |7 R                {
4 P; N- `; ]0 z. j& R+ `$ s                  // BCD();//BCD码调整# q7 ^. S7 X0 y  t( e; Q  e0 _6 H8 O
                   DISPCLK(DAT);//显示
( @" w* S+ F6 v- T                   DEL1MS(3);//延时3毫秒   
( f6 U) _. U9 V8 W' ]: o* R% G, I

' S  k. N/ N: ?& E9 w, k* A                 }: Y. J2 c6 U, T; a
                 FMQ=1;//蜂鸣器响; y& s6 c; h9 O. q! P3 w" t+ e4 Q
                 //ACC=DAT;: c+ e$ R7 S/ o& `' E- f/ t
                // ACC=ACC+0x99; //完成数字的减1操作4 ~4 ?) |+ m* O, l6 D7 v

, L& N5 X2 f1 B6 f
9 V! v7 J& f5 Y* X% w
                // DA A;//???        
) i5 S% r* o: ]6 V8 K                 DAT=DAT-1; //调整好的数字送显存                 
) F, n9 J4 g# ]+ A# ~           }, r! b4 p5 ~: T* g! G/ X# }; [# g
6 P" d( L  m1 V( ~" M6 X  Q& {' W

5 O/ z4 [* X( s0 s* v* p2 Y           //最后5秒黄灯闪
# ~# ~* W+ e: c; c                 P1=0xff;% q4 r/ `5 [9 g( j  M
                 P2=0xff;//关所有的灯
$ m1 V7 l6 I3 t& x( G4 N3 Z4 z                 ZY=0;//黄灯亮# t+ P+ x0 K) o) z* @
                 YY=0;* f) n2 c% s3 L& c  R* Y* p6 d  I5 B' r
                 QY=0;
% l; M+ K1 k0 ~+ V; z- |3 b( P                 HY=0;                  / ~2 V. h5 l3 a1 J: l5 l
                for(i=0;i<5;i++)
" ^! C+ D. l& |          {        , M( e  K$ C% L1 k( j( |+ W8 F
            for(j=0;j<220;j++)
* }; h3 C8 l# _1 A3 |                {6 i! k  y" b& r
                   //BCD();//BCD码调整0 J$ ?8 u- C3 y
                   DISPCLK(DAT);//显示
5 m7 l) r# d( R/ e* {6 \! t1 K                   DEL1MS(3);//延时3毫秒
4 `  r3 b5 D! q$ `" E: E6 K1 y8 Y5 _                  
) K4 B% M4 b: b2 I+ J. ~                 }
+ J2 e0 R0 t# q                 QY=~QY;// 南北向黄灯亮
2 h, V# ?! C& Z; P% Z                 HY=~HY;8 U0 O. `% f' W6 z6 R* ]
                 ZY=~ZY;//东西方向黄灯亮
9 ]. R. n# t; S                 YY=~YY;  / t" M3 u" L9 a" Z/ }( o3 r. X5 O
                 FMQ=~FMQ;//黄灯时蜂鸣器叫一声
# A  X3 `  [" o. z% l( }3 }( v( N
4 |* T4 p+ q9 a3 [. B, G3 P0 j
5 {) T/ a$ f* h$ @5 I& B& @& L* Z" s
                 DAT=DAT-1; ////完成数字的减1操作,调整好的数字送显存         & v3 z% K- R# [- O& |# ^! J9 }
                 
9 n- y7 t/ k, a& ]           }
, L( O  ^3 G: I* Q& I4 L& u  L. }) Z* V

7 f0 z$ n9 u  p1 {5 N' ?, S           P1=0xff;' U4 `8 b* B1 H$ G4 c( r, I
           P2=0xff;         
: N. R9 s& ~  K: L4 c1 k           DAT=20; //汇编0x20
9 o5 r  \  L' [% o, [# n8 S           ZG=0;//东西方向绿灯亮" h$ W) t5 A$ |
           YG=0;8 S1 V3 A" b* D* R6 L4 {
           QR=0;//南北方向红灯亮$ ?& ^% y+ W* A  P6 D' [/ c0 {
           HR=0;
7 T* a; v$ Z" H( ~) ?           ACC=DAT;
' @  D$ s0 [' R2 r8 I6 I           for(i=0;i<15;i++)//执行15秒
! A% q8 ~- b: _" i9 Y: F. M0 s5 q          {        3 x7 w$ `7 p  i, |1 T8 L
            for(j=0;j<220;j++)
' w6 k. N0 P" ?' l" T8 f                {
: I$ ~* f# d9 D* T% U                   //BCD();//BCD码调整8 p) L. r* u" f0 _6 k
                   DISPCLK(DAT);//显示
2 z3 C- v+ T7 o$ m& w                   DEL1MS(3);//延时3毫秒  
/ z6 w$ p3 Z$ r) }% o                 }
* e$ t% a: o9 ~4 z$ I2 Y% D                 FMQ=1;//蜂鸣器响" Y; d2 ]' E& R. w+ w
             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存
% K2 m! V$ i0 o/ r/ y- l" ^               
4 x% H# l: V+ q. T           }% x6 W9 D2 D* ?% m- t
                 //最后5秒黄灯闪1 T+ q0 C3 E6 H! G; Z
                 P1=0xff;
; H- D- ^% j4 v: Z4 n# {                 P2=0xff;//关所有的灯5 J4 T0 _6 Y+ d8 \4 |
                 ZY=0;//黄灯亮
" W- n% t0 Z) o                 YY=0;9 A% c! ?4 G9 M& v, J
                 QY=0;1 y$ D! s  F" H4 Q
                 HY=0;! u/ c! i$ F6 ^; a, p( S
          for(i=0;i<5;i++)- }' _2 |) q- P
          {        ! w/ H1 m8 H. ^
            for(j=0;j<220;j++)7 q  M8 ?6 M' z- w' m* V
                {. E: R5 U& K4 F- a1 e" l5 K+ L
                   //BCD();//BCD码调整
8 x$ g% N' D* ~  g6 I6 ^6 a4 f                   DISPCLK(DAT);//显示
, L* K0 r9 h) k$ w( e0 @3 V                   DEL1MS(3);//延时3毫秒                    
2 j+ _7 b. R, }: \2 C2 m& }                 }
2 ~/ k: w: f2 ^  B/ @4 L; ^: S( X                 QY=~QY;// 南北向黄灯亮
/ q9 G( d! g3 \4 h- f" e                 HY=~HY;6 L/ M' Z6 d! T) l
                 ZY=~ZY;//东西方向黄灯亮; T# H, v0 s& U3 N) ^
                 YY=~YY;  
7 b# w# t. L- l6 {0 W7 f' z                 FMQ=~FMQ;//黄灯时蜂鸣器叫一声2 T  z0 k; K0 c' ?+ M% E
9 @. Z8 e; |! N. h0 x1 O

* l2 |1 r2 y0 Z% G0 j                 DAT=DAT-1; //完成数字的减1操作 ,调整好的数字送显存         0 k5 @8 k7 a# e& ^" B3 ]$ K- e
                 
8 Q2 r5 X( A# n+ S. Q+ Z' {/ m           } 2 J  A% B& k- i; M0 w7 J; j9 V
        }         3 B: C" d, k3 S: {. z0 ?
                 # ^  Y6 b5 j3 S  A% O  `5 x
}
4 k9 Q* S+ t$ l8 G! x4 W6 ~3 |3 p' t8 L, f- k
9 u7 N/ L8 W7 a3 m& q/ f
void D_X()  interrupt 0 using 0        //东西(横向)方向道路紧急通行50秒中断程序
8 |- V. {' o8 u9 E% ?{        
* n% ^$ a  T, n) q        uchar i,j,temp1,temp2,temp3; //定义局部变量8 |4 ^7 l" q% Y0 z) B$ e. n+ G. {. R: S
         EA=0;//关总中断$ N% W2 m# ]2 L2 X
        P3_2=1;6 c8 d% G0 g9 R  r. }/ j' E
        while(!P3_2) ;//等待按键释放8 B* d8 p8 j7 Q/ G1 U
        temp1=DAT;//保存显示数据8 J" g5 y$ x0 Z7 s
        temp2=P1;) \6 K( c/ R4 y
        temp3=P2;: ~' o! ]) R! `6 ]$ H) S

* Z, y1 t; y  k! z2 ^5 K4 U. D9 d1 ~

6 i) W; n" N# l6 p+ k        DAT=50;
' T" ^) R/ @1 i) q        P1=0xff;
  D( D- b5 d8 q# h, O' e        P2=0xff;, `+ O# a2 L' i1 a6 t8 t
        ZG=0;//东西方向绿灯亮
$ C9 R* K8 T, p7 w6 F        YG=0;
1 |  V. z7 Y, j7 P        QR=0; //南北向红灯亮4 m, M2 y3 m2 @0 V- `
        HR=0;
5 W3 J( J" j' ~* b        
7 D7 C5 ~3 N% {9 p. I, d% ^         ' Z: L! J  b3 s& v: j$ Q2 h
        for(i=0;i<50;i++)//执行50秒: T( S8 Q- D# k% F8 N
        {        
0 U9 Y+ X) ^( e# g: m- \. h            for(j=0;j<220;j++)
  O2 V2 K3 B& V3 }3 p  B                {
% L5 k% \, D  t7 u5 B                   //BCD(DAT);//BCD码调整; ~1 z4 O6 Z7 a: }
                   DISPCLK(DAT);//显示3 C9 b: J( e# U
                   DEL1MS(3);//延时3毫秒: W( L& f5 b1 _2 Z# P
                 }, n  O7 q$ k4 J* K! K% e
             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存               
0 g  {) Z9 K" d9 A* [- s% y0 H         }& h6 u2 @* q) C% I
        DAT=temp1;//回复显示数据, x7 R) k2 G/ u8 N: S# c/ }; W6 I
        P1=temp2;
1 K" ^# N, b" K! }        P2=temp3;
, z4 x* H' e3 I, u$ t% k& `% k7 n4 f9 S8 [4 Q
+ h% k2 s- x0 k
        EA=1;//开总中断 - O$ u: y1 C5 Y$ F
}
1 B& y* {( b( I' w  H* x6 z
2 W8 v. m5 `/ \

, v% f  S9 Y, P( a1 ]7 dvoid N_B()  interrupt 2 using 0         //南北(纵向)方向道路紧急中断程序
5 Y+ E& S. P2 W# n3 p{        5 N# t2 A: `0 r) L! ]
         uchar i,j,temp1,temp2,temp3; //定义局部变量% W/ x% C8 L0 W$ Y7 D
        EA=0;//关总中断& m* K5 \! X$ `) ]. L8 R
        P3_3=1;6 i# \# k: a' W- P, e) O- t
        while(!P3_3) ;//等待按键释放
7 k% |2 f2 g1 f% K/ l8 |        temp1=DAT;//保存显示数据  t+ Z, E. z$ [
        temp2=P1;/ R1 u4 ~2 d, T) z( {6 m
        temp3=P2;
8 q  D( ^) G& b+ i4 N1 H7 @- D  p+ D5 _+ o* @. ^% U$ V- G
! \+ h0 X9 S) T% k
        DAT=50;3 }2 L  m  S. w1 N3 X. ~4 o5 y5 P
        P1=0xff;
# K1 H' O) s/ V        P2=0xff;
3 c7 ^% v' N/ g$ Q3 x        ZR=0;//东西方向红灯亮
6 h; o9 h+ D6 [8 T        YR=0;
( m$ d' [$ T, b" H$ ?" `% z        QG=0; //南北向绿灯亮# b# T9 r! l% \. i
        HG=0;         
' W$ s% O) R& u6 z; o( \        for(i=0;i<50;i++)//执行50秒
' l. U# G* Z# N  J- G8 O! D        {        9 L5 q5 y9 W  E4 n- k& ]
            for(j=0;j<220;j++)
9 b0 _4 f2 X1 ^' h7 {$ E  S+ y% ~                {- V; \8 x7 K& ^- k7 {
                   //BCD(DAT);//BCD码调整
, z" s) j' `& v8 ]: c8 q; T                   DISPCLK(DAT);//显示
9 x( w" J& n4 O! h                   DEL1MS(3);//延时3毫秒9 ]0 E: |3 A& S: f
                 }. w8 y, B8 t; ^
             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存               
* {$ s4 N1 K4 z; I         }
# R; A, E, n9 I2 V  b        DAT=temp1;//回复显示数据+ [7 ?3 w" ?# b  D& R
        P1=temp2;
% x, o4 [* Y- V; h& u  ]8 g        
6 O+ {. S) o0 ]) Y9 ~
; \. g5 k5 o7 z; F7 Y
0 t1 ?" C, L: M8 o  r
…………限于本文篇幅 余下代码请下载附件…………8 z% x; v  R( J( B" i
5 K: j7 ]1 m# A5 |7 q
! P7 v1 h* R; Z7 `8 |9 k" j' m

1 ]* t. ?) T4 Y) n6 c% D
( V' f. W1 K4 K5 d
汇编语言单片机源码:
5 x( _! l( j% R' Q9 |0 {2 y: h! V7 X. N( A8 l+ x4 H* j$ _& A
;智能交通灯控制器程序; e* Y  T0 t( `
                ;以下程序完成各脚的预定义
- z! d  Y! I; y, N                FMQ        EQU        P1.0                ;蜂鸣器
* ~- q+ T  e; C* `6 v7 R                QR        EQU        P1.1                ;北红灯
+ E4 z4 o5 V" d3 I4 Q  r& ]                QY        EQU        P1.2                ;北黄灯
% n+ z. A3 {; ~5 o8 g                QG        EQU        P1.3                ;北绿灯
0 d* ?8 ?. Y( H9 W3 `                HR        EQU        P1.4                ;南红灯/ Z2 A% k6 L9 s, U
                HY        EQU        P1.5                ;南黄灯* w0 S: f% {1 l2 Q/ x( F" `" |, X2 c
                HG        EQU        P1.6                ;南绿灯        
* }8 G3 y* S9 }" ~2 a: q                ZR        EQU        P2.7                ;东红灯8 |+ B) s0 h6 j% q# [. E3 e
                ZY        EQU        P2.6                ;东黄灯
/ A* F# A. T  T, [" X' Z                ZG        EQU        P2.5                ;东绿灯               
) x; w% @1 A' x0 c  T% t                YR        EQU        P2.2                ;西红灯4 H5 U4 {5 I, B  y( E  B. h! o
                YY        EQU        P2.3                ;西黄灯                ) b& s1 [) \6 f- G
                YG        EQU        P2.4                ;西绿灯" C2 ?& v. ^/ x; U, h3 `  C
                SWITCH1        EQU        P2.1                ;时间显示的十位控制                8 s+ e6 U+ [3 Q& J  N% w2 z
                SWITCH2        EQU        P2.0                ;时间显示的个位控制- [6 l, i5 `& N) D0 d0 y
8 A* Q+ |: N/ r2 I9 v6 [0 n# m
                DAT        EQU        60H                ;显存8 p$ o& {& {3 I

9 W: }2 v4 O3 Y6 E4 p                ORG  0000H& Z7 _/ Y+ Y' q6 Z% [1 K
                 LJMP START. {$ v# M" H7 z) j9 `8 H$ F
                 ORG  0003H
) w* f/ j1 ^! o- W. ^                 LJMP D_X                        ;外部中断0,东西向紧急按键
$ i: t4 V% \3 P) e' f                 ORG  000BH
$ y4 `3 Q( l' j. L8 J                 RETI                                ;9 g. `. s6 G* a& T( n4 ]* r
                 ORG  0013H# I1 v# D- [+ \2 F
                 LJMP N_B                        ;外部中断1,南北向紧急按键8 X: r$ b1 k! B% a" R: s3 q- ?
                 ORG  001BH
4 C$ L$ g" N; D- }# D2 k                 RETI
1 r& V4 E, r! q6 ?7 t                 ORG  0023H5 C9 ~2 J% H9 d! |4 ]- `" f  S
                 RETI* J$ S6 G1 I* o: Z2 I, @6 P. d
1 {. S; h- }5 X- K6 J3 }" t( X. o
                 ORG  0040H                        ;定位
2 n; w$ K4 n% A5 R START:! ]" l9 H6 [0 p2 f# `/ N$ d

' c8 r9 L7 `# Y                MOV        TCON,        #5H                ;外部中断为下降沿触发- `; }4 m* b% z) f: [7 n5 p  K3 k
                SETB        EX0                        ;
1 N3 P" g" j2 G6 i                SETB        EX1                        ;开外部中断
; p7 g5 e5 q: }' O  h, j+ e. l                SETB        EA                        ;开总中断
8 i6 R$ B* _, @' x! k; c- e/ P2 H                ;IO口初始化
1 i+ J  W" m. Z2 T. }. t$ W' `% w                MOV   P0,#0FFH
/ V2 g  j; [" h0 b                MOV   P1,#0FFH                        ;9 g: O1 k$ E6 [7 u7 v5 f3 T" w
                MOV   P2,#0FFH   ;
) o4 ^, _; ?, V" z4 L% z9 K                MOV   P3,#0FFH                        ;/ u( d( i; A/ O7 ?$ p
                MOV        DAT,        #25H                ;
# T1 J5 }2 l: |9 i' U! @" N) ~$ y" v$ l
7 g/ L3 ~) v7 {# j1 B3 n5 Q
AUTCLK:& V: ?, [4 M- T, }4 C
                MOV        P1,        #0FFH                ;' M/ m/ I2 M2 s0 J' n" |6 n
                MOV        P2,        #0FFH                ;  
2 E9 ?# q( u. q. ?1 `' J                MOV        DAT,        #30H                ;写入每一通路的通行时间
: R  ~6 |; ?1 W- N+ I# u$ O9 Y                CLR        QG                        ;南北向绿灯亮; j( h6 M6 B% e
                CLR        HG                        ;
  m$ ~- C+ S6 |9 H  Z7 S. r+ ^                CLR        ZR                        ;东西向红灯亮4 l+ c$ C1 Q# I0 \! ]
                CLR        YR                        ;' n/ r3 j$ s* l- P  D* ]; L( d2 d

% d, q4 |- ^9 [8 B: I$ h0 m                        MOV        A,        DAT                ;3 C+ F0 W7 e4 O8 y; V+ R3 G" ~* d5 R
                MOV        R2,        #25                ;写入时间值
9 P) A- f* Y- O- w1 e! }A1:/ z( U5 M% Y- }& g
                MOV        R1,        #220                ;
1 a7 S0 N; X+ x2 GA2:7 K( P7 L; g2 Z) M
                ACALL        BCD                        ;BCD调整
  G0 M* b1 Z% e6 V, d) J                ACALL        DISPCLK                        ;显示' Y/ w& `+ @! s5 A4 H0 @/ s
                ACALL        DEL1MS                        ;延时+ T. i: |  ~, m5 A# @
                ACALL        DEL1MS                        ;( a6 }( H' }- k4 C3 r! }; w
                ACALL        DEL1MS                        ;
# ^* g4 _3 v3 I3 ]* H9 M                DJNZ        R1,        A2                ;# s* K# K8 _# c% G. c+ v. ~( X
                SETB        FMQ                        ;        
: n. N3 J5 ^/ F                MOV        A,        DAT                ;完成数字的减1操作
- U9 _5 B% L7 H0 ~, N                ADD        A,        #99H                ;- {1 ~* T( r- e( T( p0 X
                DA        A                        ;
: x/ l( Q2 v9 o# o2 @7 R; R3 H6 P. H' G                MOV        DAT,        A                ;调整好的数字送显存7 Y  D7 J' ^" E/ R: m) }
                DJNZ        R2,        A1                ;
( t* ?3 `8 C1 V% t" x- [                ;最后5秒黄灯闪" j: \; K* h* w$ z  l3 i
                MOV        P1,        #0FFH                ;2 k. Y/ g. W) T$ {5 [( X
                MOV        P2,        #0FFH                ;关所有灯                                   
% S, v0 \' ]3 I! |: x; i  y                CLR        ZY                        ;黄灯亮1 _8 A; k4 R. Q$ Z5 F2 y
                CLR        YY                        ;
5 |+ i4 m8 T; a5 _' `                CLR        QY                        ;
5 {' f, r! W- V! m                CLR        HY                        ;5 [. b8 t5 G* U. W8 d
" |' ^  {2 g* |" ~
                MOV        R2,        #5                ;0 Z# _$ V# N! o3 Z* I
A3:
9 \7 z' C8 D7 G! u3 S! Q. A                MOV        R1,        #220                ;
) x3 r/ I: Z4 o- D4 l! a& C& sA4:
8 w* F1 b4 B; B5 e                ACALL        BCD                        ;
4 q! \1 d' V5 B" K+ h5 f                ACALL        DISPCLK                        ;$ Q' f# O) O2 E5 S/ ~. E% R6 j
                ACALL        DEL1MS                        ;7 M, G2 _9 T; r9 i
                ACALL        DEL1MS                        ;) K9 {; E' B, t
                ACALL        DEL1MS                        ;! u& G8 \/ D7 L/ v
                DJNZ        R1,        A4                ;
3 |; X- l2 R2 l/ j8 z2 [& |6 X0 d                CPL        QY                        ;南北向绿灯亮
1 P, O. I0 E+ p9 |) ^8 P! o                CPL        HY                        ;
" V: A& j# `( N% c                CPL        ZY                        ;东西向红灯亮
7 ^" o, U8 E2 E, l, R8 Z4 H7 P5 r                CPL        YY                        ;        ' Y! ]1 q. V# p: c
                CPL        FMQ                        ;黄灯时蜂鸣器叫一声) `* ]6 R4 O# V$ d
                MOV        A,        DAT                ;
2 B4 W" Q, B" Q6 U" ?7 O4 E) o                ADD        A,        #99H                ;
% b. _& q& R9 O                DA        A                        ;
7 c2 E% D4 |( v                MOV        DAT,        A                ;; D; W0 Z% d" z4 v8 X( W
                DJNZ        R2,        A3                ;2 H' u# o, Q$ ~6 @% G, _  x% v# _
$ J% ?- [! x: I) _0 d4 A3 x2 R. b
6 e2 A" J7 u0 Z
                ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@& @0 j! d9 ^, A1 Y$ q# E8 c, q% D
                MOV        P1,        #0FFH                ;
( {2 H; ?; x: E                MOV        P2,        #0FFH                ;7 o1 D9 e' Y5 a3 s- D# U) w  c
                MOV        DAT,        #20H                ;9 A+ N* m) z8 P; ?
                CLR        ZG                        ;东西向绿灯亮+ P& c, b* Q3 q+ K* j7 k! Y" t
                CLR        YG                        ;; _3 U' `7 [1 X) s
                CLR        QR                        ;南北向红灯亮$ I1 V/ }  k1 j' L. q) `, u9 O
                CLR        HR                        ;+ j. r- R6 `: h9 Q
                MOV        A,        DAT                ;
; S' A1 H9 d3 }; S9 _                MOV        R2,        #15                ;执行15秒
6 h& ?5 J* t/ i: y/ L* a' m- ]A5:
% R1 |. R. U: C3 `3 Q' u( r                MOV        R1,        #220                ;
" v" p. B5 m% QA6:
8 h: U+ B+ C8 V2 N* V% h                ACALL        BCD                        ;BCD调整1 ]. R" d6 l/ A" r3 d
                ACALL        DISPCLK                        ;显示7 e' ~( g1 {  V2 X0 S1 [! @+ L+ C
                ACALL        DEL1MS                        ;! t* |4 ~* ^2 M2 k" \9 d
                ACALL        DEL1MS                        ;: a2 s, A0 w; o. u
                ACALL        DEL1MS                        ;
# _1 n. e" M6 X) `: d3 A4 V' t0 Z/ b                DJNZ        R1,        A6                ;
1 ^0 j0 {, c$ x. X& H# d' N                SETB        FMQ                        ;        ; T2 z0 J- U8 Z% I3 p2 @& ]
                MOV        A,        DAT                ;
7 k# c, O- A5 a                ADD        A,        #99H                ;减1操作4 X: X8 X! T/ @' j* E8 f/ O; O: }* n
                DA        A                        ;
* I7 b+ y2 \3 v/ T                MOV        DAT,        A                ;
3 r" p* F% }. d+ F" f/ B                DJNZ        R2,        A5                ;7 _# X! Y+ ]) o& \0 R, r
                ;最后5秒黄灯闪
0 C+ V0 z. d. f, g3 i0 [                MOV        P1,        #0FFH                ;2 |- S; B: \! M& N- I9 ?6 M
                MOV        P2,        #0FFH                ;关所有灯
8 F% C! g6 [% l                CLR        ZY                        ;黄灯亮
* A+ L! Q- Q+ u                CLR        YY                        ;
& ~; v: {4 f" q' s                CLR        QY                        ;
. E0 [6 y; \& Y. x                CLR        HY                        ;
2 ]# U; d( G! N) ]( Y- M
" H, i# M+ O6 i3 @# b% S0 c$ m- h                MOV        R2,        #5                ;
: H$ U( D. j! r) V! y. O  FA7:' S! f4 b) D! t
                MOV        R1,        #220                ;
* C9 ]* r5 g6 I* E8 O4 O& K, zA8:0 g$ S9 N) c, L! `! }
                ACALL        BCD                        ;- ~3 W( U* Y% @8 f
                ACALL        DISPCLK                        ;, u0 w, p* {3 c( J
                ACALL        DEL1MS                        ;
0 H9 v0 g4 b& a" K2 [                ACALL        DEL1MS                        ;
) k6 J6 A$ B5 c9 r, s! e/ G/ L                ACALL        DEL1MS                        ;
8 {/ [9 N$ _2 q7 t) s) T& {% h                DJNZ        R1,        A8                ;) l7 h" ^* Y+ h3 \1 ~' U4 T
                CPL        QY                        ;南北向黄灯亮5 g, F6 s) ^  f0 N% Y
                CPL        HY                        ;3 ]7 ~0 I5 F5 N
                CPL        ZY                        ;东西向黄灯亮
! f6 \0 Q0 Z0 F  j0 K                CPL        YY                        ;        
) X6 U* {( U/ n' _* x                CPL        FMQ                        ;黄灯时蜂鸣器叫一声9 k. f, Q, L  ~, Z7 U
                MOV        A,        DAT                ;
/ e5 S7 i9 ^0 y, x& h                ADD        A,        #99H                ;
* |& x( X1 v8 C4 K: e! c                DA        A                        ;
' A/ w9 r; k. j                MOV        DAT,        A                ;% f' R; w% T) h- w. F# ?) {
                DJNZ        R2,        A7                ;7 T7 s' m5 l) R# c
                AJMP        AUTCLK                        ;
, G7 s( X7 S  n; r& u                NOP                                ;# }# u% |! e: o# t6 w  @8 ^
                NOP                                ;8 u; }# L1 N, a2 _. o
                NOP                                ;
& A; S) b2 j% e7 q! ^9 X                LJMP START7 p8 H8 r/ A- W  q& C) i
;;*********************************
! D$ N2 d/ ~' C;;显示子程序
* S2 A! H9 N$ k% _& D8 ]; L* G;;**********************************           
3 c/ p3 n2 D5 r) Q2 `! fDISPCLK:8 ~0 q. I# `+ h1 I
        MOV        DPTR,        #TAB        ;定入表头: f5 g2 e/ ~; r; J$ {2 W* \/ z
        ;显示个位
: v7 e5 v9 O; m        MOV        A,        50H        ;
# o& `, v8 n5 S! {. g' j2 Z        MOVC        A,        @A+DPTR        ;
! P* }$ [1 n. B) Y! t               MOV        P0,        A        ;
6 ]* p* K) }' c% x3 L7 k" ^  |               CLR        SWITCH2                ;  个位显示! h) K: P1 {+ z8 i+ Q% V) G4 @
               LCALL        DEL1MS                ;
* @$ V/ n8 \) S9 @# Q. _2 F               SETB        SWITCH2                ;个位灭
4 d1 M0 Z( @2 Q6 h: _               ;显示十位
* x# H; y4 p, Q# ?7 S               MOV        A,        51H        ;
+ q. C0 @! J/ L7 g, l5 [               MOVC        A,        @A+DPTR        ;  }' o5 G5 W  }3 g
               MOV        P0,        A        ;
8 w' Z) N3 O- N- A! Q3 F               CLR        SWITCH1                ; 十位显示/ K! }% Q$ X' t! T
               LCALL        DEL1MS                ;, ?: f1 f4 D/ H# Z+ i& X6 P
               SETB        SWITCH1                ; 十位灭
) ^. f  C, C. c1 ?# g               RET                        ;
: _0 ?: x: p1 v& S' \. ~               NOP                        ;
% k4 {: `3 e! D- z+ M8 E. F5 X# j* Y               NOP                        ;1 Z+ P$ P  a/ i4 F4 o
               NOP                        ;
) F7 X, C- f9 Z# w. {; ^. g9 _3 F/ R# o               LJMP  START
* b8 z4 i6 R) D7 Z;************************************************************
4 i$ T; S* e5 A% z5 |. p2 r4 U;横向道路紧急中断程序5 y7 y9 g, M7 W( W
;************************************************************% T: Y0 b' D% R3 m% f; F
D_X:
! F& k2 v7 x6 ?% Q, J                CLR        EA                        ;关总中断) e3 I( Q% g# w) ~- d  p
                JNB        P3.2,        [        DISCUZ_CODE_19        ]nbsp;               ;
) X/ f. d; _! ]1 T: D# ?                MOV        A,        DAT                ;保存显示数据# p5 P' {5 Y2 ?1 s! j: F. j3 Q
                MOV        20H,        A                ;3 r. C1 q5 \: w/ J) }% M* _
                MOV        DAT,        #50H                ;
2 T, X2 G! L7 {" C- {2 K/ l( y                MOV        21H,        P1                ;2 ~4 [1 k  B, f/ g
                MOV        22H,        P2                ;
2 E" x0 V* l  E3 W0 M5 k                MOV        P1,        #0FFH                ;! w; L$ F, [; J' F+ S* N3 E: c$ y
                MOV        P2,        #0FFH                ;
/ `3 g9 r$ A! K' f8 J2 o9 T) t                CLR        ZG                        ;东西向绿灯亮
* p0 u8 c4 p3 L: i1 \4 D                CLR        YG                        ;
" c! ?/ u7 m/ C1 n$ x9 ]) ?                CLR        QR                        ;南北向红灯亮
$ |3 d5 N' |0 Q. d) Z1 M- }, W5 E8 A! m' V9 x. @7 c4 _0 u

9 X4 V% w$ U3 e9 O8 _" f…………限于本文篇幅 余下代码请下载附件…………# ~8 V. z* [2 ^- ~
/ M' d" }3 R$ b, O2 ~4 k
游客,如果您要查看本帖隐藏内容请回复
7 Y+ b( f  u% k
+ k  [7 s" z$ g7 U

4 ?; r2 `9 @4 h8 r1 Y( Q
& e8 B) q/ K& {

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-19 00:00 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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