交通灯C51程序设计作业_第1页
交通灯C51程序设计作业_第2页
交通灯C51程序设计作业_第3页
交通灯C51程序设计作业_第4页
交通灯C51程序设计作业_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

C51C51 程序设计课程报告程序设计课程报告 交通灯交通灯 学学 院:院: 电信学院电信学院 班班 级:级: 0909 电子信息工程本电子信息工程本 1 1 班班 学学 号:号: 2 2 姓姓 名:名: 邵宝川邵宝川 1 摘要摘要 交通灯是城市交通监管系统的重要组成部分,对于保证机动车辆的安全运 行,维持城市道路的顺畅起到了重要作用。随着车辆的日益增多,交通问题将 日趋严重。 可通过多修建道路或限制车辆的办法来解决,但道路的增加是有限 的,而限制车辆会使汽车及其相关产业受到压制。目前,发达国家的交通主要 是向智能化交通方向发展。如给汽车装上导航仪等办法,充分利用电子设备提 高现有道路交通系统的运输能力。交通灯是管理城市交通的重要工具,交通灯 对道路交通流的影响近年来引起广大学者的广泛注意。目前绝大部分交通灯其 时间都是设定好的,不管是车流高峰还是低谷,红绿灯的时间都固定不变,还 有一些交通灯能根据简单划分的时间段来调整时间,但控制起来都不是很灵活, 这使得城市车流的调节不能达到最优。而我们设计的交通灯充分考虑了在道路 繁忙时,各道口车流量不同,和消防车、警车等车辆通过路口时等紧急情况, 给予了交通指挥一定的自由度,设计更加人性化。 2 目录目录 一、设计背景一、设计背景.3 二、设计原理二、设计原理.3 三、电路图三、电路图.4 (一)逻辑图:.4 (二)交通信号模拟控制系统电路原理图.5 四、程序流程图四、程序流程图.6 五、编写程序五、编写程序.7 六、仿真结果图六、仿真结果图.15 (一)东西绿灯,南北红灯:.15 (二)东西黄灯,南北红灯.16 (三)东西红灯,南北绿灯.17 (四)东西黄灯,南北绿灯.18 七、调试七、调试.19 八、结论八、结论.19 九、参考文献九、参考文献.20 (一) 网络参考.20 (二)书本参考.20 3 一、设计背景一、设计背景 交通灯是一个城市经济的动脉,它不但体现了一个城市的发展活力,也直 接与老百姓的生活息息相关。所谓“路通财通”就是说明了一个良好的交通环 境的重要性。而交通灯在这个交通环境中起一个重要的角色,智能的交通灯能 有效地缓解城市的交通压力,减少交通事故;智能交通灯能为当地人民节省大 量的出行时间,创造出更多的社会价值;智能的交通灯为交通顺畅提供了保障, 对当地经济起着一个不可估量的作用。 目前研究交通灯的方案有很多,有应用 CPLD 设计交通信号灯控制器方法, 有应用 PLC 实现对交通灯的控制系统的设计。有应用单片机实现对交通信号灯 设计的方法。目前国内的交通灯一般设在十字路口,在醒目位置用红黄绿三种 颜色的指示灯。加上一个倒计时的显示计时器来控制行车。对于一般情况下的 安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存 在以下缺点:1.两车道的车辆轮流放行时间相同且固定,在十字路口,经常一 个车道为主干道,车辆较多,放行时间应该长些;另一个车道为副干道,车辆 较少,放行时间应该短些。2.没有考虑到紧急车辆通过时,两车道都应该采取 措施。譬如:消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通 过。 二、设计原理二、设计原理 用 AT89C51 单片机控制一个交通灯系统,晶振采用 12 MHz。设 A 车道与 B 车道交叉组成十字路口,A 车道是主干道,B 为支道。设计要求如下: (一)用发光二极管模拟交通信号灯; (二)正常情况下,A, B 两车道轮流放行,A 车道放行 50 s,另有 3s 用 于警告;东西南北车道放行 30 s,另有 3s 用于警告; (三)在交通繁忙时,交通信号灯控制系统应有手控开关,可人为地改变 信号灯的状态,以缓解交通拥挤状况。在 B 车道放行期间,若 A 车道有车而 B 车道无车,按下模拟开关 K1 使 A 车道放行 15s; (四)有紧急车辆通过时,按下开关 K2 使 A, B 车道均为红灯,禁止通行 4 30s。 三、电路图三、电路图 当一个车道有车而另一个车道没车时、可采用外部中断执行中断服务程序, 分别以按钮开关 K1,K2 模拟 A、B 车道的车辆检测情况。当按下 K1 时、A 车 道通行;当按下 K2 时,B 车道通行。 由此可得卡诺图如下: 表达式: (一)逻辑图: 5 (二)交通信号模拟控制系统电路原理图 6 北北 7 四、程序流程图四、程序流程图 8 五、编写程序五、编写程序 交通灯信号灯模拟系统程序如下: #INCLUDE UNSIGNEDCHAR CODE SEGDATA=0X3F,0X06,0X5B,0X4F,0X66, 0X6D,0X7D,0X07,0X7F,0X6F; UNSIGNED CHAR LEDCODE=0X0C,0X0C,0X0A,0X21,0X21,0X11; /*0X21 东西红灯,南北绿灯 /*0X11 东西红灯,南北黄灯 /*0X0C 东西绿灯,南北红灯 /*0X0A 东西黄灯,南北红灯 UNSIGNED CHAR SECOND; UNSIGNED CHAR RED,GRE,YELL; /UNSIGNED CHAR KEYCNT; UNSIGNED INT TCNT,FLAG; /UNSIGNED INT K; VOID DEPLAY10MS(VOID) UNSIGNED INT I,J; FOR(I=0;I4;I+) FOR(J=0;J250;J+); 9 VOID S0(VOID) P1=0XFE; P0=SEGDATARED/10; P3=SEGDATAGRE/10; DEPLAY10MS(); P1=0XFD; P0=SEGDATARED%10; P3=SEGDATAGRE%10; DEPLAY10MS(); VOIDS1(VOID) P1=0XFE; P0=SEGDATARED/10; P3=SEGDATAYELL/10; DEPLAY10MS(); P1=0XFD; P0=SEGDATARED%10; P3=SEGDATAYELL%10; DEPLAY10MS(); 10 VOID S2(VOID) P1=0XFE; P3=SEGDATARED/10; P0=SEGDATAGRE/10; DEPLAY10MS(); P1=0XFD; P3=SEGDATARED%10; P0=SEGDATAGRE%10; DEPLAY10MS(); VOID S3(VOID) P1=0XFE; P3=SEGDATARED/10; P0=SEGDATAYELL/10; DEPLAY10MS(); P1=0XFD; P3=SEGDATARED%10; P0=SEGDATAYELL%10; DEPLAY10MS(); 11 VOID SEGPLAY(VOID) SWITCH(FLAG) CASE 0: CASE1: S0();BREAK; CASE 2:S1();BREAK; CASE 3: CASE 4:S2();BREAK; CASE 5:S3();BREAK; VOID YELLS(VOID) UNSIGNED CHAR I; P2=LEDCODEFLAG; FOR(I=0;I10;I+) SEGPLAY(); P2=LEDCODEFLAG FOR(I=0;I10;I+) 12 SEGPLAY(); VOID GRES(VOID) UNSIGNED CHAR I; P2=LEDCODEFLAG; FOR(I=0;I10;I+) SEGPLAY(); P2=LEDCODEFLAG FOR(I=0;I10;I+) SEGPLAY(); VOID MAIN(VOID) TMOD=0X01; ET0=1; 13 EA=1; TH0=0X3C; TL0=0XB0; TCNT=0; TR0=1; SECOND=30; FLAG=0; WHILE(1) RED=SECOND; GRE=SECOND-5; YELL=SECOND; SEGPLAY(); SWITCH(FLAG) CASE 0:P2=LEDCODEFLAG;BREAK; CASE 1:GRES();BREAK; CASE 2:YELLS();BREAK; CASE 3:P2=LEDCODEFLAG;BREAK; CASE 4:GRES();BREAK; CASE 5:YELLS();BREAK; 14 VOID T0(VOID) INTERRUPT 1 USING 0 TCNT+; TH0=0X3C; TL0=0XB0; IF(TCNT=20) TCNT=0; SECOND-; IF(SECOND=0) SECOND=30; FLAG+; IF(SECOND=5) FLAG+; IF(SECOND=10) FLAG+; IF(FLAG=6) FLAG=0; 15 16 六、仿真结果图六、仿真结果图 (一)东西绿灯,南北红灯: 北北 17 (二)东西黄灯,南北红灯 北北 18 (三)东西红灯,南北绿灯 北北 19 (四)东西黄灯,南北绿灯 北北 20 七、调试七、调试 单片机系统的硬件调试和软件调试是不能分开的,许多硬件错误是在软件 调试过程中被发现和纠正的。但通常是先排除明显的硬件故障以后,再和软件 结合起来调试以进一步排除故障。可见硬件的调试是基础,如果硬件调试不通 过,软件设计则无从谈起。 硬件的调试主要是把电路各种参数调整到符合设计要求。先排除硬件电路 故障,包括设计性错误和公益性故障。一般原则是先静态后动态。 利用万用表或逻辑测试仪器,检查电路中的各器件以及引脚是否连接正确,是 否有短路故障。 先要将单片机 AT89 S51 芯片取下,对电路板进行通电检查,通过观察看是 否有异常,然后用万用表测试各电源电压,这些都没有问题后,接上仿真机进 行联机调试观察各接口线路是否正常。 单片机 AT89 S51 是系统的核心,利用万用表检测单片机电源 Vcc 是否为 (40 脚)+5 V、晶振是否正常工作(可用示波器测试,也可以用万用表检测,两 引脚电压一般为 1.82.3V)、复位引脚 RST(复位时为高电平,单片机工作时为 低电平)、EA 是否为+5V(高电平),这样一来单片机就能工作了,再结合电路图, 检测故障就很容易了。 八、结论八、结论 通过为本次课程设计,使我对这门课有了许多新的了解,弥补了在课堂上 学习的不足。相信这对我以后的学习和工作都会有很大的帮助。 首先,通过实体仿真软件等辅助软件的共同效果,是这次课程设计有了鲜 明的活力。还使我认识到这次实训不仅仅是一个软件的应用,更多的是使我们 认识到学习到很多在课堂上无法得到的东西。特别是 protues 软件的功能是我了 解了当今开发系统的新方向,令人大开眼界! 在本次课程设计中我通过一个智能交通灯的设计,使我深深地体会到了在 现实生活中的应用,既增强了我们的好奇心,又巩固了我们的理论知识。更让 我们体会到了单片机手动的开始平台的完善与成熟。只要你有想法,就有可能 让他成为现实。这里我学习完 protues 软件后的第一感觉是,虽然这软件工作不 21 稳定,但是会有相当不错的效果出来。这对我以后的工作一定会有帮助的。在 这次课程设计中不仅只对 C51 编程有了新的认识,还对整个 C51 的开发平台都 有了一定的了解,这是一笔不错的收获。 通过这次课程设计,使我的感触很深,要达到目的,不同的人就有不同的 方法。只要你的方法不错!五花八门都可以,而且是各有特色。走出来的结果 都有各自的独到之处。在编程中“简”字贯穿于整个程序设计中,越简单越好, 毕竟 C51 留给用户的资源是有限的,所以我们要充分利用这些资源,达到更好 的效果,这些是我们在以后的学习生活中应

温馨提示

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

评论

0/150

提交评论