51单片机LED模拟交通灯
实验环境
实验软件: Keil5 + Proteus7
实验元件:
AT89C51 * 1,
LED-GRD * 3,
LED-YELLOW * 3,
LED-GREEN * 3,
RES * 9(用来限流可以不要)
仿真图
文章来源:https://www.toymoban.com/news/detail-508704.html
代码解析
//名称: LED模拟交通灯
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit E_RED=P0^0; //东西红灯
sbit E_YELLOW=P0^1; //东西黄灯
sbit E_GREEN=P0^2; //东西绿灯
sbit N_RED=P0^3; //南北红灯
sbit N_YELLOW=P0^4; //南北黄灯
sbit N_GREEN=P0^5; //南北绿灯
type = 1; //操作类型变量
i = 0;
//1毫秒延迟子程序
void Delay_Ms(uint x){
uchar t;
while(x--)
{
for(t=120;t>0;t--);
}
}
//交通灯切换程序 此程序采用共阳极接法,所以低电平0有效
void traffic_light()
{
switch (type)
{
case 1: //东西向绿灯亮、南北向红灯亮
E_RED = 1;E_YELLOW = 1;E_GREEN = 0;
N_RED = 0;N_YELLOW = 1;N_GREEN = 1;
Delay_Ms(5000);
type = 2;
break;
case 2: //东西向黄灯闪、绿灯灭,南北向不灭
for (i = 0; i < 6; i++)
{
E_RED = 1;E_YELLOW = ~E_YELLOW;E_GREEN = 1; //黄灯闪烁3次
Delay_Ms(300);
}
type = 3;
break;
case 3: //东西向红灯亮、南北向绿灯亮
E_RED = 0;E_YELLOW = 1;E_GREEN = 1;
N_RED = 1;N_YELLOW = 1;N_GREEN = 0;
Delay_Ms(5000);
type = 4;
break;
case 4: //东西向红灯亮,南北向绿灯灭,黄灯闪
for (i = 0; i < 6; i++)
{
N_RED = 1;N_YELLOW = ~N_YELLOW;N_GREEN = 1; //黄灯闪烁3次
Delay_Ms(300);
}
type = 1;
break;
}
}
//主程序
void main(){
while(1){ //死循环
traffic_light(); //不断执行交通灯切换程序
}
}
效果演示
文章来源地址https://www.toymoban.com/news/detail-508704.html
到了这里,关于51单片机LED模拟交通灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!