UCOS-II交通灯嵌入式实验报告.doc_第1页
UCOS-II交通灯嵌入式实验报告.doc_第2页
UCOS-II交通灯嵌入式实验报告.doc_第3页
UCOS-II交通灯嵌入式实验报告.doc_第4页
UCOS-II交通灯嵌入式实验报告.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

交通灯控制信号系统实验报告实验名称: 交通灯控制信号系统 实验小组成员:王清鹏,曾利忠,刘斌,江亮,谷永胜 指导老师 : 艾云峰 1. 功能描述(1) 两组信号灯,一组控制南北方向,另一组控制东西方向。每组有3盏信号灯,颜色分别为红、绿、黄。初始状态为全暗(定义为黑色)。(2) 从程序运行开始,南北方向控制信号和东西方向控制信号同时工作。动作次序如下: 南北方向控制信号动作:首先绿灯亮60秒,并且从60秒倒计时为0;然后红灯亮,倒计时显示60秒,实际亮57秒,接着黄灯亮3秒。一个周期总共120秒。 东西方向控制信号动作:首先红灯亮,倒计时显示60秒,实际亮57秒,接着黄灯亮3秒。最后绿灯亮60秒,从60秒倒计时为0。一个周期总共120秒。(3) 周而复始地进行步骤(2)(4) 如果触摸触摸屏,则清除所有信号灯(信号灯全变成黑色)。延时20秒倒计时为0后(20秒内不再响应触摸屏中断),重新开始步骤(2)。2. 界面说明(1) a.Y方向排列的3个灯表示南北方向信号灯,依次为红灯,绿灯,黄灯。3个灯下面为倒计时数字显示,数字颜色和信号灯颜色保持一致。b.X方向排列的3个灯表示东西方向信号灯,依次为红灯,绿灯,黄灯。3个灯后面为倒计时数字显示,数字颜色和信号灯颜色保持一致。c.信号灯为黑色表示不亮(2)用手触摸触摸屏上任意位置都将导致中断,所有信号灯变成黑色并持续20秒,在此期间,不再响应触摸屏中断3. 程序处理流程以及任务的定义与实现该程序主要包括交通灯颜色循环变化控制模块和触摸屏中断服务模块,交通等颜色变化模块由TaskController任务,TaskDRAW_NS任务和TaskDRAW_EW任务实现,触摸屏中断服务模块由触摸屏中断isrADCTsAuto任务和TaskReset任务实现。A交通灯颜色循环变化流程图TaskController是程序的核心任务,其主要负责每秒的延时、颜色数据量(Color_NS、Color_EW)和数字数据量(Num_NS、Num_EW)的改变以及释放信号量(Psem1、Psem2)通知TaskDRAW_NS和TaskDRAW_EW改变显示数据。 数据Color_NS和Num_NS分别承载南北方向下一状态将要显示的交通灯颜色和倒计时的秒数。数据Color_EW和Num_EW分别承载东西方向下一状态将要显示的交通灯颜色和倒计时的秒数。信号量Psem1和Psem2分别负责TaskController与TaskDRAW_NS和TaskDRAW_EW之间的通信。其工作过程可以简单地理解如下。TaskController在经过1s的延时后,重新写入南北方向的颜色数据(Color_NS)和倒计时数据(Num_NS),然后释放信号量Psem1来通知TaskDRAW_NS。当TaskDRAW_NS收到通知后(即获得信号量Psem1),其读取颜色数据(Color_NS)和倒计时数据(Num_NS)的值,然后改变输出交通灯的颜色和倒计时。BTaskController任务流程图如下图,由于南北方向和东西方向的交通灯变化以120s为一个周期,故TaskController用取值范围是0120的Num来控制交通灯颜色转变和倒计时秒数。Is_ok是控制TaskController是否应该正常执行的变量,Is_re用来控制是否在某一时刻开始TaskController须从头开始执行。TaskController在Is_ok和Is_re条件满足情况下,在120s的周期内,各变量的变化情况如下图所示。CTaskReset任务流程图该框图主要完成的功能是:在交通灯正常运行的情况下,如果按一下触摸屏,则清除所有信号灯。延时20秒后,交通灯重新开始运行。图中,ISR为触摸屏中断服务程序。TaskReset为复位任务,该任务完成的功能就是在接收到中断后,清除所有信号灯,延时20s后交通灯正常运行。信号量Psem3负责ISR与TaskReset之间的通信。Is_ok是TaskController正常执行的条件,Is_re用于控制TaskController是否从头开始执行。其工作过程可以简单地描述如下:当有触摸屏中断时,中断服务程序ISR释放信号量Psem3来通知TaskReset。当TaskReset获得信号量Psem3后(即收到通知),首先破坏TaskController执行条件,然后清除所有信号灯,延时20s,最后恢复TaskController执行的条件。当执行到某时刻t时,突然间产生中断。TaskReset任务开始执行前使Is_ok=1,执行完后将Is_ok恢复为0。即在TaskReset执行时,TaskController的内容是不执行的。同时,在TaskReset执行完后也使Is_re清零,Num置1,这使得TaskController任务又从Num=120开始执行,即中断后,交通灯又从一个新的周期开始运行。4. 实验体会我们从开始设计到完成本实验总共花了5天左右的时间,时间耗费最多的就是调试阶段,因为我们小组人员比较多,大家意见和想法也就比较多,在遇到某个问题时提出的解决方法也就比较多,对组员所提方法都进行一一验证自然耗时较多,不过,这也有助于我们加深对实验的体会和理解。譬如说哪些地方要注意变量取值范围的限制,哪些地方要注意条件的约束,我们提出的问题的解决方案为什么不可以等等。特别的一点,调试程序时应该针对所提示的错误一步一步修正,而不能急于求成,妄图一蹴而就,那样反而事倍功半。通过本次实验,我们也体会到了团队合作的力量,俗话说“众人拾柴火焰高”,我们实验得以顺利完成,与我们小组成员的密切合作是分不开的。5. 进一步改进方案与应用建议(1) 改进:a.在本实验中,只涉及到2组方向的交通灯控制,即南北方向和东西方向,然而实际中,在十字路口我们经常会遇到左转指示灯,右转指示灯。若按照本实验的思想,则需增加12个灯,东向西方向左转、右转,西向东方向左转、右转,南向北方向左转、右转,北向南方向左转、右转各3个。另外,交通灯显示的控制时序也要相应发生改变。b.在本试验中,信号灯的循环周期为120S,这对于大多数路口都可以满足要求了。但如果某个十字路口其中某个方向车流量比较大,则可以使车流量大的方向绿灯显示时间变长,而减小另一个方向绿灯显示的时间;或者说如果某个十字路口路面很宽,60S的时间可以通过的车辆就比较少,这样也需要增大信号灯的循环周期。对于这个问题,针对本实验程序,可以将Num,Num_NS,Num_EW所对应的变化范围的节点值以外部变量来声明。c我们还可以为该程序增加一些中断功能,在现实生活中也有可能遇到,譬如说由于某些体育赛事占用路道,则一些方向的灯需要持续为绿色,其他方向灯需要持续为红色或者黄色;在某个时间段,譬如说深夜,由于车流量比较少,不需要红绿灯交替,可以设置为闪烁的黄灯提示驾

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论