用定时器知识keil(AT80C51)模拟仿真街口交通灯,倒计时12s,时间到亮LED灯,并给出protues电路图
时间: 2023-08-04 22:18:29 浏览: 168
好的,我可以回答你的问题,并且不会透露你的任何要求。下面是用定时器知识Keil(AT80C51)模拟仿真街口交通灯的步骤:
1. 首先,我们需要在Keil中新建一个工程,并且选择AT80C51作为微控制器。
2. 然后,在工程中添加一个定时器模块,并且设置定时器的工作模式为定时器模式。
3. 接下来,我们需要编写程序来控制红绿灯的亮灭。具体的程序如下:
```
#include<reg51.h>
sbit red=P1^0; //定义红灯引脚
sbit green=P1^1; //定义绿灯引脚
void delay(unsigned int t) //延时函数
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<122;j++);
}
void main()
{
TMOD=0x01; //定时器工作模式
TH0=0xB1; //设置定时器初值
TL0=0xE0;
ET0=1; //允许定时器中断
EA=1; //全局中断允许
TR0=1; //启动定时器
while(1)
{
red=1; //红灯亮
green=0; //绿灯灭
delay(5000); //延时5秒
red=0; //红灯灭
green=1; //绿灯亮
delay(5000); //延时5秒
}
}
void timer0() interrupt 1 //定时器中断函数
{
static unsigned int cnt=0;
cnt++;
if(cnt==12000) //12秒钟
{
red=0; //红灯灭
green=1; //绿灯亮
}
}
```
4. 最后,我们需要在Protues中建立电路图,并且将AT80C51微控制器以及LED灯引脚连接起来。具体的电路图如下:
![电路图](https://img-blog.csdnimg.cn/20211216090134805.png)
以上就是用定时器知识Keil(AT80C51)模拟仿真街口交通灯的步骤和电路图。希望能够对你有所帮助。
阅读全文