|
使用C程序編寫的控制程序
紅燈30s
綠燈25s
黃燈5s- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit SN_green=P3^2; //南北方向綠燈,黃燈和紅燈
- sbit SN_yellow=P3^1;
- sbit SN_red=P3^0;
- sbit EW_green=P3^5; //東西方向綠燈,黃燈和紅燈
- sbit EW_yellow=P3^4;
- sbit EW_red=P3^3;
- uchar cnt_sn,cnt_ew;
- uchar state_sn,state_ew;
- uint T1_cnt;
- uchar led_code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- uchar init_sn[3]={24,4,29};
- uchar init_ew[3]={29,24,4};
- void delay(uint i)
- {
- while(i--);
- }
-
- void led_show(uint u,uint v)
- {
- uchar i;
- i=u%10;
- P0=led_code[i];
- P2=0xbf;
- delay(100);
- i=u%100/10;
- P0=led_code[i];
- P2=0x7f;
- delay(100);
- i=v%10;
- P0=led_code[i];
- P2=0xfe;
- delay(100);
- i=v%100/10;
- P0=led_code[i];
- P2=0xfd;
- delay(100);
- }
-
- void timer1() interrupt 3
- {
- T1_cnt++;
- if(T1_cnt>3999)
- {
- T1_cnt=0;
- if(cnt_sn!=0)
- {
- cnt_sn--;
- }
- else
- {
- state_sn++;
- if(state_sn>2)
- {
- state_sn=0;
- }
- cnt_sn=init_sn[state_sn];
- switch(state_sn)
- {
- case 0:
- SN_green=0;
- SN_yellow=1;
- SN_red=1;
- break;
- case 1:
- SN_green=1;
- SN_yellow=0;
- SN_red=1;
- break;
- case 2:
- SN_green=1;
- SN_yellow=1;
- SN_red=0;
- break;
- }
- }
- if(cnt_ew!=0)
- {
- cnt_ew--;
- }
- else
- {
- state_ew++;
- if(state_ew>2)
- {
- state_ew=0;
- }
- cnt_ew=init_ew[state_ew];
- switch(state_ew)
- {
- case 0:
- EW_green=0;
- EW_yellow=1;
- EW_red=1;
- break;
- case 1:
- EW_green=1;
- EW_yellow=0;
- EW_red=1;
- break;
- case 2:
- EW_green=1;
- EW_yellow=1;
- EW_red=0;
- break;
- }
- }
- }
- }
- void main()
- {
- cnt_sn=init_sn[0];
- cnt_ew=init_ew[0];
- T1_cnt=0;
- state_sn=0;
- state_ew=0;
- SN_green=0;
- SN_yellow=1;
- SN_red=1;
- EW_green=1;
- EW_yellow=1;
- EW_red=0;
-
- TMOD=0x20;
- TH1=0;
- TL1=0x19;
- EA=1;
- ET1=1;
- TR1=1;
- while(1)
- {
- led_show(cnt_sn,cnt_ew);
- }
- }
-
復制代碼
|
-
-
JTD.rar
2016-3-28 15:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
19.75 KB, 下載次數: 13, 下載積分: 黑幣 -5
評分
-
查看全部評分
|