專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

用C語言編寫的交通燈程序

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2012年06月22日   【字體:

用四盞雙色燈模擬,P1口控制;南北紅燈亮30秒,同時東西綠燈亮25秒,綠燈閃爍3次(間隔為1秒),然后黃燈亮2秒;然后東西與南北互換一下;重復(fù);

#include "reg51.h" //


#define uint unsigned int
#define uchar unsigned char

#define ON 0 //0的時候燈亮
#define OFF 1 //1的時候燈亮

//管腳定義
//南北道 黃燈亮3秒 紅燈亮 30秒 黃燈3秒 綠燈38秒
//東西道 黃燈亮3秒 綠燈亮 28秒 黃燈3秒 紅燈40秒
sbit PortDX_Yellow = P1^0; //東西方向黃燈
sbit PortDX_Red = P1^1; //東西方向紅燈
sbit PortDX_Green = P1^2; //東西方向綠燈
sbit PortNB_Yellow = P1^3; //南北方向黃燈
sbit PortNB_Red = P1^4; //南北方向紅燈
sbit PortNB_Green = P1^5; //南北方向綠燈


void delay(uint ms) // 毫秒級延時(AT89C52 @ 11.0592MHz)
{
uint ti;
while(ms--)
{
for(ti=0;ti<112;ti++){}//112
}
}

/*==================== 主函數(shù) ====================*/
void main(void)
{
delay(400); //開機延時400ms
while(1)
{
PortNB_Yellow = ON ;PortNB_Red = OFF;PortNB_Green = OFF;//南北黃燈亮3秒
PortDX_Yellow = ON ;PortDX_Red = OFF;PortDX_Green = OFF;//東西黃燈亮3秒
delay(3000);
PortNB_Yellow = OFF;PortNB_Red = ON ;PortNB_Green = OFF;//南北紅燈亮28秒
PortDX_Yellow = OFF;PortDX_Red = OFF;PortDX_Green = ON ;//東西綠燈亮28秒
delay(28000);
PortNB_Yellow = OFF;PortNB_Red = ON ;PortNB_Green = OFF;//南北紅燈亮2秒
PortDX_Yellow = ON ;PortDX_Red = OFF;PortDX_Green = OFF;//東西黃燈亮2秒
delay(2000);
PortNB_Yellow = ON ;PortNB_Red = OFF;PortNB_Green = OFF;//南北黃燈亮1秒
PortDX_Yellow = ON ;PortDX_Red = OFF;PortDX_Green = OFF;//東西黃燈亮1秒
delay(1000);
PortNB_Yellow = ON ;PortNB_Red = OFF;PortNB_Green = OFF;//南北黃燈亮2秒
PortDX_Yellow = OFF;PortDX_Red = ON ;PortDX_Green = OFF;//東西紅燈亮2秒
delay(2000);
PortNB_Yellow = OFF;PortNB_Red = OFF;PortNB_Green = ON ;//南北綠燈亮38秒
PortDX_Yellow = OFF;PortDX_Red = ON ;PortDX_Green = OFF;//東西紅燈亮38秒
delay(3800);
}
}


1.當(dāng)為黃燈時南北、東西兩道同時為黃燈;以提示行人或車輛下一個燈色即將到來時間 3秒。
2.當(dāng)南北為紅燈,南北道車輛禁止通行,時間30秒;南北道為綠燈,南北道車輛通過時間38秒 。
3.當(dāng)東西道綠燈,東西道車輛通行,時間為28秒;東西道為紅燈,東西道車輛禁止通過時間為40秒。
4.這樣如上表的時間和紅、綠、黃出現(xiàn)的順序依次出現(xiàn)這樣行人和車輛就能安全暢通的通行。 
關(guān)閉窗口

相關(guān)文章