您的位置 首页 嵌入式

8051的交通灯程序

一个简单的交通灯的实验#includereg52.h>#defineucharunsignedchar#defineuintunsignedint#defineMAX30//红灯亮的时…

一个简略的交通灯的试验

#include
#define uchar unsigned char
#define uint unsigned int
#define MAX 30 // 红灯亮的时刻
#define YELLOW 6 // 黄灯亮的时刻
uchar code num[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴级数码管的段选码
uchar data count=0;
void LED_display(uchar ,uchar);
void isr_T1(void);
uchar data i,j,x,t,time;
bit flag=0;

void main()
{
TMOD=0x10;
TH1=0x3c; // 12 MHz 守时时刻是 50 ms
TL1=0x0b0;
ET1=1;
EA=1;
TR1=1;
time=MAX;
P1=0x56;
while(1)
{
i=time/10; // 个位
j=time%10; // 十位
x=0x80;
LED_display(x,i);
x=x>>1;
LED_display(x,j);
}
}

void LED_display(uchar wei,uchar digital) // LED 数码管显现子程序
{ //wei 表明位选码,digital 表明要显现的数字
uchar x,y,i;
x=wei;
y=num[digital];
P2=x; // 位选码输出
P0=y;// 段选码输出

for(i=0;i<10;i++) {}; // 延时,等候数码管显现

}

void isr_T1(void) interrupt 3
{
TH1=0x3c;// 12 MHz 守时时刻是 50 ms
TL1=0x0b0;

count++;
if(count==20)
{
if(time>YELLOW)
{
time–;
if(flag==0) P1=0x56;
else P1=0x65;
}
else if(time==1)
{
time=MAX;
flag=~flag;
}
else
{
time–;
if(flag==0) P1=0x36;
else P1=0x63;
}
count=0;
}
}

通过测验,能够到达作用

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部