|
本實驗主要利用了定時器和中斷的知識,定時器定時,顯示不同的燈。通過中斷控制顯示時長,閃爍。中斷處理按鍵,可靠性更高。
定時器T0利用的方式1,方式1是一個16位的定時器,中斷的次數會相對較低。因為交通燈是秒級的控制,不需要很高的中斷頻率,如果用方式2的8位自動重裝方式,每秒中斷數千次,你仍然需要再次分頻以獲得秒或十分之一秒的信號,實在是沒有必要。
圖3.2共有4個按鍵K1、K2、K3、K4,分別連接到單片機P2.0、P2.1、P2.2、P2.3引腳,按鍵后對應引腳為低電平,通過4個二極管D17、D18、D19、D20連接到P3.2(外部中斷0),這是二極管構成的相與電路,即任意按一個鍵能在P3.2上產生一個低電平或下降沿,作為中斷觸發信號。
五、軟件設計思想
1、定時思想。
采用定時器T0或T1的方式1定時50ms,每50ms中斷進行計數,計數10次即0.5s,計數20次即1s,對秒計數實現所需要的定時時間。
2、亮燈控制思想。
單片機控制燈引腳與燈對應如下,0點亮。
一共有四種狀態S0、S1、S2、S3,
a、南北通行S0狀態:
51hei.png (32.13 KB, 下載次數: 48)
下載附件
2020-7-24 15:57 上傳
設置一個秒計數單元SEC每秒+1,設置兩個控制值變量a,b。
首先令SEC=0,a=0xfc,b=0xf3,處于S0狀態;
SEC==25,a=0xfd,b=0x75,處于S1狀態;
SEC==30,a=0xf7,b=0x9e,處于S2狀態;
SEC==55,a=0xfb,b=0xae,處于S3狀態;
SEC==60,SEC=0,a=0xfc,b=0xf3,處于S0狀態;
P0=a,P1=b。
設置一個秒計數單元SEC每秒+1,設置兩個控制值變量a,b。
首先令SEC=0,a=0xf7,b=0x9e,處于S0狀態;
SEC==25,a=0xfb,b=0xae,處于S1狀態;
SEC==30,a=0xfc,b=0xf3,處于S2狀態;
SEC==55,a=0xfd,b=0x75,處于S3狀態;
SEC==60,SEC=0,a=0xf7,b=0x9e,處于S0狀態;
P0=a,P1=b。
3、交通燈鍵控
按鍵后即進入外部中斷0,在外部中斷0中斷程序中判斷:若是按K1鍵,控制南北通行狀態,并將定時器T0關閉,即可保持南北通行狀態;若是按K2鍵,控制東西通行狀態,并將定時器T0中斷關閉,即可保持東西通行狀態;若是按K3鍵,開啟定時器T0中斷,恢復正常交通燈。
4、閃爍控制
在需要閃爍時,0.5s按正常顯示,0.5s全滅,即是閃爍效果。實現方法是:當=0.5s的時刻,并且在南北通行的最后5s(19<sec<25)或在東西通行的最后5s(49<sec<55),滅綠燈: P0=a|0xf9,P1==b|0x24,當=1s的時刻,按正常顯示。
單片機源程序如下:
實驗途中要注意,每個按鍵對應的LED燈,在與開發板連接時需要保證端口正確。實驗原理圖等,在文檔“實驗二”內。
|
-
-
實驗二.docx
2020-7-24 15:52 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
46.36 KB, 下載次數: 16, 下載積分: 黑幣 -5
-
-
交通燈實驗源碼.rar
2020-7-24 15:43 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
20.92 KB, 下載次數: 16, 下載積分: 黑幣 -5
|