QQ截圖20180522172325.png (38.11 KB, 下載次數: 63)
下載附件
2018-5-22 17:24 上傳
QQ截圖20180522172210.png (37.34 KB, 下載次數: 58)
下載附件
2018-5-22 17:24 上傳
QQ截圖20180522172301.png (37.93 KB, 下載次數: 61)
下載附件
2018-5-22 17:24 上傳
QQ截圖20180522172742.png (51.84 KB, 下載次數: 70)
下載附件
2018-5-22 17:29 上傳
QQ截圖20180522172724.png (10.42 KB, 下載次數: 46)
下載附件
2018-5-22 17:29 上傳
QQ截圖20180522172705.png (44.38 KB, 下載次數: 48)
下載附件
2018-5-22 17:29 上傳
0.png (46.65 KB, 下載次數: 55)
下載附件
2018-5-22 17:58 上傳
單片機源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- sbit c=P1^1;
- sbit d=P1^4;
- uchar led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0到9數碼管顯示
- void delay1(uchar j)//延時若干ms
- {uchar i;
- while(j--)
- {for(i=0;i<125;i++)
- for(i=0;i<125;i++);}
- }
- void delay(uchar i) //延時1秒鐘
- {
- unsigned char a,b,c;
- while(i--)
- {for(c=167;c>0;c--)
- for(b=171;b>0;b--)
- for(a=16;a>0;a--);
- _nop_; }
- }
- void nanbei(uchar a)//南北顯示紅綠燈
- {uchar j=100;
- P1=0X24;
- for(a;a>0;a--)
- {
- while(j--)
- {
- P0=0XFE;
- P2=led[a/10];//顯示十位倒計時
- delay1(5);//延時5毫秒,給機器一點反應時間
- P0=0XFd;
- P2=led[a%10];//顯示個位倒計時
- delay1(5);//延時5毫秒,給機器一點反應時間
- if(a<=3)//如果a小于3,則開始黃燈閃爍
- {
- P1=0X12;
- delay1(10);
- P1=0X00;
- delay1(10);
- }
- }
- }
- }
- void dongxi(uchar a)//東西顯示紅綠燈
- {uchar j=100;
- P1=0X09;
- for(a;a>0;a--)
- {
- while(j--)
- {
- P0=0XFB;
- P2=led[a/10];//顯示十位倒計時
- delay1(5);//延時5毫秒,給機器一點反應時間
- P0=0XF7;
- P2=led[a%10];//顯示個位倒計時
- delay1(5);//延時5毫秒,給機器一點反應時間
- if(a<=3)//如果a小于3,則開始黃燈閃爍
- {
- P1=0X12;
- delay1(10);
- P1=0X00;
- delay1(10);
- }
- }
- }
- }
- main()
- {EA=1;//允許中斷
- EX0=1;//允許外部中斷0
- IT0=1;//跳沿觸發(fā)
- while(1)
- {dongxi(60);//東西通行時間60秒
- nanbei(40);//南北通行時間40秒
- }
- }
- void into(void) interrupt 0 //外部中斷0函數,用于強行更改紅綠燈方向
- {uchar i,j=1000,b;
- P0=0XFF;
- P1=P1&0X01;//判斷如果P1最后一位為1,則東西方向為綠燈,南北方向為紅燈
- if(P1==0X01)
- {P1=0X08;
- for(b=0;b<3;b++)
- {{for(i=0;i<10;i++)//黃燈閃爍次數
- {delay1(100);
- c=~c;
- delay1(100);
- }}}
- P1=0Xe4;
- delay(10);//改變之后的時間延時10秒
- }
- else
- {P1=0X04;
- for(b=0;b<3;b++)
- {{for(i=0;i<10;i++)
- {delay1(100);
- d=~d;
- delay1(100);
- }}}
- P1=0X09;
- delay(10);//改變之后的時間延時10秒
- }}
復制代碼
所有資料51hei提供下載:
帶中斷的紅綠燈.zip
(68.01 KB, 下載次數: 49)
2018-5-22 17:26 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|