您的位置 首页 新能源

单片机交通灯C言语程序

这是一款单片机交通灯C语言程序,单片机用的是AT89C51,两只共阴两位一体的数码管分另显示两个路口的倒计时,用12只发光二极管模拟红、黄

这是一款单片机交通灯C言语程序,单片机用的是AT89C51,两只共阴两位一体的数码管分另显现两个路口的倒计时,用12只发光二极管模仿红、黄、绿灯。电路简略,制造简单。电子小制造。

#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;
}
}
}
}
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/259539.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部