原理讲解
东西方向先亮绿灯,左右红灯;等待数秒后,东西向绿灯变黄灯闪烁5次,变红灯;南北向由红灯变绿灯。
红绿灯在proteus的表示方法
第一种方法就是如上图,器件名称是traffic lights
第二种方法就是使用led灯
注意注意led是低电平亮,traffic lights 是高电平亮
交通灯的实现
原理图
代码讲解
-
我们先来了解一下单片机和红绿灯是如何连接的
各个引脚表示的功能P2引脚 7 6 5 4 3 2 1 0 红绿灯 无用 无用 东绿 东黄 东红 北红 北黄 北绿 -
实现能够模拟红绿灯要实现下面六种情况
-
我们来一个一个分析
灯 东绿北红 东黄北红 东无北红 东红北绿 东红北黄 东红北无 P2引脚 0x24 0x14 0x04 0x09 0x0a 0x08
完整代码
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint xms){
uint i,j;
for(i=xms;i>0;i--){
for(j=110;j>0;j--);
}
}
void main(){
uint i;
while(1){
P2=0x24; //东西绿灯亮,南北红灯亮
delay(3000);
for(i=0;i<5;i++){
P2=0x14; //东西黄灯亮,南北红灯亮
delay(500);
P2=0x04; //东西没有灯亮,南北红灯亮
delay(500);
}
P2=0x09; //东西红灯亮,南北绿灯亮
delay(3000);
for(i=0;i<5;i++){
P2=0x0a; //东西红灯亮,南北黄灯亮
delay(500);
P2=0x08; //东西红灯亮,南北没灯亮
delay(500);
}
}
}