|
單片機(jī)控制的交通燈。仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (28.09 KB, 下載次數(shù): 50)
下載附件
2018-12-4 03:03 上傳
單片機(jī)源程序如下:
- #include <REG51.H>
- unsigned char t0,t1; //定義全局變量,用來(lái)保存延時(shí)時(shí)間循環(huán)次數(shù)
- void delay0_5s1()
- {
- for(t0=0;t0<0x0a;t0++) // 采用全局變量t0作為循環(huán)控制變量
- {
- TH1=0x3c; // 設(shè)置定時(shí)器初值
- TL1=0xb0;
- TR1=1; // 啟動(dòng)T1
- while(!TF1); // 查詢計(jì)數(shù)是否溢出,即定時(shí)50ms時(shí)間到,TF1=1
- TF1=0; // 50ms定時(shí)時(shí)間到,將定時(shí)器溢出標(biāo)志位TF1清零
- }
- }
- //函數(shù)功能:實(shí)現(xiàn)0.5秒~128秒延時(shí),延時(shí)時(shí)間為0.5秒×t
- void delay_t1(unsigned char t)
- {
- for(t1=0;t1<t;t1++) // 采用全局變量t0作為循環(huán)控制變量
- delay0_5s1();
- }
- //函數(shù)功能:外部中斷0中斷函數(shù),緊急情況處理,當(dāng)CPU響應(yīng)外部中斷
- //0的中斷請(qǐng)求時(shí),自動(dòng)執(zhí)行該函數(shù),實(shí)現(xiàn)兩個(gè)方向紅燈同時(shí)亮10秒
- void int_0() interrupt 0 // 緊急情況中斷
- {
- unsigned char i,j,k,l,m;
- i=P1; // 保護(hù)現(xiàn)場(chǎng),暫存P1口、t0、t1、TH1、TH0
- j=t0;
- k=t1;
- l=TH1;
- m=TH0;
- P1=0xdb; // 兩個(gè)方向都是紅燈
- delay_t1(20); // 延時(shí)10秒
- P1=i; // 恢復(fù)現(xiàn)場(chǎng),恢復(fù)進(jìn)入中斷前P1口、t0、t1、TH1、TH0
- t0=j;
- t1=k;
- TH1=l;
- TH0=m;
- }
- //函數(shù)功能:外部中斷1中斷函數(shù),特殊情況處理,當(dāng)CPU響應(yīng)外部中斷
- //1的中斷請(qǐng)求時(shí),自動(dòng)執(zhí)行該函數(shù),實(shí)現(xiàn)A道放行5秒
- void int_1() interrupt 2 // 特殊情況中斷
- {
- unsigned char i,j,k,l,m;
- EA=0; //關(guān)中斷
- i=P1; // 保護(hù)現(xiàn)場(chǎng),暫存P1口、t0、t1、TH1、TH0
- j=t0;
- k=t1;
- l=TH1;
- m=TH0;
- EA=1; // 開中斷
- P1=0xf3; // A道放行
- delay_t1(10); // 延時(shí)5秒
- EA=0; // 關(guān)中斷
- P1=i; // 恢復(fù)現(xiàn)場(chǎng),恢復(fù)進(jìn)入中斷前P1口、t0、t1、TH1、TH0
- t0=j;
- t1=k;
- TH1=l;
- TH0=m;
- EA=1; //開中斷
- }
- void main() //主函數(shù)
- {
- unsigned char k;
- TMOD=0x10; // T1工作在方式1
- EA=1; // 開放總中斷允許位
- EX0=1; // 開外部中斷0中斷允許位
- IT0=1; // 設(shè)置外部中斷0為下降沿觸發(fā)
- EX1=1; // 開外部中斷1中斷允許位
- IT1=1; // 設(shè)置外部中斷1為下降沿觸發(fā)
- while(1) {
- P1=0xf3; // A綠燈,B紅燈,延時(shí)5秒
- delay_t1(10);
- for(k=0;k<3;k++) // A綠燈閃爍3次
- {
- P1=0xf3;
- delay0_5s1(); // 延時(shí)0.5秒
- P1=0xfb;
- delay0_5s1(); // 延時(shí)0.5秒
- }
- P1=0xeb; // A黃燈,B紅燈,延時(shí)2秒
- delay_t1(4);
- P1=0xde; // A紅燈,B綠燈,延時(shí)5秒
- delay_t1(10);
- for(k=0;k<3;k++) // B綠燈閃爍3次
- {
- P1=0xde;
- delay0_5s1(); // 延時(shí)0.5秒
- P1=0xdf;
- delay0_5s1(); // 延時(shí)0.5秒
- }
- P1=0xdd; // A紅燈,B黃燈,延時(shí)2秒
- delay_t1(4);
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
四組交通燈.rar
(66.71 KB, 下載次數(shù): 24)
2018-12-3 20:52 上傳
點(diǎn)擊文件名下載附件
交通燈 下載積分: 黑幣 -5
|
|