51單片機十字路口交通燈
proteus仿真原理圖:
0.png (39.51 KB, 下載次數: 67)
下載附件
2017-5-9 23:10 上傳
0.png (66.89 KB, 下載次數: 86)
下載附件
2017-5-9 23:09 上傳
單片機源碼:
- #include<reg51.h>
- #include<absacc.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define PA 0xf8ff
- #define PB 0xf9ff
- #define PC 0xfaff
- #define CTRL XBYTE[0xfbff]
- sbit KEY1 = P3^0;
- sbit KEY2 = P3^1;
- uint i=0, cnt = 0;
- uchar table[]={
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71
- };
- void IntConfiguration();
- void TimeConfig();
- void display(int, int, uint, uint, uint, uint);
- void delay(int);
- void main()
- {
- CTRL = 0x80;
- IP = 0x05;
- IntConfiguration();
- TimeConfig();
- while(1)
- {
- if(cnt < 55)
- {
- XBYTE[PA] = 0x33;
- display(PB, PC, (54-cnt)/10,(54-cnt)%10, (59-cnt)/10,(59-cnt)%10);
- }
- else if(cnt >= 55 && cnt < 60)
- {
- XBYTE[PA] = 0x35;
- display(PB, PC, (59-cnt)/10,(59-cnt)%10, (59-cnt)/10,(59-cnt)%10);
- }
- else if(cnt >= 60 && cnt < 85)
- {
- XBYTE[PA] = 0x1e;
- display(PB, PC, (89-cnt)/10,(89-cnt)%10, (84-cnt)/10,(84-cnt)%10);
- }
- else if(cnt >= 85 && cnt < 90)
- {
- XBYTE[PA] = 0x2e;
- display(PB, PC, (89-cnt)/10,(89-cnt)%10, (89-cnt)/10,(89-cnt)%10);
- }
- }
- }
- void display(int x, int y, uint a,uint b, uint c, uint d)
- {
- P1 = 0x0e;
- XBYTE[x] = table[a];
- delay(1);
- P1 = 0x0d;
- XBYTE[x] = table[b];
- delay(1);
- P1 = 0x0b;
- XBYTE[y] = table[c];
- delay(1);
- P1 = 0x07;
- XBYTE[y] = table[d];
- delay(1);
- P1 = 0x0f;
- }
- void delay(int z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void IntConfiguration()
- {
- IT0=0;
- EX0=1;
- IT1=0;
- EX1=1;
- EA=1;
- }
- void TimeConfig()
- {
- TMOD = 0x01;
- TH0 = (65536-10000)/256;
- TL0 = (65536-10000)%256;
- EA = 1;
- ET0 = 1;
- TR0 = 1;
- }
- void Int0() interrupt 0
- {
- XBYTE[PA] =0x36;
- display(PB, PC, 0, 0, 0, 0);
- }
- void Int1() interrupt 2
- {
- if(KEY1 == 0)
- XBYTE[PA] = 0x33;
- if(KEY2 == 0)
- XBYTE[PA] = 0x1e;
- display(PB, PC, 0, 0, 0, 0);
- }
- void mytimer() interrupt 1
- {
- uint flag = 0;
- TH0 = (65536-10000)/256;
- TL0 = (65536-10000)%256;
- i++;
- if(i >= 100)
- {
- i = 0;
- flag = 1;
- }
- if(flag == 1)
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
下載:
交通燈.rar
(96.13 KB, 下載次數: 37)
2017-5-9 20:21 上傳
點擊文件名下載附件
原理圖及源碼 下載積分: 黑幣 -5
|