Proteus仿真图文章末尾自取!!!
一、 系统方案
模拟交通灯控制系统就是使用单片机来控制一些LED灯和数码管,模拟真实交通灯的功能。南北主干道通车时绿灯亮,而东西次干道红灯亮;当主干道通车7s时间过了之后,绿灯熄灭,黄灯亮,黄灯闪烁3s,之后由主干道切换到次干道通车。此时主干道黄灯熄灭,红灯亮,而次干道红灯熄灭,绿灯亮,次干道开始通车;7s通车时间到后,次干道绿灯熄灭,黄灯亮,黄灯亮3s后由次干道切换到主干道;而主干道红灯熄灭,绿灯亮,如此循环。红、黄、绿交替闪亮,利用数码管倒计时,用于管理十字路口的车辆及行人交通。
二、硬件设计
1. 振荡电路
片内的高增益反向放大器通过XTAL1、XTAL2端外接作为反馈元件的片外晶体振荡器与电容组成的并联谐振回路构成一个自激振荡器,向内部时钟电路提供振荡时钟。本实验采用12MHz的晶振频率,电容C1,C2的值为30pF,电容的大小对振荡频率有微小的作用,可起频率微调作用。
2. 复位电路
单片机在运行中由于本身或外界干扰的原因会导致出错,此时可以使用按键复位,使单片机恢复初始状态。
3. P0口驱动电路
用P0口控制两位的八段数码管。由于P0口输出为漏极开路式,因此需要外接上拉电阻,阻值一般为5~10kΩ,本实验采用阻值为10kΩ的上拉电阻。
4. 数码管显示电路
在P1口外接六个红绿灯,南北各三个红绿灯,因为南北红绿灯变化一样,东西红绿灯变化一样,因此用P1.1、P1.2、P1.3端口控制东西方向的红绿灯,P1.5、P1.6、P1.7端口控制南北方向的红绿灯。
5. 总电路原理图
三、 软件设计(流程图)
1. 交通灯显示流程图
四、 仿真结果
1. 南北绿灯,东西红灯。
2.南北倒计时剩余三秒 ,黄灯开始闪烁。
3. 东西倒计时剩余3s,黄灯开始闪烁
4. 按下复位按键,回到初始状态。
五、C语言实现
#define uchar unsigned char
#define uint unsigned int
#include <reg52.h>
/*****定义控制位**********************/
sbit EW_LED2=P2^3; //EW_LED2控制位
sbit EW_LED1=P2^2; //EW_LED1控制位
sbit SN_LED2=P2^1; //SN_LED2控制位
sbit SN_LED1=P2^0; //SN_LED1控制位
sbit SN_Yellow=P1^6; //SN黄灯
sbit SN_Red=P1^7; //SN红灯
sbit EW_Yellow=P1^2; //EW黄灯
sbit EW_Red=P1^3; //EW红灯
bit Flag_SN_Yellow; //SN黄灯标志位
bit Flag_EW_Yellow