標題:
單片機模擬交通燈設計 帶仿真
[打印本頁]
作者:
水水水水水水
時間:
2017-1-6 22:38
標題:
單片機模擬交通燈設計 帶仿真
0.png
(83.92 KB, 下載次數(shù): 73)
下載附件
2017-1-8 17:45 上傳
/*
*模擬交通燈*
*/
#include <reg51.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
void delay(uint16 x)
{
uint16 i,j;
for(i = x; i > 0; i --)
for(j = 114; j > 0; j --);
}
#define RED_EW_ON() P0 &= ~0x01 //東西方向指示燈開
#define YELLOW_EW_ON() P0 &= ~0x02
#define GREEN_EW_ON() P0 &= ~0x04
#define RED_EW_OFF() P0 |= 0x01 //東西方向指示燈關
#define YELLOW_EW_OFF() P0 |= 0x02
#define GREEN_EW_OFF() P0 |= 0x04
#define RED_SN_ON() P0 &= ~0x08 //南北方向指示燈開 0000100 1111011
#define YELLOW_SN_ON() P0 &= ~0x10
#define GREEN_SN_ON() P0 &= ~0x20
#define RED_SN_OFF() P0 |= 0x08 //南北方向指示燈關
#define YELLOW_SN_OFF() P0 |= 0x10
#define GREEN_SN_OFF() P0 |= 0x20
#define YELLOW_EW_BLINK() P0 ^= 0x02 //東西方向黃燈閃爍
#define YELLOW_SN_BLINK() P0 ^= 0x10 //南北方向黃燈閃爍
uint8 Flash_Count = 0, Operation_Type = 1; //閃爍次數(shù),操作類型變量
void Traffic_Light() //交通燈切換子程序
{
switch (Operation_Type)
{
case 1://東西方向綠燈與南北方向紅燈亮
RED_EW_OFF(); YELLOW_EW_OFF(); GREEN_EW_ON();
RED_SN_ON(); YELLOW_SN_OFF(); GREEN_SN_OFF();
delay(2000); //延時
Operation_Type = 2; //下一個操作
break;
case 2://東西方向黃燈開始閃爍,綠燈關閉
delay(120);
YELLOW_EW_BLINK();
GREEN_EW_OFF();
//閃爍5次
if( ++Flash_Count != 10) return;
Flash_Count = 0;
Operation_Type = 3; //下一個操作
break;
case 3://東西方向紅燈與南北方向綠燈亮
RED_EW_ON(); YELLOW_EW_OFF(); GREEN_EW_OFF();
RED_SN_OFF(); YELLOW_SN_OFF(); GREEN_SN_ON();
//南北方向綠燈亮若干秒后切換
delay(2000);
Operation_Type = 4; //下一個操作
break;
case 4://南北方向紅燈開始閃爍
delay(120);
YELLOW_SN_BLINK();
GREEN_SN_OFF();
//閃爍5次
if( ++ Flash_Count != 10) return;
Flash_Count = 0;
Operation_Type = 1; //回到第一種操作
}
}
//主程序
int main()
{
while(1) Traffic_Light();
}
復制代碼
模擬交通燈.rar
(69.23 KB, 下載次數(shù): 17)
2017-1-6 22:37 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1