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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
交通灯设计 AD格式的原理图和PCB与单片机源代码4 F0 a, {0 B3 ~" G4 n
) Y2 r2 M: I! J; m  O9 d- V( D# p

+ Q  R' r6 I- j7 Z  k一个用51单片机做的交通灯的设计制作,而且带ad画的原理图和pcb,有c语言和汇编语言两种格式的源代码.
! b+ ?) ~6 _; Z. p
7 e4 d: [1 s+ s1 Mad格式的原理图:9 A9 w3 S' ^# a+ e# v

' {; d( `1 W8 }/ [
, y. z2 B+ n# }' j! I9 i# V; t) V% M# R" p2 \4 J. u
pcb图:
. X: a* o/ W. B- F6 t' Y$ Y
3 h, [/ h% o7 z' d' S0 [单片机c语言源代码:
9 x4 {3 ]' n. y" ?8 n- |' Q
/*        程序效果:单片机模拟控制交通灯程序,规则如下:当南北通车时,此时南北的绿灯亮,
" h( n5 y# P4 a! \( |东西的红灯亮,之后南北的绿灯闪烁3次,过后黄灯亮,延时片刻,转东西绿灯亮同时南北红灯亮,
5 s9 X, J$ r6 ^) R5 Y  T之后东西的绿灯闪烁3次,过后黄灯亮,延时片刻;数码管显示的值都同步,结束。*/* I( l8 c$ e" d
#include //头文件
- A, {- s; h$ @#define uchar unsigned char//宏定义
  T: ?0 v! Q$ M. k#define uint  unsigned int
2 B. G& `0 {. w2 O/*  旧IO定义*/- W/ o' N0 _( ]/ V7 w* D
sbit FMQ=        P1^0;                //蜂鸣器
1 m" P9 g# {( i, g- @1 |- b# @/ dsbit QR        =        P1^3;                //北红灯% P% [5 D' `. V6 x$ E0 M( C
sbit QY        =        P1^1 ;       //北黄灯5 k5 N; {9 b, m
sbit QG        =        P1^2 ;    //北绿灯
8 c6 B7 _) }, xsbit HR        =        P2^2 ;    //南红灯; v4 f0 d6 j3 k* V& A' t
sbit HY        =        P2^0;     //南黄灯/ o- q; t: O6 n& t9 m1 S# r
sbit HG        =        P2^1;     //南绿灯        
" d3 _+ l+ i/ K" t' ?sbit ZR        =        P1^4 ;    //东红灯  S( d2 m2 P3 I9 {1 n2 K/ ~) t( X
sbit ZY        =        P1^5 ;    //东黄灯
& h, }6 r, ~% k* ^# o( v; @* Y- ]( lsbit ZG        =        P1^6 ;    //东绿灯
1 F6 b' v: S& ]* qsbit YR        =        P2^5 ;    //西红灯
( }+ I; u  ]+ o2 j. G0 k! psbit YY        =        P2^4 ;    //西黄灯
% @3 B$ D% N. t8 B* v. Ksbit YG        =        P2^3 ;    //西绿灯         
3 D2 d# D  V/ Lsbit SWITCH1        =        P2^7;        //时间显示的十位控制$ P% `' s9 u" b  U& k% F9 }' F" s- Z
sbit SWITCH2        =        P2^6;        //时间显示的个位控制! h0 F9 Q. d3 ]0 o& `. k
/*        //新IO定义8 p8 F7 n  @2 `% L& T$ g
sbit FMQ=        P1^0;                //蜂鸣器2 M% e5 Y8 A4 v+ [( O
sbit QR        =        P1^1;                //北红灯5 R3 y8 b. B: \8 T6 Q
sbit QY        =        P1^2 ;       //北黄灯
, T4 D0 p  Y) l) F% G  qsbit QG        =        P1^3 ;    //北绿灯
8 o% a) G+ A: [sbit HR        =        P1^4 ;    //南红灯. |  y8 A, m, w% x$ s% ]' K0 U
sbit HY        =        P1^5;     //南黄灯
6 B1 W( W& |) j! P# W: ^sbit HG        =        P1^6;     //南绿灯        , Q; K2 B! \9 R9 C
sbit ZR        =        P2^7 ;    //东红灯4 P/ Q, M; f/ l  g( ?# \- i
sbit ZY        =        P2^6 ;    //东黄灯) w2 T% [5 D' U4 |- m& C, [$ U
sbit ZG        =        P2^5 ;    //东绿灯
+ S- h9 i0 g# H1 R! ?# A4 Bsbit YR        =        P2^2 ;    //西红灯0 q8 O! z& F5 k- J  T
sbit YY        =        P2^3 ;    //西黄灯
/ D7 v  T, L+ ~& G. X$ b8 hsbit YG        =        P2^4 ;    //西绿灯         $ F! o: |  R) J# v. V
sbit SWITCH1        =        P2^1;        //时间显示的十位控制
1 q* Q- n  j( [4 W% ~. ]sbit SWITCH2        =        P2^0;        //时间显示的个位控制
4 O3 q7 z) x+ F; d7 [- P*/# n! ^' ~8 d( i6 _" t
//sbit P3_2=P3^2;* k1 ]' i9 V- N; q4 g9 J8 o
//sbit P3_3=P3^3;
7 E$ ]& u6 k, i0 V& x- A; Huchar DAT;//显示时间变量
& C' i( Z  c. W" Quchar DISP[2]={0,0};//显示缓冲区+ C, ^* @% ~& n/ o0 A# F2 Z
uchar code table[]={0xC0,0xF9,0xA4,0xB0, ////共阳数码管段码表0  1 2 38 P7 V3 ?( E* Z
0x99,0x92,0x82,0xF8,0x80,0x90,0xFF        //4 5 6 7 8 9 灭
# ^2 y, l6 d; K) l% P/ `};
$ `( |4 {" [) d3 I6 N; p: E  ?void DISPCLK(uchar i);//显示函数
5 L+ _8 m' \! n5 W* x- O" R% G- l9 q( M3 @* ]1 _: X( Y7 Y5 O% S  M
1 v: d! E( V) G7 W% x$ Y
void DEL1MS(uint z)        //延时子函数
0 w1 I$ L2 O( v; G4 W4 X3 `{5 i# W! T7 @3 |0 m
uint x,y;; w6 L4 j7 D. F& q
for(x=0;x<z;x++)7 S$ J, ^7 l# {2 d9 F4 }
for(y=0;y<110;y++);
! l; X+ h, L5 Y/ F8 h; G. e! _}
* ~3 H% ?) g, Svoid main()    //主函数1 C3 R8 U' \2 m" C9 X- B% M# H
{    //  uchar i,j,k,m,n;//定义局部变量/ ~( T! g$ l- M! ], i
     uchar i,j;
9 N; M/ }2 a, p    TCON=0x5;  //外部中断为下降沿触发
/ g7 F( Q$ e: r& ^; C4 M         PX1=1;//南北方向高优先级
" u; w5 q; F5 [9 C/ o. r7 L1 D     EX0=1;           //1 M( Y8 h+ {& C0 r: K. Y: x" O
     EX1=1;    //开外部中断5 u  U/ ^) I. ]* E4 Z
     EA=1;     //开总中断
- ^  Q3 r; V0 j! K( F        //IO口初始化' ^% D3 p$ t- j; @
         P0=0xFF;# d0 }4 N7 X! O  B% K
         P1=0xFF;/ s1 U9 n! F' i! t7 O3 q5 c4 s) ?) u: I
         P2=0xFF; 5 `% h" c8 x3 z
         P3=0xFF;        
/ l- i" r6 ~7 n% X* o9 Y         //DAT=25; //汇编0x25* L& K4 L" a$ W8 z1 n1 M. I. l5 C/ n
   while(1)
; N, k+ C' K6 D   {
2 `& P) _7 q9 E; l          P1=0xFF;//灯灭
6 h) j- K/ x& D: ?: B          P2=0xFF;//+ d: T# l' _% P6 b( L
          DAT=30;//写入每一通路的通行时间
  J0 ?( @" f& {% u8 n2 B1 Y          QG=0;//南北向绿灯亮
, P$ o! H- Q( X0 s/ c; c% y% E  g          HG=0;" S: L6 b: P( X2 f
          ZR=0;//东西向红灯亮
, |  T% [" V1 O          YR=0;# d' ]8 m5 o5 K8 Q- p# ^# Z1 \
  /*/ \. x- U- j  ~- S% q" X5 E
QR        =1;                //北红灯/ W, Q3 s" p) L7 ]8 t# z
QY        =1         ;       //北黄灯9 ?! k; s6 v4 y' n1 u9 |2 A
QG        =0         ;    //北绿灯 QG=0;//南北向绿灯亮: F4 T2 k, B7 K5 J( L/ j  i
HR        =1         ;    //南红灯
: w8 v6 h6 @( ?; h2 ` HY        =1    ;     //南黄灯
+ }2 }" L+ A3 N/ ^ HG        =0        ;     //南绿灯        
9 I1 \0 [& s3 H& D6 _+ f ZR        =0         ;    //东红灯
: g( S2 e; r! y, l9 l2 i ZY        =1         ;    //东黄灯! q. g) ]3 C+ G: T; U) d: T+ `3 j
ZG        =1         ;    //东绿灯
  e" p; q  X. ^8 O- i- ^' C6 x3 N YR        =0         ;    //西红灯# M- W5 _' ], B
YY        =1         ;    //西黄灯6 x& ~3 u3 T, b- F5 }9 R# s4 o
YG        =1         ;    //西绿灯& i; N- t. C! ?5 q( G( [
        */  % {1 T5 V* B- }; H
          //ACC=DAT;. e3 {8 O, c' j6 ?& i2 F5 k

' F  Q# g* \) M& C( ?- ?

) H% {2 @6 J* q5 B          for(i=0;i<25;i++)5 d  A5 _) e* B2 Q5 r( N  h
          {        & _: f1 H( w% k# z
            for(j=0;j<220;j++)
7 W* z* S2 u  k% l; M5 {                {
1 c- B( H4 x7 l, `2 p1 `                  // BCD();//BCD码调整
& Z* [6 F% a- v                   DISPCLK(DAT);//显示1 r( q1 H9 t8 U
                   DEL1MS(3);//延时3毫秒   
" p5 q; w, Z) g- q& o& b
- W3 m* |. ~4 m- I, {

- _' y3 |, ]* U. g2 z5 w- U                 }
2 F; h$ q9 F" Q/ Z% y+ k+ m                 FMQ=1;//蜂鸣器响
* c& e1 s- p7 h: n. |2 M3 V8 ~                 //ACC=DAT;
* e' b3 K" v3 Q: Z1 _/ }                // ACC=ACC+0x99; //完成数字的减1操作
  e5 v/ d' Z7 U" P
+ ~) R% n1 z+ l8 d) A2 U( U, t

; ~/ \' |0 W' X5 L                // DA A;//???          i8 x% o% }8 n
                 DAT=DAT-1; //调整好的数字送显存                 
2 g! C4 Z/ }) t$ _           }
0 h+ R" z7 `: z) r. d% {5 V1 b/ G( ~' K4 \8 F6 z5 q
5 r" Y& l1 \  q% T/ x# \
           //最后5秒黄灯闪/ _$ N4 j4 C2 w# A; Y/ [: V
                 P1=0xff;4 _) J& F( c/ ^. X
                 P2=0xff;//关所有的灯, W6 o( m7 F0 l
                 ZY=0;//黄灯亮+ u: X+ O/ G# }& q! B$ O4 a
                 YY=0;
* L6 U( F# v' C* D                 QY=0;; `# ]  P0 L# w0 z& \! k, m
                 HY=0;                  
- F8 M$ W2 _, i                for(i=0;i<5;i++)4 N" S2 O! @, m0 ?7 L$ y
          {        
" E+ a4 z8 F; U% ~7 e            for(j=0;j<220;j++)
/ O, K7 x6 Z$ Q3 \1 f' U                {
) _1 a6 e) Y5 C% ~( O  G                   //BCD();//BCD码调整1 B/ p' ~. D. F  F" A
                   DISPCLK(DAT);//显示4 t4 t& F0 C9 k1 ?
                   DEL1MS(3);//延时3毫秒$ @3 H* A5 ?( T6 E2 n, l- X. G* @
                  
  u8 w) g2 P6 y- L, {) }! g                 }
# m9 g% c/ G8 f, k                 QY=~QY;// 南北向黄灯亮. a9 g8 g+ {$ q$ J4 `2 d
                 HY=~HY;
( E" O4 H; R# J. m                 ZY=~ZY;//东西方向黄灯亮
% H" s4 B) _; l7 C& _                 YY=~YY;  ' d3 b/ O+ t$ [. t9 w
                 FMQ=~FMQ;//黄灯时蜂鸣器叫一声, E. z7 U6 l% g% R% s8 y

2 g. p! h7 q/ Y% P9 `: X

! h  X+ e, C4 M6 |/ N                 DAT=DAT-1; ////完成数字的减1操作,调整好的数字送显存         1 D! b7 \9 t* w/ Y" C5 u
                 
! r$ P3 g5 H/ R           } ! i) d+ v- v7 f5 j0 p
0 a# o% }# S. K" P% F
" s  K1 J2 h9 q( A  t8 o% l8 T
           P1=0xff;# i  k1 ]. ?8 {& z% M% V. u
           P2=0xff;         : l1 ^  Z- ?9 ~
           DAT=20; //汇编0x206 i+ e8 o' c2 [' C6 w. w
           ZG=0;//东西方向绿灯亮
3 Y' A; E8 O. f$ \0 x+ Z- t           YG=0;
1 {0 _2 C( Q+ {. |           QR=0;//南北方向红灯亮
3 a4 s7 ~4 c' p0 d+ f5 x           HR=0;
( B# E2 P" Y( g1 T) y, Q2 A           ACC=DAT;
0 t/ A& z# J8 X  r6 ]4 p8 y- }           for(i=0;i<15;i++)//执行15秒+ L# P7 D  p% S9 T0 a1 K' T; M
          {        6 E- T0 z; m5 ^8 r5 M" _. F) E
            for(j=0;j<220;j++)
+ m( [8 b& Q, ]+ V: x3 _8 f                {
% X1 t& O8 n2 }, K. l                   //BCD();//BCD码调整
% E% P7 j- {+ T3 E# t8 Q                   DISPCLK(DAT);//显示; I5 @' M) J$ N. J
                   DEL1MS(3);//延时3毫秒  
* S, S/ }; R# e                 }
, Z0 Y6 D! k$ \! J9 |/ D6 p                 FMQ=1;//蜂鸣器响: \' n) H$ d  k5 Y! P
             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存
, W; T9 ]" U* z0 U1 k' Z- q8 P                " Y: F7 e2 d# S; a
           }
) q$ S- z( w' i# n2 T' w  a) z0 V                 //最后5秒黄灯闪
( t% \& h2 S9 |+ Y+ Y9 U8 B5 D                 P1=0xff;; c5 X+ u+ W# A( S
                 P2=0xff;//关所有的灯
2 D0 R. i9 I" V, ^                 ZY=0;//黄灯亮! Z& K# M- h$ ~1 C2 V* J1 j
                 YY=0;4 ^7 w, l0 h4 _1 `, _
                 QY=0;* f# B! ~; F7 U: W! M5 v
                 HY=0;
; O3 y" S5 H$ v& Z6 K/ L          for(i=0;i<5;i++)
3 B, ?) S# @# J) D          {        7 l/ F  M! ]9 {/ H$ t6 ?3 F
            for(j=0;j<220;j++)
2 d6 W4 [0 z% m& e: s( B                {
2 q) f) F, K9 `5 z0 ~* j. d                   //BCD();//BCD码调整
% K* L7 E; @+ S( z$ k7 V! z( S) ^                   DISPCLK(DAT);//显示
. f1 l9 u8 ^8 S9 |: C5 B                   DEL1MS(3);//延时3毫秒                    
% V5 _( U+ Y$ z; L. P) p2 G: @                 }
7 c3 d9 ?. N- y: [1 L* y                 QY=~QY;// 南北向黄灯亮) ^, U" k  e' h3 r2 @
                 HY=~HY;4 X$ x; h9 v7 @. t
                 ZY=~ZY;//东西方向黄灯亮
0 q* \$ p  ]* K0 c! r2 ?                 YY=~YY;  
; u  d9 e. B6 y, W( `                 FMQ=~FMQ;//黄灯时蜂鸣器叫一声$ [5 r9 O; @6 B. s5 ]

" B* n; q" M& Y% ^6 K0 A0 A. @
% e; o5 F" @; H# X1 ]% C* @4 l
                 DAT=DAT-1; //完成数字的减1操作 ,调整好的数字送显存         
! |5 l" O  Z/ y" v0 I                 
' j2 R# m2 u, q7 X  V. M+ a           }
# Z0 M- o6 d& q9 `        }         
9 L! q* ?0 t+ ]9 {. @2 q                 
8 T( ]* j6 Y- w}
0 j" W  h7 `9 h1 A/ |) F3 v8 _6 S, r9 v
. G; k7 Z: j; x4 N0 a$ G: ~* s: r3 F
void D_X()  interrupt 0 using 0        //东西(横向)方向道路紧急通行50秒中断程序
% Z& ?, O! ^- U5 L- ]{        
' X1 G3 T* `- s% |7 W- ^        uchar i,j,temp1,temp2,temp3; //定义局部变量" u  [- v+ h2 d& Y
         EA=0;//关总中断1 C5 [% d+ P2 y/ U9 d# Q( P
        P3_2=1;8 @) d( N6 U+ S8 D& {
        while(!P3_2) ;//等待按键释放: D, J: q7 X/ o+ B7 w/ I" C
        temp1=DAT;//保存显示数据
+ ]' j( L; H4 ~( t5 Y; i) _        temp2=P1;
8 r* g5 Q8 V3 m0 M4 X  b        temp3=P2;
& |3 t4 T6 _) g2 \7 p3 h/ J
; w5 h, a6 X6 L6 C' e. o

6 @6 @* W. D  |8 h9 L        DAT=50;
1 q# Q# u, r1 N        P1=0xff;" f& J4 e* D) B9 ?( @, {
        P2=0xff;1 m' y2 j( K% h+ j; l
        ZG=0;//东西方向绿灯亮9 s. N: t/ P& T9 q
        YG=0;
9 a8 g( [* X0 l/ t0 {/ t$ B        QR=0; //南北向红灯亮3 n0 O- X3 U# A' Z9 n0 y
        HR=0;
. e4 Z; d3 ]3 K9 t- ?) }  I        
5 k) b2 @) N) w! D( G$ Q8 @% C% A+ B. u- ^         
( V9 g; b- D% D        for(i=0;i<50;i++)//执行50秒. M$ X; \# q! c* g9 k, H
        {        9 i7 \3 Y7 s, W& M- {
            for(j=0;j<220;j++)1 E, Z- f$ f* m' r8 b' k4 b
                {3 n/ {) m3 A. J! u7 ]( H9 ?
                   //BCD(DAT);//BCD码调整  ]" l1 p  j1 ^& b& N
                   DISPCLK(DAT);//显示. Z0 t2 F3 j3 U# e. e1 L' X( Z3 A
                   DEL1MS(3);//延时3毫秒1 `( A8 o: _0 ~/ I$ I* a+ o% w6 u
                 }+ J4 U- W+ ]* T7 J& N& b6 A
             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存               
; d1 p; S2 U0 @* A: S, o- K0 {: A         }9 h4 t3 T7 _8 D5 s3 j% v
        DAT=temp1;//回复显示数据
9 R2 Y/ d2 {, Q. Z5 b        P1=temp2;
+ i1 n: o) T6 F- f        P2=temp3;
* x. t3 n6 ?7 R' I1 W7 E0 p) G; K2 {  b# q4 o9 {. `* i

4 M- ^, k/ y# z        EA=1;//开总中断 4 ~+ _3 e  p( g. ^& C
}
7 \8 O& w; n# V. q' z& I: E  F5 ^
( c+ |* g" ?/ V# O7 r
6 W/ ~7 U) U; |' l
void N_B()  interrupt 2 using 0         //南北(纵向)方向道路紧急中断程序5 _8 y8 E, G' N7 v* P( A
{        9 o; ^& G2 Z) [
         uchar i,j,temp1,temp2,temp3; //定义局部变量
) D+ D# O5 g4 a* L* I8 {        EA=0;//关总中断2 ^2 C0 g" r/ E8 V
        P3_3=1;" a! Z: C3 I3 {
        while(!P3_3) ;//等待按键释放1 Q$ M) m4 _$ v, r/ p2 n8 d: H
        temp1=DAT;//保存显示数据
" w2 ]2 V8 b$ J( E, }; ?. z0 ~        temp2=P1;$ ^1 e: K3 [4 A* E! ]$ I: f9 @
        temp3=P2;# E5 [: D" o3 H( p% n! U- \
1 _# P6 y9 D1 g5 D
9 \  X5 Z7 I$ Y! j
        DAT=50;
. g; x7 l3 s- C, S" S        P1=0xff;
+ G) H( L, Z& Z        P2=0xff;2 L2 S- {1 @- q5 \  d6 \3 P9 `
        ZR=0;//东西方向红灯亮
5 _0 f$ Z5 L4 y6 T/ A& }& U' ^        YR=0;* b+ s$ h! j) \9 p# q& x
        QG=0; //南北向绿灯亮
1 Y4 ]) w/ P" ^& ^        HG=0;         0 s* w  v1 [# D: F, l
        for(i=0;i<50;i++)//执行50秒9 v; e9 I# K9 R0 ?% @5 o
        {        
. z& |5 b) ?: [# D            for(j=0;j<220;j++)
2 m9 i# c. y% i9 B                {' s1 [5 [# M0 F( w8 J) ~4 R
                   //BCD(DAT);//BCD码调整
  T% S* z- A3 {% d                   DISPCLK(DAT);//显示2 v! P/ y8 \9 W9 [
                   DEL1MS(3);//延时3毫秒
5 h5 ?* b* d3 F' s                 }
. [" n* d! ?" y5 l- o% r8 y             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存                / t, q% z7 \7 c7 U  x6 u4 ?: o4 }
         }6 C+ g, Z8 }. u9 ]( Z  E* ]
        DAT=temp1;//回复显示数据
) \" f( P" N+ M' m3 V2 L        P1=temp2;& }9 r% u, Y5 q* J3 d4 ]" u+ w
        4 u* x9 E( b4 I% t
' p  \- G  U. J- Q

( t/ @( J( u5 Z9 y1 p) p$ e- m…………限于本文篇幅 余下代码请下载附件…………7 ]* T2 ?- p6 o9 a* t. ^5 A7 I
( Y! Y/ L$ h. |$ W: }; K
& ~& w7 E  z3 `" [5 K" H
  P% U# j  a$ R8 U; \0 Y$ T

6 Q) Z; S; U: f0 `- F/ r* N' V汇编语言单片机源码:- p$ [0 i9 }7 |( V
, E, u4 `6 G: P, o: w
;智能交通灯控制器程序' ]7 `: s" `0 v
                ;以下程序完成各脚的预定义. S+ I" [' i& K* s7 ?5 g+ ^
                FMQ        EQU        P1.0                ;蜂鸣器3 V, _9 R- E+ n$ N% v
                QR        EQU        P1.1                ;北红灯( [$ K/ A0 F8 T5 E# e/ J" _
                QY        EQU        P1.2                ;北黄灯; [# I8 h9 o  \; b
                QG        EQU        P1.3                ;北绿灯( G, L- Z& \. m# M
                HR        EQU        P1.4                ;南红灯0 Q6 F& t. Q- ~& y
                HY        EQU        P1.5                ;南黄灯
. a. f' @& i. q                HG        EQU        P1.6                ;南绿灯        
3 ~* J/ @$ k* p* h                ZR        EQU        P2.7                ;东红灯
! u9 b! D7 }, S! _' k, X$ n                ZY        EQU        P2.6                ;东黄灯/ Y& B$ K4 c! x; C' A
                ZG        EQU        P2.5                ;东绿灯                6 i. l/ H& e2 Q$ `" g
                YR        EQU        P2.2                ;西红灯. q) Y0 ?  \: O3 U/ j, b7 h
                YY        EQU        P2.3                ;西黄灯               
; a0 H) b. f3 [) G8 o                YG        EQU        P2.4                ;西绿灯
+ |, I7 n, e3 ?9 F- b2 o, k5 S3 M                SWITCH1        EQU        P2.1                ;时间显示的十位控制                / ~$ d* K' E: b* |+ s: y
                SWITCH2        EQU        P2.0                ;时间显示的个位控制
  m/ R6 ?# y! J" g  p2 y, H! a# H( g2 s; o6 Y
                DAT        EQU        60H                ;显存$ s. G. n' W# S  A' P# D2 `6 ^
8 ]+ }: D& k- U- U' i1 L9 k
                ORG  0000H
/ Y6 S2 I& Z% i  L                 LJMP START
# V. h8 K+ c+ R8 r7 b0 U, ]0 U                 ORG  0003H
% H: O+ b$ }3 A9 \3 t+ z6 u$ W) r% O                 LJMP D_X                        ;外部中断0,东西向紧急按键, @) f2 F* F7 L: @4 ^" V
                 ORG  000BH
, @' r: J6 a, W- I' P3 ?                 RETI                                ;$ {6 ]8 l6 b% r9 j& [" \
                 ORG  0013H+ a0 M/ ?/ v! \6 z9 r
                 LJMP N_B                        ;外部中断1,南北向紧急按键
! k; ^. H7 A% G- ]4 i# s7 ~                 ORG  001BH
0 D* ~% X/ I, d6 C$ L4 S                 RETI8 I$ Y8 z5 X& G/ O
                 ORG  0023H
! R) a& z" f* A& y                 RETI
" G' v0 @. q1 x7 w2 F; W" o- C- }) o
                 ORG  0040H                        ;定位
6 G: j7 p" U" T8 t( E START:- x# ?% P8 V( I* ]

" ]# O1 r5 m1 {$ E+ V5 Z4 H; H  n                MOV        TCON,        #5H                ;外部中断为下降沿触发
: P; E( R% p. G                SETB        EX0                        ;9 Y; g9 X3 C$ k# d; Y
                SETB        EX1                        ;开外部中断" D) l/ \* r" t: a
                SETB        EA                        ;开总中断- c$ o7 K) N" j* Y9 z: P$ H7 O
                ;IO口初始化" `$ X! n5 z! Y& `! b
                MOV   P0,#0FFH
! v% ?6 K, z7 v! |/ e2 V3 z2 }                MOV   P1,#0FFH                        ;
9 h2 w! t; y4 i# p! F" y: a. w+ D                MOV   P2,#0FFH   ;
& }% ]9 z- @. Q+ o7 G. r% m                MOV   P3,#0FFH                        ;  H- l( n3 q  [- D" k
                MOV        DAT,        #25H                ;" A' h; T4 G4 Q. e. R4 e. |: G5 A# z
- ]- J6 n; k6 c' j

# C0 U% e8 Z/ d- _' _  jAUTCLK:: z7 |4 Q3 g/ }3 F4 F
                MOV        P1,        #0FFH                ;# o$ P( b! \) |; h3 e
                MOV        P2,        #0FFH                ;  / o, r2 s9 _* {, f- [- P4 n+ g
                MOV        DAT,        #30H                ;写入每一通路的通行时间
& L1 [/ G7 K# ~5 K) r7 `                CLR        QG                        ;南北向绿灯亮
! L9 U  W" l: ]                CLR        HG                        ;
  _9 Y4 n; L' `1 J; z                CLR        ZR                        ;东西向红灯亮% |- y, N; d9 A' q. o
                CLR        YR                        ;
. ^9 m2 g: C9 r! N  V5 H3 b* V6 g0 T" B! T& V) }
                        MOV        A,        DAT                ;
  Z% N/ ^9 M7 [4 ]5 g8 T                MOV        R2,        #25                ;写入时间值; q6 U% g8 j2 i9 f2 [( `
A1:: ]$ r9 r6 W2 d- o3 C
                MOV        R1,        #220                ;1 N" L& p" o. L. A4 C+ P$ w5 f
A2:
1 c( B, v+ i. W4 N                ACALL        BCD                        ;BCD调整$ S6 n! E% f; i" r, d; |
                ACALL        DISPCLK                        ;显示0 ~( p7 [' Z* b
                ACALL        DEL1MS                        ;延时5 F7 K: R( x7 ~: Q. }
                ACALL        DEL1MS                        ;( u1 R( Z9 R3 q1 p! A; d
                ACALL        DEL1MS                        ;
$ |4 k  t$ p, N/ f, f                DJNZ        R1,        A2                ;! @  o1 H# ~" a; z
                SETB        FMQ                        ;        % y9 H2 l; S- U
                MOV        A,        DAT                ;完成数字的减1操作$ V( I5 G4 C. M, |6 `
                ADD        A,        #99H                ;. I) y3 e) B; l3 z, {, e
                DA        A                        ;" G7 D' p. `6 q9 X  @8 E( I1 |
                MOV        DAT,        A                ;调整好的数字送显存" R: \' X4 a0 [
                DJNZ        R2,        A1                ;
# O  y7 b3 X$ N% Y" H                ;最后5秒黄灯闪* o- g$ |: w" Y% R% S
                MOV        P1,        #0FFH                ;
6 Z, n1 \$ k. R! m" G2 E+ E  w                MOV        P2,        #0FFH                ;关所有灯                                   ; ?4 ]. T* V, ^5 Y/ X4 e9 X4 b
                CLR        ZY                        ;黄灯亮; A7 B5 `, `7 N: F1 ~3 T3 m% L, _
                CLR        YY                        ;# m9 o$ S; U; G) N( X1 c, R
                CLR        QY                        ;% Q! ]4 |: }% Z
                CLR        HY                        ;& D# i8 F8 I' a) b, t9 _

; W! o  D/ G8 i" q) r% [                MOV        R2,        #5                ;
1 n0 F; m5 a1 }& |A3:5 `2 Y& _8 F1 j' T& _
                MOV        R1,        #220                ;
2 Y2 [) b" z$ X' y% oA4:
  Z. r2 N$ h. X7 {( J" ]; i& V                ACALL        BCD                        ;$ \7 R" C' t2 b2 E8 B  D
                ACALL        DISPCLK                        ;
# d3 k$ p' G" k4 w                ACALL        DEL1MS                        ;
. P5 q7 |# U; D8 s+ \" Q                ACALL        DEL1MS                        ;
) A; {1 A2 Q$ s; Y                ACALL        DEL1MS                        ;- A! {# S( R3 Q# d3 B
                DJNZ        R1,        A4                ;
5 n% ]0 e0 a+ R5 v. U$ @* S/ a- }                CPL        QY                        ;南北向绿灯亮4 F, g  ^0 n2 W9 W; G; j
                CPL        HY                        ;. K+ S+ N# q- z) n; E* e5 {
                CPL        ZY                        ;东西向红灯亮( d2 G3 g3 V( G1 r  _$ q
                CPL        YY                        ;        
7 `0 `; g  f7 V) v+ k- l. w. f                CPL        FMQ                        ;黄灯时蜂鸣器叫一声* H% |/ ]8 o1 o" m- J; N/ k
                MOV        A,        DAT                ;
5 ^2 f  `7 X; Q1 Z, G3 w                ADD        A,        #99H                ;
. M! ]$ Z7 }! T4 g                DA        A                        ;
+ B& |7 l5 ~: L- z( c. |+ ?! l9 B                MOV        DAT,        A                ;
6 I# z- h  o1 w5 q# h7 p                DJNZ        R2,        A3                ;$ X3 {+ x; v+ x' |( F% g
: k& }% a: |; h# ]

/ E- I( Y% U, T: x; I3 [2 A                ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@! ^; _( a, J( h/ z3 @
                MOV        P1,        #0FFH                ;
/ {' K4 Z, B2 ^/ x! ]6 h% v/ [                MOV        P2,        #0FFH                ;  W- L, \4 {! z# N2 y& k# Q
                MOV        DAT,        #20H                ;
& _, e: B3 t; j2 Q0 x' s                CLR        ZG                        ;东西向绿灯亮! C* E: Y' L- V: c6 D$ ?% S
                CLR        YG                        ;
. ]  E2 |% N5 b& e  ~                CLR        QR                        ;南北向红灯亮$ E7 j' |9 f8 E! W2 Y
                CLR        HR                        ;
% N: {  K) i! G  E9 C                MOV        A,        DAT                ;
4 v6 X# q0 C3 B, E                MOV        R2,        #15                ;执行15秒
, z  H0 H' l9 j8 N$ K1 L" {A5:" a' K4 }  [: [6 ^, V5 P
                MOV        R1,        #220                ;( s: y  o' C/ P7 `& J/ ?8 F
A6:
1 y; i  F. n8 O; m. p( n                ACALL        BCD                        ;BCD调整: Z0 |3 [  `* E, z8 I+ Q
                ACALL        DISPCLK                        ;显示
" G! D6 G7 I* J# J' N                ACALL        DEL1MS                        ;
$ p7 x/ c7 N) a9 W" z( S; \' d                ACALL        DEL1MS                        ;
8 j! q3 L, i1 S4 `                ACALL        DEL1MS                        ;, }/ i* h  T/ t- ~0 b
                DJNZ        R1,        A6                ;' @: b( W9 Z; A' D' b8 X9 l' f4 u
                SETB        FMQ                        ;        
5 p& x. ?0 s( y* `0 B1 {                MOV        A,        DAT                ;9 P& w" A/ ]' ^
                ADD        A,        #99H                ;减1操作, W  Z2 Y/ [3 {$ u2 L4 C0 j
                DA        A                        ;! U0 K+ ^3 z$ ]3 B% Y. O; ]2 |
                MOV        DAT,        A                ;, u: T& g+ r5 P3 K2 c$ j0 E  C
                DJNZ        R2,        A5                ;! o& j# x/ E3 c/ L9 q' ^
                ;最后5秒黄灯闪8 ?! m7 y! p# w0 k
                MOV        P1,        #0FFH                ;# S  }8 ~4 _1 ?% ~
                MOV        P2,        #0FFH                ;关所有灯
9 {3 X/ _4 j0 s/ I4 O! t                CLR        ZY                        ;黄灯亮
  k8 q! L9 K' T9 _0 \- K5 l                CLR        YY                        ;
& o7 C5 h3 T# G                CLR        QY                        ;5 \6 ]9 F4 `8 d' a) {
                CLR        HY                        ;: a  f3 f( _8 k& g$ }0 l

" Y' J, C. q/ S- v8 w                MOV        R2,        #5                ; + j% y; Z% i# z5 q
A7:2 `: A0 L9 r" l
                MOV        R1,        #220                ;/ d/ V$ a! a6 q0 |  X2 K9 k( r7 W
A8:
' W" O1 j! k: u# c                ACALL        BCD                        ;
) g) X" e: O" M$ C0 R                ACALL        DISPCLK                        ;
0 ~6 p7 p3 N1 }2 m9 g$ E+ ?7 m2 d                ACALL        DEL1MS                        ;% r0 ^9 [6 l7 k& N0 f6 A2 N* Q- ?
                ACALL        DEL1MS                        ;
- P, t4 ]6 \8 D; i                ACALL        DEL1MS                        ;0 Z: [: R$ p4 |* D6 J- N
                DJNZ        R1,        A8                ;2 {8 [, z9 N0 S  ?8 i
                CPL        QY                        ;南北向黄灯亮
1 z1 a, a$ N$ c                CPL        HY                        ;
: P; {% u% }' j4 |                CPL        ZY                        ;东西向黄灯亮" f1 ?$ P0 ?2 g7 b* s+ J" q
                CPL        YY                        ;        ( s4 ^6 E6 \, f* C1 p# _- Q
                CPL        FMQ                        ;黄灯时蜂鸣器叫一声( h/ r0 m0 E! J" a1 g
                MOV        A,        DAT                ;
- d2 C7 ~8 S2 t/ D                ADD        A,        #99H                ;
" L. u% u9 W! U6 H                DA        A                        ;
0 G1 r7 H' X% C                MOV        DAT,        A                ;
# B+ ^  ]9 Y6 B2 C                DJNZ        R2,        A7                ;
4 `# V# G" H  @! c. f' l                AJMP        AUTCLK                        ;. F% Q3 a5 M; @8 L! M( ?3 D, W% r; R
                NOP                                ;
! @& y8 Q' v! m! D, W/ O                NOP                                ;7 u/ w: a, |7 d# I3 ^- _! g
                NOP                                ;
) _$ A: g, I) a2 v0 K' q+ V' r                LJMP START
- [& u! J; O. [, K3 M5 f* s( n;;*********************************( l8 b* l! h  `' [
;;显示子程序
+ T' g; m' b, r( n4 [2 P6 r+ `;;**********************************           
( N8 M# N; V! k% y" q3 C: Q( eDISPCLK:, y1 `' w6 u; h" D! {& `
        MOV        DPTR,        #TAB        ;定入表头  w/ e+ b- y8 y8 j2 w
        ;显示个位
" n, j* F; @5 P( |( i8 k2 S        MOV        A,        50H        ;! a- k; @% Q+ r0 k* D
        MOVC        A,        @A+DPTR        ;
; n1 ~: k/ y; \# u( \- x7 W1 {# ~               MOV        P0,        A        ;- \# V  _2 F6 l8 [0 {+ e
               CLR        SWITCH2                ;  个位显示
3 G( n# G! q. v) G5 G# _4 G               LCALL        DEL1MS                ;
' A6 v6 B7 }( ^; L* J) Q. d% f: u               SETB        SWITCH2                ;个位灭
8 p8 Z, a4 M% @               ;显示十位9 ~7 D' A. m2 z0 |. b9 n# |
               MOV        A,        51H        ;
# k0 G# C) q$ p               MOVC        A,        @A+DPTR        ;
$ M8 Q9 W+ ?# h* z. D               MOV        P0,        A        ;* ~7 T# k! S  ]$ i% r" c8 B% L4 E
               CLR        SWITCH1                ; 十位显示
- _% T  y1 S8 u7 [               LCALL        DEL1MS                ;
* j6 m( F; q  j) q               SETB        SWITCH1                ; 十位灭' u: Q0 t/ S; @( r& l/ N
               RET                        ;
, u- h! t- X8 c; P/ Q* a               NOP                        ;, [% _2 F3 E5 z
               NOP                        ;
/ w0 Q! u; H# f! x! l               NOP                        ;2 l0 Z9 d! C& P/ D2 H. o0 `% ~
               LJMP  START
/ m& S1 \+ }7 A7 d% p;************************************************************7 G4 a% A: d* R( W
;横向道路紧急中断程序
3 ?. |& S/ u/ Q- c;************************************************************
3 e: X" W. V# P0 rD_X:
. ]  ^5 n) k; ^                CLR        EA                        ;关总中断
, }8 A9 U3 i! ^8 @1 u/ k  I% p                JNB        P3.2,        [        DISCUZ_CODE_19        ]nbsp;               ;
6 x9 e' [; k, e: |+ N, s; T                MOV        A,        DAT                ;保存显示数据
" t1 k0 a* \4 Q/ q, [3 y( [) l8 X                MOV        20H,        A                ;
$ B; V+ Y4 s' X5 ^                MOV        DAT,        #50H                ;
6 z* t. D# P8 Q# |, e0 Z                MOV        21H,        P1                ;1 \0 O) x& c: d* M% a
                MOV        22H,        P2                ;' D9 D& ?, g. A8 c; i  Y
                MOV        P1,        #0FFH                ;
, z' a. g/ e8 Q7 q4 K                MOV        P2,        #0FFH                ;" |7 u1 v' m9 w. z0 G
                CLR        ZG                        ;东西向绿灯亮
* i; C" T9 H- t                CLR        YG                        ;3 r+ J  g7 `% a; w' f8 n
                CLR        QR                        ;南北向红灯亮+ I& S/ C' ^. ]  ^

6 E  {9 Y4 g* @8 [3 l4 i5 w: w7 D: V, B: [
…………限于本文篇幅 余下代码请下载附件…………$ G% E% F! s3 X; b0 N

% l# F# ~7 ?; R$ Q4 Q) r
游客,如果您要查看本帖隐藏内容请回复
. w& Q+ }! L' B( b$ H; S! e# Q

  r/ y' e; i; M3 V" {8 l9 D* a! W) K' K# O- i+ _: e
& ?. |4 |" T! t- D

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-24 02:46 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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