您的位置 首页 电子

一款简练的单片机交通灯程序

这是一款简洁的单片机交通灯程序,用了两只数码管进行倒计时显示,实现的:首先东西方向红灯50秒,此时南北绿灯50秒,并且数码管显示倒计时

这是一款简练的单片机交通灯程,用了两只数码管进行倒计时显现,完成的:首要东西方向红灯50秒,此刻南北绿灯50秒,而且数码管显现倒计时从49到00;然后一切方向的黄灯闪耀5秒,而且数码管显现5秒倒计时;接着东西绿灯35秒,此刻南北红灯35秒,数码管显现35秒倒计时;再接着一切黄灯在闪耀5秒,数码管5秒倒计时;循环第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};//数码管显现编码
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()//定时器初始化程序
{

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;

}

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部