|
里面包含程序和原理圖及仿真
單片機交通燈實物圖:
0.png (504.22 KB, 下載次數: 220)
下載附件
2016-5-7 05:12 上傳
十字路口交通燈的仿真圖原理圖:
0.png (42.53 KB, 下載次數: 217)
下載附件
2016-5-7 05:12 上傳
所有文件打包下載:
0.png (35.78 KB, 下載次數: 189)
下載附件
2016-5-7 05:12 上傳
下載地址:
基于AT89C51的十字路口交通燈仿真.zip
(1.31 MB, 下載次數: 48)
2016-5-6 17:05 上傳
點擊文件名下載附件
仿真+程序 下載積分: 黑幣 -5
交通燈程序:
- /*****************************************************
- * 王瑾畢設-交通燈
- *
- *
- *
- *****************************************************/
- #include<include.h>
- sbit NS_GRE = P2^5;
- sbit NS_YEL = P2^4;
- sbit NS_RED = P2^3;
- sbit EW_GRE = P2^2;
- sbit EW_YEL = P2^1;
- sbit EW_RED = P2^0;
- uint8 EW_Timer = unused8; //東西方向紅燈定時器
- uint8 NS_Timer = unused8; //南北方向紅燈定時器
- uint8 YEL_Timer = unused8; //黃燈 5s定時器
- int main(void)
- {
- Timer_Init(); //定時器初始化
- INT0_Init(); //外部中斷初始化
- EA=1; //打開全局中斷
-
- NS_GRE = OFF; //所有的燈都滅
- NS_YEL = OFF;
- NS_RED = OFF;
- EW_GRE = OFF;
- EW_YEL = OFF;
- EW_RED = OFF;
- P3 = 0xFF; //所有顯示滅
- //先讓東西方向紅燈亮 南北方向通行
- EW_Timer = EWTime_Count;//東西方向開始計時
- while(1)
- {
-
- if((EW_Timer != unused8) && (EW_Timer != 0)){ //東西方向做紅燈倒計時
- display1(EW_Timer/10, EW_Timer%10); //東西方向顯示時間 南北方向不顯示
- EW_RED_ON(); //東西方向保持紅燈
- NS_GRE_ON(); //南北方向保持綠燈
- }
- else if((EW_Timer != unused8) && (EW_Timer == 0) && (YEL_Timer == unused8)){//東西方向紅燈計時到 東西方向保持紅燈 南北方向變黃燈 開始黃燈5s計時
- EW_RED_ON(); //東西方向紅燈
- NS_YEL_ON(); //南北方向黃燈
- YEL_Timer = YELTime_Count; //5s計時
- }
- if((EW_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0)){
- display1(YEL_Timer/10, YEL_Timer%10); //東西方向顯示時間 南北方向不顯示
- }
- if((EW_Timer != unused8) && (YEL_Timer == 0)){ //東西方向紅-南北方向黃燈5s計時到 東西紅燈定時器關 黃燈定時器關 南北紅燈 東西綠燈 南北計時器開
- EW_Timer = unused8; //東西紅燈定時器關
- YEL_Timer = unused8; //黃燈定時器關
- NS_RED_ON(); //南北變紅燈
- EW_GRE_ON(); //東西變綠燈
- NS_Timer = NSTime_Count; //南北紅燈定時器開
- }
- if((NS_Timer != unused8) && (NS_Timer != 0)){ //南北紅燈定時器正在計時
- display2(NS_Timer/10, NS_Timer%10); //南北方向顯示時間 東西方向不顯示
- EW_GRE_ON(); //東西保持綠燈
- NS_RED_ON(); //南北保持紅燈
- }
- else if((NS_Timer != unused8) && (NS_Timer == 0) && (YEL_Timer == unused8)){ //南北方向紅燈計時到 南北方向保持紅燈 東西方向變黃燈 開始黃燈5s計時
- NS_RED_ON(); //南北方向保持紅燈
- EW_YEL_ON(); //東西方向變黃燈
- YEL_Timer = YELTime_Count; //5s計時
- }
- if((NS_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0)){
- display2(YEL_Timer/10, YEL_Timer%10); //南北方向顯示時間 東西方向不顯示
- }
- if((NS_Timer != unused8) && (YEL_Timer == 0)){ //南北方向紅-東西方向黃燈5s計時到 南北方向定時器關 黃燈定時器關 東西方向變紅燈 南北方向變綠燈 東西方向紅燈計時器開始計時
- NS_Timer = unused8;
- YEL_Timer = unused8;
- EW_RED_ON(); //東西方向變紅燈
- NS_GRE_ON(); //南北方向變綠燈
- EW_Timer = EWTime_Count; //東西方向開始計時
- }
- if(Flag_Key == 1){ //如果急停按鍵按下 則全紅燈 顯示滅
- P3 = 0xFF; //所有顯示滅
- EW_RED_ON(); //東西方向紅燈
- NS_RED_ON(); //南北方向紅燈
-
- EW_Timer = unused8; //關閉所有定時器
- NS_Timer = unused8;
- YEL_Timer = unused8;
- }
- }
- }
復制代碼
|
評分
-
查看全部評分
|