1.实验内容与要求
交通信号系统是保障交通安全高效的重要设施。51单片机价格低廉、体积小、低功耗、抗干扰性好等优点,适用于交通信号系统中,本实验利用51单片机IO口的开关量的输入输出功能及内部CPU运算功能,设计一个简易的交通信号灯系统,要求如下:
- 本设计用于南北、东西向交叉的十字路口,每组信号灯由红、黄、绿三个信号灯组成,如图所示:
- 信号灯有三种工作模式,分别是:正常工作模式、全黄闪模式、全红模式。正常模式工作过程为:两个方向的信号灯依次:绿高亮10s—>黄灯闪3次,每次1sà红灯亮10s,两个方向的信号交替进行;全黄闪模式工作过程为两个方向的黄灯同时闪烁,为慢行状态;全红模式为两个方向的红灯同时亮,为禁止通行模式。
- 模式切换通过设计按扭进行。
- 在keil中利用C51语言进行程序设计,利用ptoteus设计电路并进行仿真。
2.实验过程
包括:建立工程、资源、样式、库等具体操作说明。
Proteus建立一个新建一个项目,分别添加AT89C51,分别两个黄色红色绿色LED,两个button按键,若干个vcc和gnd。
3.系统组成
包括:本系统包括的软硬件功能模块及相互关系,应用图表示并有简要说明
6个LED都通过共阳连接AT89C51 因此io为低电平的时候 LED灯点亮。
K1,K2两个按键分别连接AT89C51 P1.0 P1.1两个IO口,当按键按下时,IO口为低电平,松开则为高电平。
东西向的红黄绿LED灯分别对接AT89C51 p2.0,p2.1,p2.2三个io口
南北向的红黄绿LED灯分别对接 AT89C51P2.3,P2.4,P2.5 三个io口
4.模块功能及代码
包括:每个模块的功能说明及详细代码,代码的关键部分应的注解。
为实现三种工作模式 设定了如下几个函数
部分代码如下:
#include "reg52.h"
sbit LED0=P2^0;
sbit LED1=P2^1;
sbit LED2=P2^2;
sbit LED3=P2^3;
sbit LED4=P2^4;
sbit LED5=P2^5;
sbit K1=P1^0;
sbit K2=P1^1;
void delay(unsigned int time)
{
unsigned int j = 0;
for(;time>0;time--)
for(j=0;j<125;j++);
}
void Normal()//正常模式
{
LED0=1; //东西红灯熄灭
LED2=0;//东西绿灯
LED3=0;//南北红灯
delay(5000);
LED2=~LED2;//东西绿灯熄灭
LED1=0;
delay(500);
LED1=1;
delay(500);
LED1=0;
delay(500); //东西黄灯闪烁
LED1=1;
delay(500);
LED1=0;
delay(500);
LED1=1;
部分运行效果图:
包括:程序运行过程的主要界面及说明
从keil5中输出了一个Hex文件,在proteus中的AT89C51中打开该Hex文件。
K1K2松开效果图