|
這是我的實驗,
交通燈控制的,
平時都是東西南北交替20s,
異常60s,
是自己一點一點寫的,
請大家多多指教
實驗一:交通燈控制實驗
實驗學(xué)時:2;實驗類型:驗證 ;實驗要求:必做
一、實驗?zāi)康?br />
1. 了解51單片機(jī)芯片的引腳及編程特點。
2. 熟悉匯編及C語言編寫程序的方法。
3. 掌握定時器和中斷的應(yīng)用,同時使用定時中斷和外部中斷。
4. 熟悉Keil軟件的使用方法。
5. 學(xué)會使用各類程序下載器的實用。
二、實驗內(nèi)容
1.學(xué)習(xí)如何使用程序下載器下載程序至開發(fā)板。
2.設(shè)計C語言程序。
3.根據(jù)C語言程序結(jié)合所學(xué)知識編譯程序。
三、實驗原理、方法和手段
用單片機(jī)設(shè)計一個十字路口交通燈模擬控制系統(tǒng),要求東西、南北兩個方向都通行20秒,警告3秒,禁止20秒,同時要考慮到東西、南北兩個方向出現(xiàn)異常情況,出現(xiàn)異常情況器該方向通行60秒。
51hei.png (16.88 KB, 下載次數(shù): 68)
下載附件
2022-11-27 22:10 上傳
四、實驗條件
1.臺式電腦一臺,且至少要具備一個usb串行口。
2.單片機(jī)仿真實驗板一塊
3.usb串口連接線一條
4.杜邦線若干
五、實驗步驟
程序內(nèi)容:
主程序中實現(xiàn)交通燈正常運行過程;
兩種異常用外中斷0和外中斷1管理,外接開關(guān)模擬異常發(fā)生;
在中斷服務(wù)程序中實現(xiàn)異常處理,在主程序中開放外中斷0和外中斷1,設(shè)置為邊沿觸發(fā)方式;
500ms信號由定時計數(shù)器0,選擇方式1,定時50ms,循環(huán)10次產(chǎn)生,定時計數(shù)器0采用查詢方式。
1.實驗預(yù)習(xí):在實驗前每位同學(xué)都需要對本次實驗進(jìn)行認(rèn)真的預(yù)習(xí),學(xué)習(xí)仿真系統(tǒng)的過程,編制好相應(yīng)的實驗程序。
2.實驗記錄:學(xué)生記錄實驗過程如何變化。
3.實驗報告:畫出并分析各程序流程圖,寫出各程序主要功能能,編制各程序的替代程序。實驗報告要獨立完成,字跡工整,圖表清晰,分析認(rèn)真全面。
八、其它說明
進(jìn)行硬件實驗室注意連線規(guī)范,防止由于短路引起的器件損壞,所有硬件設(shè)備不可帶電插拔。
程序參考:
while(1)
{
P1=0x21; //狀態(tài)1,東西方向綠燈,南北方向紅燈20s
delay1s(40);
P1=0x41; //狀態(tài)2,東西方向黃燈,南北方向紅燈3s
delay1s(6);
P1=0x12; //狀態(tài)3,南北方向綠燈,東西方向紅燈20s
delay1s(40);
P1=0x14; //狀態(tài)4,南北方向黃燈,東西方向紅燈3s
delay1s(6);
}
}
void int_0(void) interrupt 0
{
unsigned char i1,i2;
i1=P1;
for(i2=0;i2<60;i2++)
{
P1=0x21;
delay1s(1);
P1=0x00;
delay1s(1);
}
P1=i1;
}
void int_1(void) interrupt 2
{
unsigned char j1,j2;
j1=P1;
for(j2=0;j2<60;j2++)
{
P1=0x12;
delay1s(1);
P1=0x00;
delay1s(1);
}
P1=j1;
}
//延時500ms函數(shù)
void delay1s(unsigned char m)
{
unsigned char k1,k2;
TH0=0x3C;TL0=0xB0;
TR0=1;
for (k1=0;k1<m;k1++)
{
for (k2=0;k2<10;k2++)
{
while(!TF0);
TF0=0;
TH0=0x3C;TL0=0xB0;
}
}
}
|
|