- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
基于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.?异常
文档评论(0)