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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
交通灯设计 AD格式的原理图和PCB与单片机源代码
3 d4 ~4 k9 Y5 o/ x' `6 w, |
* q- l; G+ T, p9 j2 }

/ c. h: z1 Q( b, e8 h- G! ~2 p+ T一个用51单片机做的交通灯的设计制作,而且带ad画的原理图和pcb,有c语言和汇编语言两种格式的源代码.
- M$ c" F" X8 B) e$ E# d# o
! q$ F/ }* D' `  _5 ^ad格式的原理图:4 V2 h1 ~; T6 S: f/ L5 A/ z
# Q) T* t7 A! [
8 r7 D6 E0 F" D9 G! r

: l6 [/ P' T- {pcb图:1 U# U4 h5 g" h  x2 r, r
. X* v7 F- V9 V: w7 {
单片机c语言源代码:
9 R& n- f! U$ w
/*        程序效果:单片机模拟控制交通灯程序,规则如下:当南北通车时,此时南北的绿灯亮,5 @( a! W& R4 w7 m! d+ r- d
东西的红灯亮,之后南北的绿灯闪烁3次,过后黄灯亮,延时片刻,转东西绿灯亮同时南北红灯亮,
- b- Z3 S/ h6 |9 g之后东西的绿灯闪烁3次,过后黄灯亮,延时片刻;数码管显示的值都同步,结束。*/8 e3 e* G( o3 u  f4 q
#include //头文件
$ Y8 C& `' f* L# v, ?! B4 p' P% V6 L  c#define uchar unsigned char//宏定义5 N$ M1 E8 S( _1 q
#define uint  unsigned int
  v( n/ P8 c5 `! A- {- Z0 S' u/*  旧IO定义*/- [! `, K( _7 W( t3 X4 L
sbit FMQ=        P1^0;                //蜂鸣器. S7 l; O3 O$ A; L" ~4 V
sbit QR        =        P1^3;                //北红灯& J0 A2 ^1 ^0 d  x5 ?
sbit QY        =        P1^1 ;       //北黄灯
% D1 ~+ r' g! ^7 Ksbit QG        =        P1^2 ;    //北绿灯& o4 G# z. ^5 m- i# _* ^7 W! _
sbit HR        =        P2^2 ;    //南红灯$ A' E& g& x' ^% o  f" r# \
sbit HY        =        P2^0;     //南黄灯
$ ]4 X$ f: R) ~" x5 n1 w! |* Qsbit HG        =        P2^1;     //南绿灯        
; w: d% ?) m3 A6 S; f+ [; |& lsbit ZR        =        P1^4 ;    //东红灯- k) T6 c- h7 E% }, m$ }
sbit ZY        =        P1^5 ;    //东黄灯( W( e2 m8 _, p( C' S7 P% v+ ^
sbit ZG        =        P1^6 ;    //东绿灯* G0 Z3 N" M4 R) Z# D9 M6 b! @
sbit YR        =        P2^5 ;    //西红灯
# ~' e5 r  u8 u. Y. N7 h# }& osbit YY        =        P2^4 ;    //西黄灯  [/ T' ^5 d; m
sbit YG        =        P2^3 ;    //西绿灯         
- i/ g% _: \- D( m" y4 D" bsbit SWITCH1        =        P2^7;        //时间显示的十位控制; I1 ?6 i6 r( _: Q" y+ C
sbit SWITCH2        =        P2^6;        //时间显示的个位控制- a- s1 a' o" y' V; C
/*        //新IO定义
; @9 |" ^0 n. V$ p4 g) K' }sbit FMQ=        P1^0;                //蜂鸣器
3 ^8 F& D: j8 ~' jsbit QR        =        P1^1;                //北红灯
# l' t  j, p, Bsbit QY        =        P1^2 ;       //北黄灯9 O$ ^" d' A* v1 V* E% n0 d
sbit QG        =        P1^3 ;    //北绿灯- k. @3 n3 ^% Y  ?) }6 T3 b& p
sbit HR        =        P1^4 ;    //南红灯
% E0 o6 V6 A* ?/ O, X; e' k0 l1 dsbit HY        =        P1^5;     //南黄灯
0 X# R1 T# C1 J, jsbit HG        =        P1^6;     //南绿灯        
: ?( Y  f  _; @9 V+ W) Csbit ZR        =        P2^7 ;    //东红灯. `% J( q- f1 O3 p: o+ s
sbit ZY        =        P2^6 ;    //东黄灯7 C/ L$ {8 A" K: }/ B
sbit ZG        =        P2^5 ;    //东绿灯# D" y- j3 a- d
sbit YR        =        P2^2 ;    //西红灯9 X5 d8 J! f: I  J6 E& n
sbit YY        =        P2^3 ;    //西黄灯1 c: {  w6 e  V4 o
sbit YG        =        P2^4 ;    //西绿灯         
# Y& p& H( {7 [1 P- {+ x2 C& _$ }8 {) {sbit SWITCH1        =        P2^1;        //时间显示的十位控制
9 ~" i, D. i4 f* B% isbit SWITCH2        =        P2^0;        //时间显示的个位控制$ x0 W/ m, ?. g2 U, c2 t# t
*/; v4 `4 r' x) W
//sbit P3_2=P3^2;7 ~6 d5 A' c# A6 N
//sbit P3_3=P3^3;  c# @1 o& C, ?1 f4 X: o4 L; v* ^; t
uchar DAT;//显示时间变量2 B* F1 Y$ b% e0 x" x
uchar DISP[2]={0,0};//显示缓冲区
9 Q9 n5 e- f4 ~& x3 zuchar code table[]={0xC0,0xF9,0xA4,0xB0, ////共阳数码管段码表0  1 2 3
5 D# s7 S) v* ^9 T, [' }$ v# E0x99,0x92,0x82,0xF8,0x80,0x90,0xFF        //4 5 6 7 8 9 灭
# c& a& R& s  o};
3 `" L( r* K% p# I0 ~! n4 V3 Dvoid DISPCLK(uchar i);//显示函数' S1 I* e! d4 u2 g4 n! u' ]

0 u; ?) H9 Y6 M! `
' x& I" R: d4 D" K
void DEL1MS(uint z)        //延时子函数
" Z1 @& E0 t1 F& f! ~{& z" y8 T% v& p! u
uint x,y;" y; }- Z4 g6 d4 v1 }# |
for(x=0;x<z;x++)
) V+ L0 J5 A3 h! efor(y=0;y<110;y++);
7 R  B  o) t0 Y  s' T}7 P8 [# [3 N5 J2 M8 r) j/ d
void main()    //主函数* l; q( U! q; c% P; v
{    //  uchar i,j,k,m,n;//定义局部变量4 f3 s  V  L8 O$ e0 u/ o
     uchar i,j;) x% {" G$ j0 i! b1 ^( x
    TCON=0x5;  //外部中断为下降沿触发& V; w8 k8 d( v& ]7 [
         PX1=1;//南北方向高优先级
& o, u+ r5 y6 j; [+ m, }  F     EX0=1;           //8 c# u; ^. V; f5 W( l! l6 d" U3 h
     EX1=1;    //开外部中断: |1 i. R1 B; c. [
     EA=1;     //开总中断+ a% ?3 y+ }8 V3 t
        //IO口初始化
& [) u  P: U( Y, U/ {         P0=0xFF;
: z- s$ k7 k2 f9 r- ~         P1=0xFF;2 o* L5 T! G/ T1 F
         P2=0xFF;
$ q, l- r6 M8 m, ^, `9 s! E         P3=0xFF;        ( W# K4 W& H$ ?
         //DAT=25; //汇编0x25
& r4 F. y* \8 G/ |   while(1)5 E4 b2 m2 E% y1 {' \
   {/ b  g8 o4 N8 v% s# G
          P1=0xFF;//灯灭
( Q2 O1 p! p& O6 H) |1 O4 B          P2=0xFF;//* q0 p! F( z, l( [. _3 v7 t
          DAT=30;//写入每一通路的通行时间
. K' o( v# q& J9 c+ w- D          QG=0;//南北向绿灯亮4 m& _  ~$ x5 P% g
          HG=0;
! n( e) x8 {$ n1 R) v  d# |          ZR=0;//东西向红灯亮& c& l1 |8 Z* g$ |6 c; b+ I$ r
          YR=0;
3 t7 y. z3 i. W) P5 w+ ]  /*$ M- A& Q4 s  _9 \. {. {
QR        =1;                //北红灯7 W# e# L' [7 A4 o+ }! x
QY        =1         ;       //北黄灯" v/ v4 K3 K$ w, }
QG        =0         ;    //北绿灯 QG=0;//南北向绿灯亮
* F5 G- R% }6 U HR        =1         ;    //南红灯, v; `5 Z' s' O0 n4 p; ]
HY        =1    ;     //南黄灯9 W" @1 Q1 t/ B6 Z" S# X# n
HG        =0        ;     //南绿灯        % f! D6 e5 D6 `+ \
ZR        =0         ;    //东红灯
+ I9 v& u5 W8 p& `: R ZY        =1         ;    //东黄灯
4 t) w% [5 j5 b ZG        =1         ;    //东绿灯' {) C7 K- \: d" n# v
YR        =0         ;    //西红灯: j6 i4 r! O0 `% s- m* I
YY        =1         ;    //西黄灯' D6 Q0 f" {( z! O0 A6 _6 R
YG        =1         ;    //西绿灯
5 D% N1 Y) X8 b* W        */  
5 E. v. _' l5 l" u% n          //ACC=DAT;
! f* ~0 U* d' F  U
4 Z) w6 g4 p5 Z8 y
  |  A0 W9 D; ]. c; s9 U* ^/ B$ f
          for(i=0;i<25;i++)
% p' S, p' t( y3 p          {        7 Q. v! J1 z* O% j* d5 u, U9 n
            for(j=0;j<220;j++)
+ [2 p: S+ P9 I3 @( j; M                {3 Z3 S7 i  B, C" R
                  // BCD();//BCD码调整
# k2 k+ H3 ~% B; C% o6 v; T$ {                   DISPCLK(DAT);//显示+ i& }+ R8 ?# F# u
                   DEL1MS(3);//延时3毫秒   9 `; n" C( q, A0 l# E+ P

2 [: z8 x- t/ F0 E) M1 b

9 N5 C+ w/ f; P0 Y  L                 }9 h* Y9 y& K9 G6 O% @) a( g
                 FMQ=1;//蜂鸣器响
, R3 N! V5 _* V, M( H9 X$ ~4 c& V                 //ACC=DAT;
2 W# Z" H; B6 r% g. _$ v8 k$ N+ [                // ACC=ACC+0x99; //完成数字的减1操作1 J2 `! H6 H0 o  B1 m6 p

' u2 E; N' J( ]7 z
0 K2 t: _! N( G1 U* g* a
                // DA A;//???        7 N7 M4 t+ s; Q% [) K: c6 s
                 DAT=DAT-1; //调整好的数字送显存                 
) A5 Y& `% G! T0 l" B8 }- h; T: h  i  a           }
6 w; q! k0 O, {* U; Q* J1 G7 X3 P) u
$ S* N) V3 x9 C
           //最后5秒黄灯闪) u/ w1 ~* W7 ~9 i0 p
                 P1=0xff;
7 s5 t( n) e6 t                 P2=0xff;//关所有的灯
$ K4 v" x! W0 j4 W2 j                 ZY=0;//黄灯亮  ~2 j; W/ p1 r7 j8 R$ b
                 YY=0;
5 _/ h  X3 D$ A9 i% P                 QY=0;
$ ]$ o) @6 r2 }  J                 HY=0;                  
# P7 v4 t5 R  v" z- q, q                for(i=0;i<5;i++)
3 Z) |0 b' m5 G. E1 v* h6 [! k& ~" ^          {        9 X( B6 U# M2 }& u! e& K9 M- r. [
            for(j=0;j<220;j++)
% D( q7 w, @: Z" Y                {
5 \( G( T; Z. |" `                   //BCD();//BCD码调整, V1 z% V5 m$ y5 K& A
                   DISPCLK(DAT);//显示; N: ]2 h, C  w
                   DEL1MS(3);//延时3毫秒
4 A" q; m7 c( F% {3 c' a9 f" _                  
. ~5 e3 R8 _. R& X6 j' N                 }3 M( e/ h0 S* ], I$ m, D. z4 B
                 QY=~QY;// 南北向黄灯亮
8 ]9 W4 f& ]% K- M- C                 HY=~HY;
7 D4 F( |5 p! H                 ZY=~ZY;//东西方向黄灯亮4 l$ e7 Q- ^4 g" Q+ H6 w1 ?" a. f
                 YY=~YY;  
+ B' H! e& }; a. n6 [$ u3 a                 FMQ=~FMQ;//黄灯时蜂鸣器叫一声
/ A7 s) T# ~. q, P1 k% N
1 U) s! n) D) u4 ]' c

1 |/ H% k  l2 O4 r; t                 DAT=DAT-1; ////完成数字的减1操作,调整好的数字送显存         2 \* j% Y+ L) Q; n( g
                 
# U0 o* h. z& p6 @           }
+ X* P% [* e. ~0 I0 q1 X% q3 Z4 B% j( z* i" ]
' o5 t! p9 t& G* h; h" t
           P1=0xff;
5 z$ \# s5 R0 ?# N3 ?" c           P2=0xff;         ; C5 {: G$ ~3 e; M% k1 U- m
           DAT=20; //汇编0x20& F8 L# a& w# s' ^6 _8 |
           ZG=0;//东西方向绿灯亮
: \% F0 l; L$ |, P           YG=0;
. Z2 _' `, g6 q0 `& N' w. D+ U  O; o           QR=0;//南北方向红灯亮
" A: A' h7 b1 I  x5 V0 i+ w           HR=0;7 }# d/ G7 N: I2 I! b' g# `
           ACC=DAT;# y% h7 c4 Y3 O/ f
           for(i=0;i<15;i++)//执行15秒! M9 W  F& a/ E; O4 Q2 o
          {        . Z5 {, S! L% a2 {% Q) W1 C2 R; S
            for(j=0;j<220;j++)
6 `6 E6 |3 a( j. [4 d                {
* Q: W- Z) p9 f( t+ k                   //BCD();//BCD码调整7 X4 y6 B; V- ^# q
                   DISPCLK(DAT);//显示4 O2 N2 n2 d' w: H7 W6 T4 W
                   DEL1MS(3);//延时3毫秒  2 G' k) c* ^' W; H5 p, ?
                 }+ `: ^$ M1 C8 @& A
                 FMQ=1;//蜂鸣器响
& c8 a- M0 }2 W6 ~6 f! P" q  a             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存 8 X8 _+ I& H0 ~. A, ^
               
: p5 h7 q- M  P7 k/ x           }
: N/ l& x" O* @2 G3 k                 //最后5秒黄灯闪
5 N2 U! m- w, d( U  |; h/ P4 s                 P1=0xff;
& h& {$ n% ~' `; _                 P2=0xff;//关所有的灯; h: r& z3 h  u- Y! l) Y$ z
                 ZY=0;//黄灯亮3 ^- c' @4 r# b; L$ {* n2 n* h% K1 ~
                 YY=0;
5 z' I2 f" f! H& [$ m% o, v                 QY=0;% Q3 k+ M, c% [( O; ?8 H
                 HY=0;- Y# l5 c" u# `! x1 |% K4 o
          for(i=0;i<5;i++)
+ O- D- Q+ s# E4 V+ l, j8 p7 |+ s          {        " Q8 U& s9 o. N
            for(j=0;j<220;j++)
, w6 X* O: p2 C/ f% R7 E                {
! c. x  {. q0 t" f2 Y                   //BCD();//BCD码调整
5 y0 i, G' u# c                   DISPCLK(DAT);//显示
) n% @9 j( R6 y# v) D                   DEL1MS(3);//延时3毫秒                    8 v7 n0 L  I/ D: V- e& m4 l& ~; f
                 }0 ?% M& q4 U4 b; i
                 QY=~QY;// 南北向黄灯亮
5 Q  d! C! |& g) M, @  D! G0 f                 HY=~HY;
. Q- X) l* t2 j0 D8 n                 ZY=~ZY;//东西方向黄灯亮6 [% ^' u' {8 P* d
                 YY=~YY;  # Y0 t% @+ P' k- Z/ I- B+ x! @
                 FMQ=~FMQ;//黄灯时蜂鸣器叫一声
' W' r& C! x. S) E% o) X3 O. {. B: \" H# u: d
) b6 d2 l6 P( v4 P
                 DAT=DAT-1; //完成数字的减1操作 ,调整好的数字送显存         
' L& E* E( a& Y9 V                 5 E$ Y! N0 I" v# K
           }
! S  u1 [1 A7 R% u7 k. }        }         % v' u' e! q9 F
                 # Q; s9 P' }- ^2 M7 l0 f8 s, x
}
7 l6 O: F1 _' q) T4 l7 ~, D  z+ L' Q

* K( ]& T) L2 M3 x3 [void D_X()  interrupt 0 using 0        //东西(横向)方向道路紧急通行50秒中断程序
6 \5 C& B: S2 g- g$ E{        
1 P+ e* }, m1 @8 k5 r        uchar i,j,temp1,temp2,temp3; //定义局部变量
1 J* n  J3 z8 J/ V: {. J         EA=0;//关总中断7 z- b' H, H1 t; Z3 M
        P3_2=1;
  ^8 Z3 J' h4 Q8 o6 Q8 |$ \        while(!P3_2) ;//等待按键释放$ m, S* i# q) ^/ J
        temp1=DAT;//保存显示数据$ l" a( {  z( C! T
        temp2=P1;
+ E( Z4 `' q0 ^' d) u/ A7 a9 @5 t        temp3=P2;% [* U. K0 H  A' [1 j0 R+ d: S# S
6 C5 x* x/ v3 V9 d
' {$ ]& [4 Z$ |+ D4 r- q
        DAT=50;
& @6 s  r; O; e6 m        P1=0xff;
4 x( H$ U. f5 t( B        P2=0xff;
$ d  Y6 V/ x7 [1 I# q# v        ZG=0;//东西方向绿灯亮
# P8 ^, [, k+ Q4 r. Z        YG=0;' s' U; ~4 ~  O' X
        QR=0; //南北向红灯亮
6 P! k" t! `, ^* O7 U3 h: ~8 B* d        HR=0; 1 ?1 H$ q6 Y4 z' J. p8 [* f9 i
        
+ d& e; u, G9 a8 m1 a         0 T& c! i) k1 _& U6 w( a
        for(i=0;i<50;i++)//执行50秒
. t$ P/ p  l9 F& `/ l        {        
* q/ X% }, `1 u, ]+ k2 m2 Y% R            for(j=0;j<220;j++)7 N, r0 V3 H9 K  ?2 M( H
                {9 V5 U; n. `4 E
                   //BCD(DAT);//BCD码调整
5 h5 s" N- E* I" f/ g                   DISPCLK(DAT);//显示
2 b. e% P% t* s4 Y# Y% q* j0 q7 d! {                   DEL1MS(3);//延时3毫秒3 B$ g! ?: [" D8 w8 o: J
                 }
) c( I$ E8 [1 K" I. ?# Z) L             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存                3 I3 m; U1 x$ P, {1 e" V2 T
         }
3 G$ W: u3 r3 M6 ~% W! |        DAT=temp1;//回复显示数据
& n, L7 g+ c# T; ?. u0 G. P/ A) `        P1=temp2;5 r- j! S$ r/ B( i2 f; h
        P2=temp3;
5 R( T, e, M4 W- d9 D. A7 R' |
) p/ k: Z  Z( X# e/ j
& L' i3 T  y- [! p. \* K- ?7 \
        EA=1;//开总中断 3 L7 B$ @: v% N8 n4 B4 @0 e/ W! \7 J
}; s  {) ^: l) b9 s( H. l9 G

' o# [3 b, v  y3 Q4 L

/ L* s( s/ v5 Q' `void N_B()  interrupt 2 using 0         //南北(纵向)方向道路紧急中断程序% w' T6 ~% Z- T  J2 p2 V. b
{        % O& j; T. x1 a
         uchar i,j,temp1,temp2,temp3; //定义局部变量; ]' R4 F9 b) n, ^8 t# o9 ^
        EA=0;//关总中断
, V. G1 s4 m& z8 u( w- ~        P3_3=1;/ A- m! n; T8 R7 u. K+ M" A5 m
        while(!P3_3) ;//等待按键释放
1 {; V1 h1 f1 y: `* L# M: J9 D* K        temp1=DAT;//保存显示数据
: n2 k; u. a- W$ |) Q1 w2 O        temp2=P1;# n7 k( Q8 }+ j- }
        temp3=P2;- G0 Y1 ?5 z  s$ B6 ?
, v3 i1 S, }# G. X; s
/ D/ c2 A* F' n
        DAT=50;
% x3 q5 ^  a% Q' w; J: a$ ~        P1=0xff;6 m2 h6 x9 ~" |
        P2=0xff;) H3 {' k& v8 c+ y8 ]
        ZR=0;//东西方向红灯亮
2 |3 A  x1 p1 |7 S9 P! l; ]0 {6 a/ B        YR=0;0 d* W" X1 @8 Q) ]
        QG=0; //南北向绿灯亮9 I6 @4 c* H8 ^7 Q4 G& e. ~1 E4 f
        HG=0;         
: j/ Q# d: C, p+ |- a        for(i=0;i<50;i++)//执行50秒
; x$ v$ e; d! l" ?; V        {        
+ f8 U9 g# s7 s$ @  ^            for(j=0;j<220;j++)
& z1 ]4 y7 i  u. d3 a) [6 [/ I                {
- Z4 F* |. c: \8 X# R; p                   //BCD(DAT);//BCD码调整! W7 h3 D; r4 o( m8 c
                   DISPCLK(DAT);//显示
- P6 I/ ^6 \" m& s                   DEL1MS(3);//延时3毫秒
9 a- ]& l. h5 v8 e                 }
3 B  s8 o1 J+ \$ {  S             DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存               
; v' @3 k% Y( t6 f& k         }$ n3 e4 p0 F! `: d
        DAT=temp1;//回复显示数据( x% o3 {5 A: q; \
        P1=temp2;6 u$ J* Q6 h- y, E
        
3 h1 H* {$ K2 n  i
0 }2 a' D" o) Z8 P
" k+ V( V& g( d1 Z% R4 Q/ o1 {. o
…………限于本文篇幅 余下代码请下载附件…………
+ y1 f5 S8 A( `) e  E
. j1 S  \2 z7 R4 u1 R2 l/ J
) X* e+ x/ }4 D0 K  ~
' B5 p! h% x4 e* k- t

0 f: x# ~1 ^6 F/ @; C) [( d汇编语言单片机源码:
2 `1 o& `0 [! g$ e5 i
9 n! ^  f7 S1 _% O  m' X4 a. z9 ~, p;智能交通灯控制器程序( _, I7 [5 e7 u" |
                ;以下程序完成各脚的预定义
( z1 l) D* l, `" _8 e* M; \                FMQ        EQU        P1.0                ;蜂鸣器" S- i. ~5 w$ S4 w! W9 _
                QR        EQU        P1.1                ;北红灯3 t) D  d" U- Z$ j0 B
                QY        EQU        P1.2                ;北黄灯
; X+ i* E4 ^3 v7 r                QG        EQU        P1.3                ;北绿灯
; a6 L0 j* G7 W# |9 W                HR        EQU        P1.4                ;南红灯
8 [3 I: k/ L& V6 P3 P: W                HY        EQU        P1.5                ;南黄灯, \$ k( J3 G2 P/ ?. R/ S% \7 F  v
                HG        EQU        P1.6                ;南绿灯        0 O9 z+ M) k3 S
                ZR        EQU        P2.7                ;东红灯
% [) n  C5 i8 B: ^1 c1 z1 V! x' w( M                ZY        EQU        P2.6                ;东黄灯* }3 {% M" x; Y# b+ y
                ZG        EQU        P2.5                ;东绿灯               
" U5 U  o  a1 O2 n5 D3 V* W( R                YR        EQU        P2.2                ;西红灯+ ^8 v2 }' `  r7 U8 y7 T
                YY        EQU        P2.3                ;西黄灯                " \8 V; q+ q( \) m! q8 I
                YG        EQU        P2.4                ;西绿灯$ c( A1 b4 b$ t7 t4 B/ f, s
                SWITCH1        EQU        P2.1                ;时间显示的十位控制                9 j2 z( H5 q* F+ a( W9 ]8 S, d
                SWITCH2        EQU        P2.0                ;时间显示的个位控制: t# M6 ?: y& C8 T- y
% v3 E% s( m9 d. H. n( v! R
                DAT        EQU        60H                ;显存1 R2 ]1 Y( p1 L- s

6 I, Q. a9 u& f) _                ORG  0000H
/ ]$ B0 I$ F: P" X/ G                 LJMP START
9 ~. x0 I. |% [8 r2 X' B                 ORG  0003H4 k4 z; K' M3 R, C' `9 R
                 LJMP D_X                        ;外部中断0,东西向紧急按键
; H' Q4 V+ L# [3 Z$ i/ {                 ORG  000BH
5 K$ y* u3 i/ Z' A6 N* d( F                 RETI                                ;; V' L/ }; _! _4 ^; t& I+ B
                 ORG  0013H! a  t/ _! g! v  a  K% u5 b
                 LJMP N_B                        ;外部中断1,南北向紧急按键
. S) l, R, o6 Y                 ORG  001BH
9 ]- O! x: Y( x8 x: c8 X                 RETI
$ a, u5 S: j# x8 n7 F5 s                 ORG  0023H1 z# R. E7 j$ y0 J
                 RETI3 |6 c: T* L! ^% v* p$ b' H
! U6 L' U* d0 Z( n
                 ORG  0040H                        ;定位# u1 ^' e! S: d* s: s: p7 I9 i& i
START:
  n- P2 w+ |9 g4 V% Y, A: u2 C! C" A4 T" t0 o9 h
                MOV        TCON,        #5H                ;外部中断为下降沿触发
# r9 Y2 {- ?1 p! J% J( f( i  i                SETB        EX0                        ;' F5 D6 o# U- x) S3 a% J
                SETB        EX1                        ;开外部中断
; @. D" e' [" x& F' D8 Z8 q                SETB        EA                        ;开总中断
+ S* H3 K, o0 c- L, f                ;IO口初始化5 {4 K$ N+ ~2 U. Z; Q. M& ?
                MOV   P0,#0FFH9 c7 o# s, [. S9 {$ k  |
                MOV   P1,#0FFH                        ;+ V) s1 n0 h" Y+ t$ q4 W! J
                MOV   P2,#0FFH   ;
& x, N9 h/ N6 T1 Z% S4 `0 u* r                MOV   P3,#0FFH                        ;
1 N* L, f/ B8 n7 ?- ]) I: y) y                MOV        DAT,        #25H                ;
* C9 b$ s5 M& C* A7 r3 A; J$ A1 w/ L

# }. i! K( F& b  B) |5 f$ PAUTCLK:
! z0 U1 [  k: z/ D+ l                MOV        P1,        #0FFH                ;' m: Z7 M- p# V& X+ d6 j2 Q. W
                MOV        P2,        #0FFH                ;  : v" R+ {% R3 u: f/ W2 s
                MOV        DAT,        #30H                ;写入每一通路的通行时间8 K2 c! \4 }: u9 O0 X) h
                CLR        QG                        ;南北向绿灯亮
- V; n+ m4 s9 i6 H3 K                CLR        HG                        ;
. E4 {* M5 c0 O0 H, ^2 E5 V                CLR        ZR                        ;东西向红灯亮
* T: l" S0 M6 p: j. N                CLR        YR                        ;% ]8 D# o9 E5 u# S. k# x

( Q( C) x3 i  A/ ?' l  z* s                        MOV        A,        DAT                ;5 z: `- n/ E- y& Z& \$ ?: i5 }
                MOV        R2,        #25                ;写入时间值4 a& d& }9 I9 b
A1:* z! x! m! f. S! C2 e* \8 M
                MOV        R1,        #220                ;
7 i* B' T8 A+ ?! \& qA2:
3 |) v% W2 X' A  ^6 t# L! a5 s                ACALL        BCD                        ;BCD调整
/ L( e' T4 |5 W: G                ACALL        DISPCLK                        ;显示7 ?% l) W3 h  R+ {/ M
                ACALL        DEL1MS                        ;延时  k5 a8 A; }/ e) B
                ACALL        DEL1MS                        ;- H! F, @6 H& t3 w7 S% d3 K
                ACALL        DEL1MS                        ;
1 j, z0 L; J" z$ N# c                DJNZ        R1,        A2                ;
" P4 X, D4 y( b9 p" |6 l' f                SETB        FMQ                        ;        
& D2 B6 b/ U+ K0 f7 K) ~                MOV        A,        DAT                ;完成数字的减1操作: P+ R- G3 l9 g  U
                ADD        A,        #99H                ;' b  E# d6 Z- L
                DA        A                        ;
# T: ~1 p( c, B. m" j, g( y                MOV        DAT,        A                ;调整好的数字送显存" B2 Q* T8 K9 L
                DJNZ        R2,        A1                ;! W+ c1 D0 i+ K6 E& ?
                ;最后5秒黄灯闪
$ D/ J2 R3 z0 h  [                MOV        P1,        #0FFH                ;
& s% {2 z- Y* V* }/ Z                MOV        P2,        #0FFH                ;关所有灯                                   
) Y" U6 s" U( h$ p+ b/ _# h                CLR        ZY                        ;黄灯亮3 c' V- Q" J7 ]3 ?3 o: c
                CLR        YY                        ;8 V2 h  L6 j) E. k+ b' G8 u% D' _  _
                CLR        QY                        ;
/ H6 E& k0 Z( i. i) R2 g- D                CLR        HY                        ;
$ S3 ]  K8 F8 C% R. t
9 e% ?1 H; ^. ^& x; Z2 p                MOV        R2,        #5                ;
3 o0 _0 }* ], ?5 k& j) t  zA3:, M1 j9 e7 S" I$ B
                MOV        R1,        #220                ;  q$ H+ X4 H/ ]& I9 t$ c, K+ R
A4:) F) b6 I' H- }( o
                ACALL        BCD                        ;+ g$ T+ r# F* J# I8 A9 |! `
                ACALL        DISPCLK                        ;
) G$ m8 h/ p2 B( _, J% O% A                ACALL        DEL1MS                        ;& x1 j) ^# H* K4 a1 A7 |3 X3 h
                ACALL        DEL1MS                        ;
8 y, Z! E6 N* b" d* v                ACALL        DEL1MS                        ;
5 d7 U# X. n3 h* [0 n  Z% f                DJNZ        R1,        A4                ;
0 u$ p; r1 V3 C, a, C4 i% v                CPL        QY                        ;南北向绿灯亮; b% R+ y8 L1 F3 J5 A: N; }" a8 G
                CPL        HY                        ;3 t( l4 Y" J) f
                CPL        ZY                        ;东西向红灯亮
# [- s& L* y8 n/ D                CPL        YY                        ;        
% A4 [7 C' I4 ]0 F                CPL        FMQ                        ;黄灯时蜂鸣器叫一声
- y) t! \" r( X$ U                MOV        A,        DAT                ;/ j5 C" o! h5 A9 ?3 h' e; R
                ADD        A,        #99H                ;
, X- F1 z6 a* W# ?7 z4 ]' N                DA        A                        ;
# v8 B/ A6 s7 l                MOV        DAT,        A                ;
0 L4 w) ]' n1 y8 `' f3 C                DJNZ        R2,        A3                ;. N1 z" d1 D6 E4 G6 ]4 L

2 M) V1 o6 w: b3 G3 T1 n4 g  d; p. o* [+ r4 r
                ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
% q* Y, n# P7 _/ W  X8 [- }& Y" U  D                MOV        P1,        #0FFH                ;
# k4 |% q# K- g) ]                MOV        P2,        #0FFH                ;
* d# @# Y6 c5 i, g: S1 M( S                MOV        DAT,        #20H                ;
( J. }7 z+ r0 |/ t$ Z. W1 y7 v                CLR        ZG                        ;东西向绿灯亮/ ^* \& N' R  X" ]5 X
                CLR        YG                        ;" b9 ]0 y, W! d) ?' V
                CLR        QR                        ;南北向红灯亮5 W& L5 O3 B: s- H: w
                CLR        HR                        ;; p+ n* I" X0 P3 A' V
                MOV        A,        DAT                ;
% {& @% @& [; J                MOV        R2,        #15                ;执行15秒
! T, D7 Q* R3 d$ y% y% TA5:
. C6 P+ p' k/ a& R6 B                MOV        R1,        #220                ;0 K, N0 w4 o. q' m& U9 i5 S% T
A6:
9 M- Y5 N3 p* n4 N; `- V: M                ACALL        BCD                        ;BCD调整' y1 K1 T7 M; c2 Z/ o2 A8 N
                ACALL        DISPCLK                        ;显示3 v/ e: @' u. O. f4 S+ o
                ACALL        DEL1MS                        ;
, U, S4 o2 Q9 K0 g  k0 c) d: p2 x2 x                ACALL        DEL1MS                        ;0 e- a/ E( G) c/ {
                ACALL        DEL1MS                        ;* W4 r, i" ]3 b
                DJNZ        R1,        A6                ;* I( a- k' e4 y9 s  c9 Z: }
                SETB        FMQ                        ;        
$ C8 [& l+ q& {+ B* |! S                MOV        A,        DAT                ;) Q3 G; o; r7 @& z
                ADD        A,        #99H                ;减1操作
4 Q$ n9 o7 w6 Y                DA        A                        ;( k! E6 e; J& y
                MOV        DAT,        A                ;, ?. _, |2 ?  Z
                DJNZ        R2,        A5                ;
& H/ M, Q# f. c1 }- n" T                ;最后5秒黄灯闪
: m) _1 ]/ I2 h" x# q/ m                MOV        P1,        #0FFH                ;  [$ v4 Y3 _& H5 F( L/ i
                MOV        P2,        #0FFH                ;关所有灯& o( O* ~' b+ ~/ A  F6 s
                CLR        ZY                        ;黄灯亮
9 l& y" P+ B; P, R9 D( W1 t6 e                CLR        YY                        ;+ h# ^" p% `  l+ _  b/ z2 w
                CLR        QY                        ;
; V6 ^' E+ r2 S1 R; d                CLR        HY                        ;9 m. A; s& j! }+ k: f; Z

' m; H6 [- Q& v                MOV        R2,        #5                ;
) }, w8 y3 T" v$ D1 HA7:
9 g7 i9 M; j- g6 R; I# y                MOV        R1,        #220                ;
6 D; [( f% N" N! D# B% Z7 u# Q9 fA8:; K4 C. ?% x  x1 u2 L/ Y
                ACALL        BCD                        ;' m! X2 i9 n3 B1 a2 }& V
                ACALL        DISPCLK                        ;; M. \" K1 s! ]; P" e- h) f
                ACALL        DEL1MS                        ;9 n( t. P# b1 e( I" U, J
                ACALL        DEL1MS                        ;0 g( ^) {/ y& E6 D- `
                ACALL        DEL1MS                        ;
1 R+ N4 V" B' h4 X0 U7 C7 }                DJNZ        R1,        A8                ;
- j7 o& R+ M2 |4 ~. U8 [% i$ W                CPL        QY                        ;南北向黄灯亮
2 j6 W2 `" ~; `2 }3 w5 ]; q                CPL        HY                        ;
6 S! h; u$ a" P3 R: R                CPL        ZY                        ;东西向黄灯亮( R2 r4 M: o; `, P
                CPL        YY                        ;        + x0 q. |! o5 s3 ]" q% t
                CPL        FMQ                        ;黄灯时蜂鸣器叫一声
- R* p; c$ U5 I, K' V                MOV        A,        DAT                ;, I/ M- l5 g8 V! w2 X* K: _3 o' l5 a( T
                ADD        A,        #99H                ;% r& N+ x) L5 j
                DA        A                        ;: n: l: j7 j- r! J& o1 H
                MOV        DAT,        A                ;
4 F  p  C# d# l% e" t                DJNZ        R2,        A7                ;
$ c4 k/ {, t+ o4 o/ c                AJMP        AUTCLK                        ;  r+ H4 D1 _9 q8 _
                NOP                                ;, q5 s: t0 T% }4 Y
                NOP                                ;  i; |, e/ Y. V# m
                NOP                                ;
$ d5 @' G$ h6 e                LJMP START
. {, z3 Q# W, K) P- A;;*********************************( K* s! f9 t3 \) Y& z6 b/ T: n* i
;;显示子程序
1 ]  w! l$ g9 u$ }  G( c;;**********************************           $ O. V+ F+ ?" r. [" J
DISPCLK:8 @2 J% e$ B% C, b
        MOV        DPTR,        #TAB        ;定入表头8 y% i  r. M- U% M
        ;显示个位
6 a3 r3 a0 z( a# e        MOV        A,        50H        ;) a% R. l2 s% q& G" t
        MOVC        A,        @A+DPTR        ;
8 K' E' M4 W/ W6 n2 `! t" g5 p- s  M- b               MOV        P0,        A        ;
3 {' Y0 U- Q6 z) h" G/ z               CLR        SWITCH2                ;  个位显示5 W7 |% C; a& _+ ~; y4 U, p3 e
               LCALL        DEL1MS                ;
2 v. m) W5 A0 Q4 M. N               SETB        SWITCH2                ;个位灭$ I( `1 S0 w9 f# }7 I  q/ [2 m
               ;显示十位1 y! N- t& m$ U
               MOV        A,        51H        ;$ ~8 V, C0 @# s& v$ O
               MOVC        A,        @A+DPTR        ;1 G% d/ }6 ]# h" D* {0 l
               MOV        P0,        A        ;
8 \/ e4 N) v  ~               CLR        SWITCH1                ; 十位显示
# F. F6 r% X. x" u5 A               LCALL        DEL1MS                ;
% ?8 y  z+ G4 n! F               SETB        SWITCH1                ; 十位灭2 t0 L  c" |$ c: y7 D8 s
               RET                        ;% r! Z- j2 F3 D/ s$ i$ Q9 W1 z7 Q2 B9 i8 k
               NOP                        ;! ^' w+ E4 O0 A7 a" {6 e: Q
               NOP                        ;
6 `# u7 q- T' h1 ^& P- ]+ N7 w               NOP                        ;
& m0 A1 A  @- z/ O               LJMP  START* o% @3 j) I# u" m" Z4 P
;************************************************************
% H9 T0 n9 n: k9 R; ^0 M;横向道路紧急中断程序3 {: ^! b! K- _& c) S8 U0 \
;************************************************************* Q9 Q! v* z' M! f
D_X:
/ r" Z* N# b4 M+ Z                CLR        EA                        ;关总中断
8 K% |3 Y9 _3 U( }- k6 X# m                JNB        P3.2,        [        DISCUZ_CODE_19        ]nbsp;               ;: @8 L2 b3 a! l# Y4 L9 `* t3 k
                MOV        A,        DAT                ;保存显示数据. S+ x7 o3 K1 J. s* X2 G$ u+ c6 @* B0 e1 J
                MOV        20H,        A                ;
  x& O. Y" x- R$ ~                MOV        DAT,        #50H                ;! n" B! h- N3 U; Y0 ]
                MOV        21H,        P1                ;  C) I+ z5 {" Q
                MOV        22H,        P2                ;& a3 r. H# [3 \2 i& t
                MOV        P1,        #0FFH                ;
- ?1 m6 g/ p' K/ l5 O4 y                MOV        P2,        #0FFH                ;
6 m& n4 I3 Z8 }/ A' ?                CLR        ZG                        ;东西向绿灯亮/ g  D; x3 }' r
                CLR        YG                        ;, ^- i; ]$ p( c$ {7 I
                CLR        QR                        ;南北向红灯亮# |5 w" l9 F0 G* ]$ U- j- i6 U
8 d$ M0 j+ [  w0 v* q. q
( H# q/ p' N! l9 s! D
…………限于本文篇幅 余下代码请下载附件…………
. t8 y; {3 z, ^, x0 q5 ^/ s( W
, z: K( \1 B( s* f
游客,如果您要查看本帖隐藏内容请回复
, U* H" Y/ v2 T; y3 q

4 Y) j$ g) M- s; K" L
% p1 S7 U# ^7 D$ V5 P8 v, ?2 o" |2 k

1 h# u3 _5 }# j7 H2 M% C

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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