TA的每日心情 | 开心 2019-11-20 15:05 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
7 I# W3 C* K5 W- q8 U( M3 B2 ^
51单片机十字路口交通灯Proteus仿真图和源码. b9 x: @3 l* J; |
( t8 E' X, ]1 ^proteus仿真原理图:
1 X1 H. {# w) T: w* Z7 P! J
4 W6 c+ D4 f5 p# J& W0 {4 v9 ~$ n% u6 T* X% q
单片机源码: | #include<reg51.h>) e" k) H+ v/ y! C3 M4 E
#include<absacc.h>
2 \8 E0 r( |$ O+ |, S1 c% z \9 l: d6 Z! e6 X7 ~9 t4 Y
#define uchar unsigned char0 Q% H/ Q) V& |8 r# Z
#define uint unsigned int ! S! m" c- ?3 j: z
#define PA 0xf8ff" g5 ?. @$ X4 j" P. N6 P6 t: E; G
#define PB 0xf9ff# E% U. e" w$ |$ q, C% u
#define PC 0xfaff
3 z6 d( W5 B$ b! R9 M3 V; p) o#define CTRL XBYTE[0xfbff]
$ p* P$ _& h. F, Z' ^' Z, ~, V
( L: s3 @% N2 T& Y3 Y, A( o. @sbit KEY1 = P3^0;
# b* K$ U- ~9 ^3 F! ~2 X3 xsbit KEY2 = P3^1;
* O7 m) I! U, L6 j; t
: \0 o" f4 Q' _; H3 P( Duint i=0, cnt = 0;/ H0 o! C7 ]4 r" H
uchar table[]={! m3 {' q) [* o( Q% J0 v' T$ J
0x3f,0x06,0x5b,0x4f,
q" N# M( h) J. t4 j' _) ` 0x66,0x6d,0x7d,0x07,
& h3 q" y: y* U% V( ]( l 0x7f,0x6f,0x77,0x7c,
4 m* O8 I5 Y4 l& F( V 0x39,0x5e,0x79,0x71
8 \# J) B/ o6 v0 }};
" Z y0 U. K$ @: z( O+ e- Z9 g( d( i7 h% |3 H- ]! o
void IntConfiguration();, p: e' i4 O- }2 R9 m+ p
void TimeConfig();
- t/ L9 e1 k" V' ?/ w( i3 ^void display(int, int, uint, uint, uint, uint);8 C: [; i* C6 w" S( R+ I5 V
void delay(int);9 y r- u% h. v
- Y% Q; G, y5 L! [
void main(), j/ T( a* g# ?) b- Q: x
{' J: T$ W! G7 ]3 M9 E
CTRL = 0x80;/ Y, H* \% f. U3 |1 z2 A
IP = 0x05;- ^% G, ]* _4 Z6 n6 |
IntConfiguration();8 A# N' ]1 m- ]: K8 A
TimeConfig();7 t8 w" A: z) w1 }% n1 |, J+ c- w
while(1)
* M) \! F' }% D {
! L4 L" Z% V( m5 w) O4 U if(cnt < 55)
0 Q& t# C: `' _ {
& s1 W9 F' Y2 g! z9 a; ~( H XBYTE[PA] = 0x33;! k/ T# g+ n! N+ d3 W
display(PB, PC, (54-cnt)/10,(54-cnt)%10, (59-cnt)/10,(59-cnt)%10);
# D W. w4 o. t. H }
! e6 k4 z9 F$ L' N8 k: p8 K else if(cnt >= 55 && cnt < 60). {$ p, A% e. G0 s" G# n7 [' t& B. Y% q
{
& N, k& _ f" P# c: ^! n6 ?$ s XBYTE[PA] = 0x35;
3 V7 }9 ~1 G; F# {+ _' @$ j4 l display(PB, PC, (59-cnt)/10,(59-cnt)%10, (59-cnt)/10,(59-cnt)%10);+ w; D( k% K q/ W" x* s
}1 ~% C% }. U, x) B3 L( o( D
else if(cnt >= 60 && cnt < 85), L9 }0 x9 c( m9 x
{
) ^: W! ~* T- T5 g5 ~/ }7 ~( h5 r XBYTE[PA] = 0x1e;2 ~9 ?( P) \& V [- e. p6 l" b
display(PB, PC, (89-cnt)/10,(89-cnt)%10, (84-cnt)/10,(84-cnt)%10);
- _, W, W( r' h8 b4 ^ G) | } B+ t. ^) d' i& M# {9 ?
else if(cnt >= 85 && cnt < 90)
" N4 p* ]8 B7 X2 {' _, B {
7 W3 b: m6 Z0 P! k* o XBYTE[PA] = 0x2e;
* Z) z; U3 @. w/ m$ a! R' D/ H, g display(PB, PC, (89-cnt)/10,(89-cnt)%10, (89-cnt)/10,(89-cnt)%10);0 p- f I! {, @( \
} z* V$ f! [6 {% l4 k6 p7 B& O
+ P8 G$ F5 F3 }; l8 w- V }
: [/ ^1 X; Q O# o& m. H}9 { c+ S; m- K' `7 Q6 }. Y
+ ]3 A2 {3 r. |, g: m
void display(int x, int y, uint a,uint b, uint c, uint d)! k3 G; K( G4 a8 q( R
{' p- H8 t/ `' U- p' d: O- |
P1 = 0x0e;
1 t7 m) D, w! `9 `2 N p) y# m XBYTE[x] = table[a];1 S ^8 l8 k& t% h3 @
delay(1);
& g" }! a- [8 R" [
% ^. P! W* X3 W; D$ r% M' F0 b P1 = 0x0d;
6 t* y( s) [& I XBYTE[x] = table;2 j& _3 K+ P" i
delay(1);
9 y, `0 ~3 u1 t/ h
7 L: k' @2 [3 e/ c" C, Q. H7 _& L% B
P1 = 0x0b;) [2 R( w" K& @& \4 A: g
XBYTE[y] = table[c];3 Q% F8 _9 _! S
delay(1);
* N* k z+ I7 Q9 n2 B5 U7 i z* C) t5 G6 Y1 Z1 U* f
P1 = 0x07;. w e; |6 H) z) D. a% V: u1 A
XBYTE[y] = table[d];
5 ?' B7 H. K+ u( l; P( U, \ delay(1);
% E( F8 T3 R1 y6 a, i8 |, f P1 = 0x0f;
1 d* }: [9 X5 W; |! V z1 O}7 J% f% Q$ D' \
; o/ _! G/ f) H: o* N
void delay(int z). e, _0 m. N" Q. N
{
% b, e6 s: ?- a. ]6 i6 U. duint x,y;
1 l$ v# \0 ~; q1 F, Jfor(x=z;x>0;x--) |) r9 z! c& Y t% _
for(y=110;y>0;y--);2 H9 `9 s$ b9 e" |" a; o
}
) r+ s. Z5 \5 ]& X0 ~2 b
6 o, u0 j1 I( R% e5 qvoid IntConfiguration()
7 v M9 e/ I3 @6 w& o{
) J8 K/ f, K, ?$ B: I IT0=0;8 A. z$ w7 Z& B6 I! z
EX0=1;
' G6 Z9 m$ |( }$ _3 R$ ~# B8 C IT1=0;
* O3 V: @5 [1 }) ] EX1=1;
6 @& P2 l+ r9 Y' l EA=1;
( e# T" c6 v* k. R}. H% J3 @ ?1 L' V' O& T* A
) g9 X* M `( c q
void TimeConfig()
5 L# H. O. a5 s! R3 a, |: C{
' f9 z7 O) c( e8 R TMOD = 0x01;0 n5 {) g5 X2 z$ |
TH0 = (65536-10000)/256;! Z( W# r1 J+ h) ]8 B1 s: l
TL0 = (65536-10000)%256;
9 b- P! @9 K) n" U$ L3 ]) T. \. X EA = 1;
2 N5 L6 X; C% {$ t& A( q" O: o5 }* ]9 D ET0 = 1;& R! Q! y2 c! t' u7 G
TR0 = 1; 8 b3 m0 M6 S4 k* z8 Z0 B, ]# p
}
# h6 x2 |1 D/ `- i) n" z) Q5 P7 a2 C! Y$ A1 s, @
void Int0() interrupt 0
% r3 z( I" _- A6 T }! X) W{8 A5 Z, \8 S7 Z0 w4 v8 L) m* d
XBYTE[PA] =0x36;' O& n( {4 b1 \5 K3 Z; w/ D8 `
display(PB, PC, 0, 0, 0, 0);
1 z1 p/ z5 t1 @' p}
{6 ~6 I" W, m( \/ {7 M$ c& p* E* j+ L( w- H. V
void Int1() interrupt 2 : K9 [2 g+ Y, W# q/ Z" w
{
: {) g6 b1 |4 Q5 C: e/ }
3 ]' e6 v' M. q if(KEY1 == 0)
$ j0 S( B& B1 D4 b% p/ T XBYTE[PA] = 0x33;
$ n( ^8 e& B2 q8 S4 h if(KEY2 == 0)
, R" H/ @6 L* @$ ?' i6 G/ d XBYTE[PA] = 0x1e;
9 s# q5 U) X" E" p4 l display(PB, PC, 0, 0, 0, 0);
+ U3 G4 ^5 d1 A( c* y' S2 u0 F( j}
: o7 r" W; l; Q: `6 }& `
& l- v- q, [* F# a1 c0 ^void mytimer() interrupt 1
! b: m. t% `* e) ~& C5 @{
! |$ |, ]0 p; ~: j+ B. A% I; O uint flag = 0;
" }/ ^( |) G4 K3 H, c TH0 = (65536-10000)/256;
2 \3 N8 x/ V3 B/ m" i/ n TL0 = (65536-10000)%256;
. w8 w i, V# o: [# E: r
y1 B& g/ K6 _* m. E; c i++;
3 D: w4 v. w- X if(i >= 100)
; ?6 T# N; c( h% @ {
3 k1 L7 ]# p3 m: ]- B i = 0;( H$ {" l1 O1 C' i
flag = 1;
( F6 k, m( Z( d. l3 l% } }
( c3 K4 y: ^" [1 m; j if(flag == 1)
# U! @/ n1 h+ C" i" c/ o5 S i* Z
+ ]+ A$ N5 s) S( p3 H
: D& F% ^) }* ] p6 H7 X; x…………限于本文篇幅 余下代码请从论坛下载附件…………& D: o }3 j; y: a- Y4 D' l
3 q. y/ L s3 n& ?, o- q) h) S, v
3 d* c8 Z) H; v$ S5 u |
|