|
多功能交通燈控制電路
緊急情況/退出緊急情況/確認
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):
0.png (35.22 KB, 下載次數: 53)
下載附件
2017-5-29 03:03 上傳
0.png (74.14 KB, 下載次數: 54)
下載附件
2017-5-29 03:02 上傳
0.png (27.23 KB, 下載次數: 65)
下載附件
2017-5-29 03:04 上傳
單片機源程序如下:
- #define _MAIN_C
- #include "use.h"
- #include "main.h"
- #include "time.h"
- #include "key.h"
- bit flag1s;
- uchar count1s,NS_time,WE_time;
- uchar GreenTime=30,RedTime=35;
- uchar index=0;
- enum eStaSysterm StaSysterm=NormalRun;
- void main()
- {
- EA=1; //開總中斷
- InintTimer0(); //初始化定時器0
- while(1)
- {
- LEDScan(); //數碼管即LED掃描
- KeyDriver(); //鍵盤驅動掃描
- if(flag1s)
- {
- flag1s=0;
- NS_time--; //紅綠燈倒計時時間減
- WE_time--;
- }
- }
- }
- void InintTimer0()
- {
- TMOD=0X01;
- TH0=0X4C;
- TL0=0X00;
- ET0=1;
- TR0=1;
- }
- void Timer0() interrupt 1
- {
- TH0=0XBB;
- TL0=0X00;
- KeyScan();
- if(++count1s<50) return;
- count1s=0;
- if(StaSysterm==NormalRun) flag1s=1; //非正常運行時,不紅綠燈數值不減一
- }
- void LEDScan()
- {
- if(StaSysterm==NormalRun) //正常運行
- {
- if(NS_time==0 || WE_time==0)
- {
- switch(index) //改變紅綠燈的狀態,狀態機
- {
- case 0:
- {
- index=1;
- NS_time=GreenTime;
- WE_time=RedTime;
- P2=0X09;
- }break;
- case 1:
- {
- index=2;
- NS_time=RedTime-GreenTime;
- P2=0X0A;
- }break;
- case 2:
- {
- index=3;
- NS_time=RedTime;
- WE_time=GreenTime;
- P2=0X24;
- }break;
- case 3:
- {
- index=0;
- WE_time=RedTime-GreenTime;
- P2=0X14;
- }break;
- default:break;
- }
- }
- Seg_Display(NS_time/10,0);
- Seg_Display(NS_time%10,1);
- Seg_Display(WE_time/10,2);
- Seg_Display(WE_time%10,3);
- }
- else if(StaSysterm==UrgentRun)
- { //緊急情況運行
- P2=0x12;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
加強版紅綠燈.rar
(70.65 KB, 下載次數: 83)
2017-5-28 21:32 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
多功能交通燈.rar
(80.27 KB, 下載次數: 61)
2017-5-28 21:31 上傳
點擊文件名下載附件
多功能交通燈 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|