红绿灯 51单片机设计图
时间: 2023-12-06 20:38:22 浏览: 64
以下是基于MCS-51单片机实现对路口红绿灯控制的设计图和源码,同时还包括了数码管显示剩余时间的功能。具体内容如下:
1. Proteus布线图
由于无法在此处插入图片,请您自行搜索“基于MCS-51单片机实现对路口红绿灯控制”的Proteus布线图。
2. 源码
```c
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit red1=P1^0;
sbit yellow1=P1^1;
sbit green1=P1^2;
sbit red2=P1^3;
sbit yellow2=P1^4;
sbit green2=P1^5;
sbit beep=P1^6;
sbit key=P3^2;
uchar time1,time2;
uchar sec,min;
uchar flag;
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void init()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
flag++;
if(flag==20)
{
flag=0;
sec--;
if(sec==0)
{
min--;
sec=59;
}
}
}
void main()
{
init();
while(1)
{
if(key==0)
{
delay(10);
if(key==0)
{
while(!key);
delay(10);
if(time1==0&&time2==0)
{
time1=30;
time2=30;
}
else
{
time1--;
time2--;
}
}
}
if(time1==0)
{
red1=0;
yellow1=1;
green1=0;
red2=1;
yellow2=0;
green2=1;
min=0;
sec=30;
while(min!=0||sec!=0)
{
if(min==0&&sec<=5)
{
beep=0;
delay(500);
beep=1;
delay(500);
}
}
}
if(time2==0)
{
red1=1;
yellow1=0;
green1=1;
red2=0;
yellow2=1;
green2=0;
min=0;
sec=30;
while(min!=0||sec!=0)
{
if(min==0&&sec<=5)
{
beep=0;
delay(500);
beep=1;
delay(500);
}
}
}
}
}
```
3. 数码管显示剩余时间
由于引用内容中没有提供数码管显示剩余时间的源码和设计图,无法为您提供相关内容。