這是一款簡潔的單片機(jī)交通燈程序,用了兩只數(shù)碼管進(jìn)行倒計(jì)時(shí)顯示,實(shí)現(xiàn)的:首先東西方向紅燈50秒,此時(shí)南北綠燈50秒,并且數(shù)碼管顯示倒計(jì)時(shí)從49到00;然后所有方向的黃燈閃爍5秒,并且數(shù)碼管顯示5秒倒計(jì)時(shí);接著東西綠燈35秒,此時(shí)南北紅燈35秒,數(shù)碼管顯示35秒倒計(jì)時(shí);再接著所有黃燈在閃爍5秒,數(shù)碼管5秒倒計(jì)時(shí);循環(huán)第1到第4步。程序源碼:#include
#define uint unsigned int
#define uchar unsigned char
sbit shiw=P3^0;//顯示十位引腳聲明
sbit gew=P3^1; //顯示個(gè)位引腳聲明
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)//延時(shí)子程序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()//定時(shí)器初始化程序
{
本文引用地址:http://m.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 //定時(shí)器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;
}
評(píng)論