使用keil编写程序和Proteus模拟交通灯信号系统
·
目录
1、此次问题比较简单,使用一个C51单机即可完成对红绿灯系统的控制。
2、元器件:1个AT89C1单片机,1个VCC(电源),3个红LED,3个绿LED,3个黄LED,4个二位阴极数码管。
2、南北红灯倒计时还有10秒,东西绿灯变黄灯并闪烁,倒计时5秒:
4、南北红灯变绿灯并倒计时20秒,东西无变红灯并倒计时30秒:
问题:做一个十字路口红绿灯,每一向各两个,红绿灯要求能够按照通行的要求来亮灯。应实现下图六种功能,其中黄灯需要闪烁,红灯30秒,绿灯20秒,黄灯和无灯显示为5秒,总循环时间60秒,需把显示屏绘制出来。

一、首先使用Proteus 8进行仿真绘制。
1、此次问题比较简单,使用一个C51单机即可完成对红绿灯系统的控制。
2、元器件:1个AT89C1单片机,1个VCC(电源),3个红LED,3个绿LED,3个黄LED,4个二位阴极数码管。
3、接法:所有连线使用网格标线,LED使用共阳极接法。

二、然后使用Keil编写代码。
1、准备工作

2、主函数


3、定时器中断
void timer0 () interrupt 1
{
static int count=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==20)
{
count=0;
time++;
if(time==20)
{
P0=0xDB;
}
else if(time==21)
{
P0=0xDF;
}
else if(time==22)
{
P0=0xDB;
}
else if(time==23)
{
P0=0xDF;
}
else if(time==24)
{
P0=0xDB;
}
else if(time==25)
{
P0=0xDF;
}
else if(time==30)
{
P0=0xFC;
}
else if(time==50)
{
P0=0xF6;
}
else if(time==51)
{
P0=0xFE;
}
else if(time==52)
{
P0=0xF6;
}
else if(time==53)
{
P0=0xFE;
}
else if(time==54)
{
P0=0xF6;
}
else if(time==55)
{
P0=0xFE;
}
else if(time==60)
{
time=0;
P0=0xCF;
}
}
}
代码特别提要:
1、数码管的显示:

2、定时器的使用:


三、烧录程序、功能实现
1、南北红灯倒计时30秒,东西绿灯倒计时20秒:

2、南北红灯倒计时还有10秒,东西绿灯变黄灯并闪烁,倒计时5秒:

3、南北红灯倒计时还有5秒,东西黄灯变无,倒计时20秒:

4、南北红灯变绿灯并倒计时20秒,东西无变红灯并倒计时30秒:

5、南北绿灯变黄并倒计时5秒,东西红灯倒计时还有10秒:

6、南北黄灯变无并倒计时5秒,东西红灯倒计时还有5秒:

以上为本次帖子的全部内容!
更多推荐



所有评论(0)