本實驗為紅綠燈實驗二,加入了數碼管來顯示倒計時,模擬交通燈的運行(壓縮包中有仿真+程序)
單片機源程序如下:
- #include "reg51.h"
- #define u8 unsigned char
- sbit nan_lv=P2^0;//南北綠
- sbit nan_huang=P2^1;//南北黃
- sbit nan_hong=P2^2;//南北紅
- sbit dong_lv=P2^3;//東西綠
- sbit dong_huang=P2^4;//東西黃
- sbit dong_hong=P2^5;//東西紅
- void delay(long i){while(i--);}//定時器,延時
- //低要求:實現紅黃綠燈的切換
- //中等要求:黃燈要閃爍
- //高水平:數碼管實現倒計時
- void fun(u8 i)
- {
- while(i--)
- {
- P3=((i/10)<<4)+(i%10);
- delay(10000);
- }
- }
- void main(void)
- {
- u8 huang=0;//huang=黃燈倒計時
- while(1)
- {
- P2=0xff;nan_lv=0;dong_hong=0;
- fun(20);
- nan_lv=1;
- huang=9;
- while(huang--)
- {
- nan_huang=~nan_huang;
- P3=(((huang/2)/10)<<4)+((huang/2)%10);
- delay(7000);
- }
- P2=0xff;dong_lv=0;nan_hong=0;
- fun(20);
- dong_lv=1;
- huang=9;
- while(huang--)
- {
- dong_huang=~dong_huang;
- P3=(((huang/2)/10)<<4)+((huang/2)%10);
- delay(7000);
- }
- }
- }
復制代碼
所有資料51hei提供下載:
紅綠燈實驗二.rar
(50.46 KB, 下載次數: 9)
2021-7-16 16:46 上傳
點擊文件名下載附件
|