51单片机模拟交通灯效果是如何实现的

交通灯红绿灯是按一定的顺序进行亮灭的,亮灯的时间也是一定的。那么就有逻辑可循。而单片机就可以根据逻辑性进行控制程序编写,然后烧录程序进单片机,控制IO串口输出高低电平及中断延时以达到模拟交通灯的效果。

那么模拟交通灯效果可以做实物模拟,锻炼DIY的能力;另外有些单片机开发板自带交通灯电路和例程,自己可以跟着看看写写程序。下图中电路图可以参照着练练手。

51单片机模拟交通灯效果是如何实现的

另外对于模拟红绿灯这种小实验,可以通过仿真软件进行仿真实验就可以了。需要的软件有:

1、Keil (编写程序,生成单片机所需的HEX文件)

51单片机模拟交通灯效果是如何实现的

2、Proteus 仿真软件 (电路效果仿真,结果演示)

51单片机模拟交通灯效果是如何实现的

仿真实例分析:模拟交通灯

1、硬件:

前提条件:位于十字路口,一共需12个交通灯(红黄绿灯各四个)

亮灯规律:东西向绿灯亮若干秒,黄灯闪3次后红灯亮, 红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁3次后变红灯,东西向变绿灯,如此重复。(相对着的两个方向亮灯顺序和时间是一样的,那么单片机只要通过6个串口就能控制12个灯的状态了)。

仿真元件:51单片机、电容、瓷片电容、晶振、绿色二极管、红色二极管、黄色二极管、电阻......

仿真电路连接:在仿真软件proteus中找到上述元件,按下图连接。单片机P0.0~P0.5输出控制交通灯。

51单片机模拟交通灯效果是如何实现的

注意同方向交通灯跟单片机串口连接顺序。只要你同方向同种颜色的灯都连同一个单片机串口就不会错!电气标记0~5分别对应连接单片机串口P0.0~P0.5。

51单片机模拟交通灯效果是如何实现的

2、软件

通过Keil软件进行编程,程序编写逻辑按以下四个循环进行:

1、横向绿灯亮,竖向红灯亮

2、横向黄灯闪三下,竖向红灯依旧亮

3、横向红灯亮,竖向绿灯亮

4、横向红灯依旧亮,竖向黄灯闪三下

程序及解释:

/* 名称:LED 模拟交通灯

说明:东西向绿灯亮若干秒,黄灯闪3次后红灯亮, 红灯亮后,

南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁3次后变红灯,

东西向变绿灯,如此重复。*/

#include

#define uchar unsigned char

#define uint unsigned int

//规划好各个脚连接的灯,方便使用

sbit RED_1=P0^0; //东西向灯

sbit YELLOW_1=P0^1;

sbit GREEN_1=P0^2;

sbit RED_2=P0^3; //南北向灯

sbit YELLOW_2=P0^4;

sbit GREEN_2=P0^5;

uchar number=0,type=1; //闪烁次数,操作类型变量

//延时子程序www.dgzj.com

void Delay(uint x)

{

uchar i;

while(x--) for(i=0;i

}

//交通灯切换程序

//总共分为四种情况,如此循环

//注:1为关灯,0为开灯

traffic()

{

switch(type)

{

case 1: //东西向绿灯与南北向红灯亮

RED_1=1;YELLOW_1=1;GREEN_1=0;

RED_2=0;YELLOW_2=1;GREEN_2=1;

Delay(2000);

type=2;

break;

case 2: //东西向黄灯闪烁,绿灯关闭

Delay(300);

YELLOW_1=~YELLOW_1;GREEN_1=1;

if(++number!=6) return; //闪烁3次

number=0;

type=3;

break;

case 3: //东西向红灯,南北向绿灯亮

RED_1=0;YELLOW_1=1;GREEN_1=1;

RED_2=1;YELLOW_2=1;GREEN_2=0;

Delay(2000);

type=4;

break;

case 4: //南北向黄灯闪烁3次

Delay(300);

YELLOW_2=~YELLOW_2;GREEN_2=1;

if(++number!=6) return;

number=0;

type=1;

}

}

//主程序,由于用了switch,为了便于循环选择,用一个traffic子函数写在外面

void main()

{

while(1) traffic();

}

仿真效果图

51单片机模拟交通灯效果是如何实现的

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查