实训一:四向交通灯
一 实验目的:
实验4:运用AT89C51芯片实现四向交通灯:
(1) 掌握C语言编程单片机控制程序的方法。
(2) 掌握使用Keil4软件编写、编译、调试程序的方法。
(3) 掌握使用Proteus软件绘制电路原理图、硬件仿真和程序调试。
(4) 理解和掌握共阴极数码管的显示原理和编码(记忆)。
(5) 熟悉使用51单片机I/O端口实现对外部用电器和电路的控制。
二、实验硬件和软件:
计算机1台、并安装Proteus8.6软件和Keil4软件。
Proteus8.6中会运用的部件:7SEG-MPX2-CC、AT89C51、BUTTON、LED-GREEN\RED\YELLOW、RESPACK-8d
三、试验任务:
1.使用Proteus排线连接的方式,在单片机I/O口上外接LED灯和数码管(用网络标识符),最终实现数码管从20-0的倒计时显示效果,为最终的实训项目一做准备。(要求:显示效果数码管显示间隔时间为1S,可以在完成该实验的基础上增加实验内容:两位数从20到1的交通灯计时显示。)
2.并且使用中断口P3^4使当操作者按下独立键盘使南北方向的交通灯变为绿色可通行,而西北方向的交通灯变为红色禁止通行,让救护车、消防车等紧急车辆通过。
以下内容为这次实验的主要内容(实验报告其余内容可参照本人的其余实验报告)
四向交通灯相关代码:
void jinji() //紧急函数(为了完成老师要求:按下独立键盘使南北方向的交通灯变为绿色可通行,而西北方向的交通灯变为红色禁止通行,让救护车、消防车等紧急车辆通过)
{
SN_green=0;
SN_red=1;
SN_yellow=1;
WE_green=1;
WE_red=0;
WE_yellow=1;
while(1)
{
if(k2==0)
{
delayxms(3);
if(k2==0)
{
while(!k2);
TR0=1;
if(flgaa==0) jtda();
if(flgaa==1) jtdb();
if(flgaa==2) jtday();
if(flgaa==3) jtdby();
}
}
}
}
代码中一些位的申明以及自己所写代码的调用:
#include