新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一款簡潔的單片機(jī)交通燈程序

一款簡潔的單片機(jī)交通燈程序

作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
這是一款簡潔的,用了兩只數(shù)碼管進(jìn)行倒計時顯示,實現(xiàn)的:首先東西方向紅燈50秒,此時南北綠燈50秒,并且數(shù)碼管顯示倒計時從49到00;然后所有方向的黃燈閃爍5秒,并且數(shù)碼管顯示5秒倒計時;接著東西綠燈35秒,此時南北紅燈35秒,數(shù)碼管顯示35秒倒計時;再接著所有黃燈在閃爍5秒,數(shù)碼管5秒倒計時;循環(huán)第1到第4步。程序源碼:

#include
#define uint unsigned int
#define uchar unsigned char
sbit shiw=P3^0;//顯示十位引腳聲明
sbit gew=P3^1; //顯示個位引腳聲明
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};//數(shù)碼管顯示編碼
uint t0,shu,shi,ge,aa;
void display(uint shi,uint ge);//顯示程序聲明
void delay(uint z)//延時子程序http://www.5imcu.net/
{
uint x,y;
for(x=110;x>0;x--)
for(y=z;y>0;y--);
}
void flicker()//黃燈閃爍子程序
{
P0=0x1b;
delay(10);
P0=0xff;
delay(10);
}
void init()//定時器初始化程序
{

本文引用地址:http://butianyuan.cn/article/201611/321454.htm

TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)MOD256;
EA=1;
ET0=1;
EX0=1;
TR0=1;
}
void main()
{
init();
while(1)
{
P0=0x2e;
shu=50;
do display(shi,ge);
while(aa<20*50);//東西紅燈50S
aa=0;TR0=1;

shu=5;
do {flicker();
display(shi,ge);}
while(aa<100);//黃燈閃爍5S
aa=0;TR0=1;

P0=0x35;
shu=35;
do display(shi,ge);
while(aa<20*35);//南北紅燈35S
aa=0;TR0=1;
shu=5;
do {flicker();
display(shi,ge);}
while(aa<100);
aa=0;TR0=1;//黃燈閃爍5S
}
}
void timer0()interrupt 1 //定時器0中斷子程序http://www.5imcu.net/
{
TH0=(65536-50000)/256;
TL0=(65536-50000)R56;
t0++;
aa++;
if(t0==20)
{
t0=0;
shu--;
shi=shu/10;
ge=shu;
if(shu==0)
{
TR0=0;
}
}
}
void display(uint shi,uint ge)//顯示子程序http://www.duankudp.com/
{
P2=0x00;
shiw=0;
P2=table[shi];
delay(1);
shiw=1;

P2=0x00;
gew=0;
P2=table[ge];
delay(1);
gew=1;

}



關(guān)鍵詞: 單片機(jī)交通燈程

評論


技術(shù)專區(qū)

關(guān)閉