這是一款單片機(jī)交通燈C語言程序,單片機(jī)用的是AT89C51,兩只共陰兩位一體的數(shù)碼管分另顯示兩個(gè)路口的倒計(jì)時(shí),用12只發(fā)光二極管模擬紅、黃、綠燈。電路簡單,制作容易。電子小制作。本文引用地址:http://m.butianyuan.cn/article/201611/321449.htm#include
#define uchar unsigned char
bit flag;
sbit red1_1=P1^0; //南北紅燈D1
sbit yel1_1=P1^1;//南北黃燈D2
sbit gre1_1=P1^2;//南北綠燈D3
sbit red1_2=P1^3;//南北紅燈D4
sbit yel1_2=P1^4;//南北黃燈D5
sbit gre1_2=P1^5;//南北綠燈D6
sbit red2_1=P1^6;//東西紅燈D7
sbit yel2_1=P1^7;//東西黃燈D8
sbit gre2_1=P0^0;//東西綠燈D9
sbit red2_2=P0^1;//東西紅燈D10
sbit yel2_2=P0^2;//東西黃燈D11
sbit gre2_2=P0^3;//東西綠燈D12
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};
uchar n,n1,aa=0,shi,ge,shi1,ge1;
void init();
void xianshi1(uchar shi,uchar ge);
void xianshi2(uchar shi1,uchar ge1);
void delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
main()
{
n=30;
shi=n/10;
ge=n;
n1=30;
shi1=n1/10;
ge1=n1;
init();
while(1)
{
if(flag!=1)
xianshi1(shi,ge);
else
xianshi2(shi1,ge1);
}
}
void xianshi1(uchar shi,uchar ge)
{
P3=0x02;
P2=tab[ge];
delay(200);
P3=0x01;
P2=tab[shi];
delay(200);
}
// http://www.duankudp.com/
void xianshi2(uchar shi1,uchar ge1)
{
P3=0x08;
P2=tab[ge1];
delay(200);
P3=0x04;
P2=tab[shi1];
delay(200);
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
aa++;
if(flag!=1)
{
if(aa==20)
{
aa=0;
red1_1=0;red1_2=0;
gre2_1=0;gre2_2=0;//啟動南北紅燈1和東西綠燈2
n--;
shi=n/10;
ge=n;
if(n<=3)
{
red1_1=0;red1_2=0;
gre2_1=1;gre2_2=1;
yel2_1=0;yel2_2=0;//啟動南北紅燈1和東西黃燈2
if(n<=0)
{
n=30;
red1_1=1;red1_2=1;
gre1_1=0;gre1_2=0;
yel2_1=1;yel2_2=1;
red2_1=0;red2_2=0;//啟動南北綠燈1和東西紅燈2http://www.5imcu.net/
TR0=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
TR0=1;
aa++;
flag=1;
}
}
}
}
else
{
if(flag==1)
{
// TH0=(65536-50000)/256;
// TL0=(65536-50000)%6;
// TR0=1;
// aa++;
if(aa==20)
{
aa=0;
n1--;
shi1=n1/10;
ge1=n1;
if(n1<=3)
{
gre1_1=1;gre1_2=1;
yel1_1=0;yel1_2=0;
red2_1=0;red2_2=0;//啟動南北黃燈1和東西紅燈2
if(n1<=0)
{
n1=30;
yel1_1=1;yel1_2=1;
red2_1=1;red2_2=1;
TR0=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
TR0=1;
flag=0;
}
}
}
}
}
}
評論