基于51单片机的交通信号灯模拟控制系统实验一.docx
基于51单片机的交通信号灯模拟控制系统实验
实验目的和要求
1.掌握单片机基本资源使用。
2.掌握单片机电路原理图绘制和仿真。
3.掌握单片机C语言软件开发以及联合仿真。
实验内容和原理
实验内容:
根据题目绘制单片机电路原理图。
绘制程序流程图并编写C语言程序
在仿真程序中进行联合仿真,最后提交实验报告
主要仪器设备
keilC,proteus。
四、操作方法与实验步骤
4.1题目要求
用单片机设计一个十字路口交通灯模拟控制系统,要求东西、南北两个方向都通行20秒,警告3秒,禁止20秒,同时要考虑到东西、南北两个方向出现异常情况,出现异常情况器该方向通行60秒。
4.2系统设计思路
设置东西、南北方向的交通灯状态变量。设置计时器变量,用来记录当前状态的持续时间。设置异常情况变量,用来记录异常情况是否出现。在主循环中使用无限循环来控制交通灯的状态和计时器的更新。根据计时器的值和交通灯状态,判断当前状态,并控制灯的状态切换。?初始化交通灯状态和计时器,使东西、南北方向都为通行状态,计时器初始值设置为20秒。在循环中,逐秒更新计时器的值,并判断当前状态。如果计时器的值为0,即当前状态持续时间结束,根据当前状态进行灯的状态切换和计时器的重设。如果出现异常情况,将相应方向的状态设置为异常,并将计时器设置为60秒
4.2电路图绘制(包含详细的参数选定文字和图像叙述)
4.3C程序编制(包含详细的文字和程序流程图)
#include?reg51.h
void?delay500ms?(unsigned?char?k);void?main(void)
SP=0X60;
TMOD=0x01;
IE=0x85;
TCON=0x05;
while(1)
//初始化
P1=0x21;
delay500ms?(40);
P1=0x41;
delay500ms?(6);
P1=0x12;
delay500ms?(40);
P1=0x14;
delay500ms?(6);
//状态1,东西方向绿灯,南北方向红灯20s?//状态2,东西方向黄灯,南北方向红灯3s?//状态3,南北方向绿灯,东西方向红灯20s
//状态4,南北方向黄灯,东西方向红灯3s
//东西方向异常,东西方向绿灯闪,南北方向红灯闪?60s
void?int?0(void)?interrupt0
)
unsigned?char?il,i2;
i1=Pl;
for(i2=0;i260;i2++)
P1=0x21;?
delay500ms?(1);
P1=0x00;
delay500ms?(1);
Pl=il;
//南北方向异常,南北方向绿灯闪,东西方向红灯闪?60s?void?int?1(void)?interrupt?2
unsigned?char?jl,j2;
j1=P1;
for?(j2=0;j260;j2++)
P1=0x12;
delay500ms?(1);
P1=0x00;
delay500ms?(1);
Pl=jl;
//延时500ms?函数
void?delay500ms?(unsigned?char?m)
unsigned?char?k1,?k2;
TH0=0x3C;TL0=0xB0;
TRO=1;
for?(k1=0;k1m;k1++)
for?(k2=0;k210;k2++)
while(!TFO);
TF0=0;
TH0=0x3C;TL0=0xB0;
4.3仿真分析(包含文字和图像叙述)
状态,东西方向绿灯,南北方向红灯20秒,状态编码“100”(1):)状态2,东西方向黄灯,?南北方向红灯3秒,状态编码“00000?(41H);状态了,南北方向绿灯,东西方向红灯?20秒,状态编码“00”00?(2H);:状态4,南北方向黄灯,东西方向红灯3秒,状态编码“000”(4H)。
异常情况分两种:东西发生异常时,东西通行,南北禁止,东西方向绿灯闪,南北方向红灯闪60秒:南北发生异常时,南北通行,东西禁止,南北方向绿灯闪,东西方向红灯闪60秒;闪烁通过用亮-次灭一次实现。主程序中实现交通灯正常运行过程,两种异常用外中断0和外中断1管理,外接开关模拟异常发生,在中断服务程序中实现异常处理,在主程序中开放外中断0和外中断1,设置为边沿触发方式。时间单位采用500ms?信号,由定时/计数器?0定时50ms,循环10次产生,定时/计数器0采用查询方式,主程序中设定定时/计数器0的工作方式:方
五、讨论和心得(不少于100字)
讨论与心得:
1.?多任务处理:该设计中需要同时控制东西、南北两个方向的交通灯状态,并处理异常情况。因此,需要考虑如何合理利用单片机的多任务处理能力,确保各个状态之间的切换和异常情况的处理能够同时进行,以实现交通灯控制系统的正常运行。
2.?异常