《毕业设计(论文)-基于单片机十字路口交通灯的设计(17页).doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于单片机十字路口交通灯的设计(17页).doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-毕业设计(论文)-基于单片机十字路口交通灯的设计-第 16 页广东环境保护工程职业学院毕 业 设 计(论 文)题目: 基于单片机十字路口交通灯的设计 系: 机电工程系 专 业: 电气自动化技术 班 级: 电气自动化技术一班 学 号: 姓 名: 指导教师: 完成时间: 2017年03月13日 摘要随着社会经济的高速发展和科学技术的提高,汽车已经成为了家家户户出门旅游、回家过年、上下班所必备的交通工具。但是随着越来越多的人拥有汽车,随之带来的是各种各样的环境问题和交通问题,由于车的大量使用,给道路交通安全造成了巨大的压力,堵车,安全事故频发,这就直接催生了交通信号灯的诞生,从此,几乎全球所有国家
2、对其进行了推广应用。很明显,信号灯的出现是成功的,只要人人遵守信号灯的规则,即红灯停,绿灯行;它的确能够给人们的出行带来便利,使得大面积堵车成为了历史问题,并且提高了车的通行速度,也保证了路口的通行容量。但是随着特大城市的出现,尽管都在使用信号灯,但是道路拥堵的状况也时有发生,尤其天气状况不好的时候,这一情况更加突出。分析其原因发现,这种情况的出现不仅有信号灯转换技术问题,道路车道的设置问题,还有就是人们的规则遵守意识。当前我国城市交通管理系统平台主要用于监控道路的车流量,对繁忙道路的情况实时通过广播电台传输给路上的司机,让其自由选择路段行驶。而这一系统一般是采用通过PLC控制交通灯,使其在上
3、下左右在不同的时间上通过。以保证行车安全,相对比起来,PLC比单片机这种芯片施工成本更贵,且不易维护,而且将来不易联网到整个大的交通控制平台来集中管理。因此,本文做了基于单片机开发的交通信号控制灯。本系统是利用单片机系统、发光二极管、LED演示系统组成。系统包括人行道、左转、右转以及基本的交通灯的功能。系统除基本交通灯功能外,还具有倒计时、时间设置等工程。可以在最大程度的模拟十字路口可能出现的状况。关键词 交通灯 单片机 目录目录3一、绪论31.1引言41.2交通灯研究的背景和意义4二、 交通灯系统的总体设计方案52.1 设计目的52.2 总体设计方案52.2.1系统机构总框架52.2.2交通
4、管理的方案论证62.2.3控制电路框图62.3 本章小结6三、交通灯系统硬件设计63.1 单片机概述73.2 芯片的介绍和选择73.2.1 AT89C51芯片73.2.2复位电路93.2.3时钟电路93.4硬件原理图103.5本章小结10四、交通灯系统软件设计114.1 主程序设计114.1.1主程序流程图114.2 初始化程序114.3 延时程序124.4 倒计时显示的理论分析124.5 状态灯显示的理论分析124.6源程序124.7 本章小结12五、 电路仿真和系统调试135.1断电调试135.2通电调试135.3 调试中的问题及解决方案135.4 电路仿真图145.5本章小结14六、结论
5、和展望156.1 结论156.2展望15致谢16参考文献17附录18 一、绪论1.1引言 众所周知,信号灯包括红灯、黄灯及绿灯,每一种灯代表一种指示,即红灯代表车辆必须停止在红灯所在车道路口线以内;绿灯代表车辆能够按绿灯所在的车道或转向行驶;黄灯代表提示的意思,黄灯亮说明红绿灯之间的过度。但是当两百多年前,信号灯首次诞生在英国的一个城镇约克镇时,我们的信号灯只有红绿两种色彩,随着内燃机技术的发展,车辆尤其是私家车辆的大量出现红绿两色信号灯逐渐暴露出了它的缺陷,即不知道何时绿灯会变为红灯,红灯绿灯变为红灯显得很突兀,极易造成司机闯红灯,造成交通事故。这时具有现代意义色彩的三色灯应运而生了。191
6、8年,三色灯首次出现在纽约,那时它由三色四面投影仪组成,它的诞生极大的提高了交通效率。 然而信号灯的诞生很具传奇色彩。在十九世纪初期英国的约克市,人们受传统观念的影响,结婚后的女人一般穿着红色的外套,而未婚女子则往往穿着绿色的服装来区别。这就预示着当时的女人的身份特征。那时,刚好这座城市的国会前广场经常发生马车压死人的情况,为了解决这一问题,人们受红绿装这一传统的启发,于1968年12月在广场前安装了红绿两色灯,就此信号灯家族第一个成员诞生了。这一信号灯由英国一个叫哈德的机械师设计安装的,当时,红绿两色信号灯安装在大约7米高的灯柱上,驱动这两灯发光的能源通过燃烧煤气来取得,在灯座上还配有一位警
7、察来控制灯的颜色变化。然而,仅仅不到一个月事故还是发生了,但这次事故不是马车压死了路人,而是这位信号灯控制员被炸死了。从此,煤气驱动的信号灯也就退出了历史舞台。直到后来,爱迪生发明了灯泡,信号灯才再次回到历史当中。大概在1914年前后,美国城市克利夫兰首次诞生了电驱动的信号灯。随后,纽约、芝加哥等城市也逐渐将其推广应用。 更具现代意义的信号灯,即红黄绿三色灯的出现也有我们中国人的贡献,年轻的华人科学家胡汝鼎为实现科学救国,只身前来美国学习现代科学技术,来到了爱迪生担任董事长的通用公司工作。一次,他正等待过马路,绿灯亮时他正穿过马路,然而一辆汽车从他面前呼啸而过,当时被吓了一身冷汗,回到驻地他反
8、复琢磨怎么解决这一问题。随后的研究给了他启示,即在红绿灯之间在加以黄色信号灯用以提醒人们注意安全。当然他的建议取得了大家的认同。从此,城市交通真正意义上的大为改善。1.2交通灯研究的背景和意义城市交通是城市经济活动的生命线,是人们衣食住行的根本保障,便利的交通对国家的经济发展起着基础决定性作用,然而随着我国大城市群的出现,城市交通问题也日益严重。从最近几年的新闻报道就能发现,几乎每年的夏天由于暴雨或大风等恶劣气象的出现都导致了交通系统的大面积瘫痪,给人们的出行安全带来了极大的不便。可以这么讲,一个城市的活力很大程度上反应在城市的方方面面,城市的每一个细节上。而我国当前正在进行着广泛的城市化进程
9、,这无疑又给本已脆弱的城市交通系统带来了极大的考验,考验着城市的容忍度。纵观国际上那些规模特大城市,会发现几乎他们都有着非常发达的交通运输系统,而便捷的交通又会吸引优秀的企业和优秀人才的流入,答案是明显的,即虽然城市规模够大,但是他的出行成本,运输成本及便捷性都会使得企业运营成本降低,这就是城市规模化优势。这样的优势往往是可持续的并能够形成良性循环,调研发现历史上那些大城市,绝大部分到现在仍然是最具吸引力的城市,同样我国的深圳市虽然年轻,但已位列世界大城市的一员,也主要依靠好的基础交通设施。可见,城市交通问题影响着城市的发展。我们怎么解决大城市面临的交通问题呢?我认为,首先我们要认真的对待问题
10、,找到问题的根源;其次,参照现有的在运行的优良的城市交通系统来改进升级来作为我们解决问题的切入点;再次,积极做好城市交通规划,要对将来可能面临的人口流入压力及可能面对的极端天气的影响留有余量;最后,积极寻求技术解决途径,通过智能交通管理系统来提升现有的交通运输效率。正是基于此认识,本文在学习调研的基础上,结合单片机知识来对城市交通信号控制做一简易的设计,希望能够将学到的知识应用到生产实践当中来,为我国的智能交通应用做一简单探讨。二、 交通灯系统的总体设计方案 2.1 设计目的 (1)掌握系统设计的一般步骤和方法,掌握一个大系统中各个子系统它们之间的逻辑连接关系。 (2)系统掌握单片机设计方法并
11、能够独立的开发出信号灯控制系统。通过程序化系统的设计,选择芯片、电路安排、程序编写与调试、做完后的心得体会和总结,通过这次毕业设计,希望能够系统的掌握工程设计的一般步骤及思考方法,进一步提升实际动手能力,将理论知识应用到实践。 (3)能够熟练运用学习的软件(单片机、电子设计、proteus等),学会调试的一般步骤和方法。 (4)培养自己的动手能力和分析解决问题的能力,学会用正确的方法去发现问题、分析问题、解决问题。 (5)通过这次的毕设,希望对单片机整个家族系统及开发单片机所用到的编程语言进行一个全面的认识,能够将系统各个模块的设计原理进行细化,包括开发芯片的选择,开发软件的设置等。 (6)提
12、高实践动手能力、提高利用已学知识分析和解决问题的能力。2.2 方案整体设计 2.2.1系统结构框架 该系统设计的目的是用于控制大交叉路口的交通信号系统。交叉路口四面各有一组信号灯。设定状态一为主路的状态,且绿灯点亮63秒,同时支路的红灯点亮60秒;设定状态二为主路黄灯点亮3秒,且支路的红灯点亮3秒;设定状态三为主路红灯点亮且支路绿灯点亮;设定状态四为,主路红灯闪烁且支路黄灯点亮。2.2.2信号灯设计的方案论证 主路与干路交叉道口四面各有一组信号灯。它们的高效有序工作指导者参与交通的各方主体,使交通能够安全高效有序的进行。当红灯点亮时,车辆及行人必须立即停止通行;当绿灯点亮时指导车辆进行人可以安
13、全通过;当黄灯点亮时提醒人们注意安全,按规则行驶。这里我们设定P1端口的P1.0,P1.1及P1.2来控制主路的绿灯、黄灯及红灯显示,P1.3,P1.4及P1.5端口来控制支干道的绿、黄、红灯。 89C51 系 统 处 理2.2.3控制电路框图 倒 计 时 显 示 交 通 信 号 灯 图2-1 控制电路框图将每一信号指示灯分配连接到相应的I/O端口,用以控制信号灯的状态,同时按键开关可以控制单片机中断,然后控制信号灯的点亮状态。2.3 本章小结 本章主要介绍了交通灯系统的总体设计方案,文中详细的介绍了交通灯的设计目的、系统机构的总框架、交通管理的方案论证。使别人可以一眼看懂自己所需要做的是什么
14、,所需要实现的功能又是什么。又从侧面的去论证了这个方案的可行性、让我自己对自己所要设计的东西有一个大致的了解。 三、交通灯系统硬件设计3.1 单片机概述 单片机(Microcontrollers)属于一种集成电路智能芯片,它主要依靠现代微电子技术将各种数据处理器如CPU,各类存储器,如随机存储器、只读存储器及相关的各种端口、定时计数器及中断控制系统集成在一起构成的这么一个小型片上系统,稍微高级一点的单片机可能还会有显示求佛那个器,AD转换器及PWM电路等。它的出现开启了智能控制时代的到来,尤其在工业控制领域,它的应用得到了充分的发挥,为智能工厂的诞生奠定了基础。当然,单片机的位数越高它的处理能
15、力就越强,从最初的4位机发展到后来的8位,16位,32位等,其控制能力及控制动作也大幅提升了。目前工业上主要用的单片机现在很大程度上正被更高级的单片机系统如FPGA及嵌入式系统来取代。3.2 芯片的介绍和选择 3.2.1 AT89C51简介AT89C51是一个4K字节的FLASH存储器,具有运行电压低,高性能CMOS管构成的8位微处理器,亦称单片机。该型号单片机的可擦除只读存储器可达1000多次。该器件使用ATMEL研发的高密度非易失性存储器技术制造,并能够与工业标准MCS-51制定的指令集及对应输出引脚相互兼容。由于将多功能8位CPU和闪存组合在一个芯片上,所以AT89C51尽管体积小,但这
16、并不影响它的高效。引脚介绍: VCC:电源电压。 GND:接地端。P0口:P0口具有8位双向I/O功能,它的漏级是开路的。且每个引脚可以吸收8TTL栅极电流。当P0端口引脚第一次写入时1时,将其认为是高电阻输入。而P0可用于外部编写程序的数据扩展存储器,可定义为低8位数据/地址。在FIASH编程中,P0口作为原始代码输入,当FIASH检查时,P0输出原始代码,此时P0外部必接上拉电阻。P1口:P1口为内部上拉电阻的8位双向I/O口,P1口缓冲器可接收输出4TTL栅极电流。P1口引脚写1,内部拉高,可用作输入,P1口为外部下拉为低,输出电流,这是由于内部上拉引起的原由。在FLASH编程和验证中,
17、P1端口作为低8位地址。P2口:P2口为内部上拉电阻的8位双向I/O口,可接收P2口缓冲区,输出4TTL栅极电流,当P2口写入“1”时,引脚为由内部上拉电阻上拉,并作为输入。当作为输入的结果,P2端口引脚被外部拉低,输出电流。这是由于内部上拉的原因。P2口被用做外部编写程序存储器或是16位地址外部数据寄存器访问时,P2口输出地址为高8位。在给定地址“1”中,它使用内部拉动的优点,当外部8位地址数据存储器读写时,P2端口输出其特殊功能寄存器的内容。P2端口在FLASH编程和验证中接收高8位地址及控制信号。P3口:P3口引脚为8,带内部上拉电阻的双向I/O口,可接收输出4路TTL栅极电流。当P3端
18、口写入“1”时,它们在内部被拉高并用作输入。作为输入,P3端口将由于外部下拉低电平而输出电流(ILL)。P3口在特殊要求下也可作为AT89C51的一些特殊功能口来使用,如下表所示:口引脚 备选功能P3.0 RXD(串行输入端口)P3.1 TXD(串行输出端口)P3.2 / INT0(外部中断0)P3.3 / INT1(外部中断1)P3.4 T0(定时器0外部输入)P3.5 T1(定时器1外部输入)P3.6 / WR(外部数据存储器写选通)P3.7 / RD(外部数据存储器读选通)P3端口用于闪存编程和程序验证以接收一些控制信号。RST:复位输入。当振荡器复位时,RST引脚保持高电平两个机器周期
19、。ALE/PROG:当访问外部存储器时,地址锁存器准许输出电平用来锁存地址的低字节。此引脚用于在闪存编程期间输入编程脉冲。在正常情况下,ALE侧到恒定频率周期输出正脉冲信号,振荡器频率的频率为1/6。因此它可以作为外部输出脉冲或用作定时使用。但是请注意,每次将ALE脉冲当做外部数据存储器使用时,都将跳过一个ALE脉冲。如果要禁止ALE输出,可以在SFR8EH地址上设为0。此时,ALE只能够在执行MOVX指令或MOVC指令时,ALE才起作用。此外,这个管脚略微升高。如果微处理器执行外部状态ALE,则该设置无效。/PSEN:外部程序存储器的选通信号。在外部程序存储器读取期间,每个机器周期两个/PS
20、EN时间有效。但是,当访问外部数据存储器时,两个有效/PSEN信号将不会出现。/EA/VPP:当/EA置于低位时,外部程序存储器(0000H-FFFFH)在此期间,无论是否有内部程序存储器。注意加密方法1,/EA将在内部锁定到RESET;当/EA侧保持高位时,内部程序存储器。此引脚还用于在闪存编程期间应用12V编程电源(VPP)。XTAL1:输入到反相振荡器放大器,并输入到内部时钟工作电路。XTAL2:反相振荡器的输出。3.2.2复位电路复位电路:使用它能够将电路恢复到原始状态。就像计算机的复位按钮一样,以便恢复到原来的状态,重新开始计算。但是计算机与复位按钮其原理大不不同,复位电路的启动方式
21、是不同的。首先,当电源电路启动时立刻复位操作;其次是,在需要的情况下可以手动操作;最后是基于程序或电路操作的需要来自动运行。复位电路相对简单只是一个电阻和电容的组合就可以做到,复杂点的只要有一个复杂的晶体管和其他程序来执行。作用是把特殊功能寄存器的数据刷新为默认数据。 图3-1 复位电路图3.2.3时钟电路 时钟电路是由晶振,控制器及匹配电容构成。也与时钟振荡器电路相同。还有就是任何工作都按时间顺序。用于产生这个时间的电路。 时钟电路的组成:一般时钟电路都是由晶振,控制芯片,匹配电阻及电容等元件组成,部分时钟电路是由主板、晶振及控制芯片组成。没有晶振的时钟芯片是为在北桥的存储器和时钟而设计的。
22、 工作原理:电路上电后,晶振会输出一个特定频率,时钟芯片(又称分频器)将其分为不同的信号周期,然后进行信号频率上升或下降的处理,最后通过时钟芯片电阻侧(外围组件)输出,大多数会连接到每个设备。图3-2 时钟电路图3.4硬件原理图 本信号灯控制系统利用AT89C51芯片来对12个LED灯进行控制,实现交通信号灯的控制,同事系统还加了一个排阻,作用是作为上拉电阻来驱动数码管显示。 图3-3 硬件原理图3.5本章小结 本章主要介绍了单片机的发展历史,通过对AT89C51各端口的工作原理的介绍来进一步了解单片机的工作程序。在此基础上通过假定交叉路口工作情况,将其分为四个状态,并将这12个信号灯进行了管
23、脚分配。接下来主要介绍了信号灯系统的硬件原理构成,并对其做了深入的分析。 四、交通灯系统软件设计4.1 主程序设计 4.1.1主程序流程图 信号灯控制系统在正常情况下应该不间断连续的工作,因此其应该是一个连续循环程序来控制路口灯的亮灭,其程序流程图如图4-1所示。主干路绿灯点亮且支路红灯点亮60秒 主路黄灯闪烁且支路红灯点亮3秒主路红灯点亮且支路绿灯点亮60秒主路黄灯闪烁3秒且支路黄灯闪烁3秒 图4-1 信号灯状态流程图 主路与支路交替通过,每个干路允许通行63秒,支路每次通行12秒;每次绿灯变为红灯,黄灯先点亮3秒,同时另一路的黄灯也闪烁3秒。他们运行的方式,必须同时进行,即主路点绿灯,支路
24、点红灯;主路黄灯闪烁,支路黄灯闪烁;主路点红灯,支路点绿灯。4.2 程序的初始化 当单片机上电时,其I/O口默认为高电平,需要在运行主函数前对其进行赋值处理。因为信号灯控制系统在高电平时LED灯点亮,我们设定0代表红灯,1代表绿灯,故给P1东西方向为0,南北方向为1。 当程序涉及到外部中断时,都需要初始化,打开总中断,打开外部中断0和1时,还需选择脉冲触发模式,该系统优先选择下降沿方式来触发中断。4.3 延时程序有两种方法可用来实现延时。其一是通过程序来延时,其二是通过定时计数器来延时。程序延时不占用任何硬件资源,但占用CPU时间,导致了CPU的利用率降低。定时/计数器延迟不占用CPU时间,因
25、此,为提高CPU利用率,本设计使用定时器延迟。4.4 倒计时显示的理论分析 使用定时器中断,设置THO=TL0=(65536-50000)/ 256,即每隔0.05秒中断一次,每20次中断,即过了1秒时,使得时间值减去1,这样就会实现倒计时功能4.5 状态灯显示的理论分析闪烁的黄灯也可以使用定时器中断,每过三十次,使黄灯中断一次,即每次为30 * 0.05秒=1.5秒,这样就能让黄灯连续闪烁3秒。4.6源程序 见附录4.7 本章小结 本章主要介绍了本次毕设中的程序设计部分,上面详尽介绍了控制十字路的控制主程序的工作流程,并给出了初始化程序需要设定的条件,最后重点介绍了数码管倒计时模块和状态灯模
26、块是如何工作和倒计时的。从而可以让读者可以进一步的了解倒计时模块和状态灯模块式怎么样工作的。 五、 电路仿真和系统调试5.1断电调试 考虑到器件安全,预防硬件损坏,利用万用表检测该系统有无短路或断路,然后检查设计步骤及思路是否正确,每条线路的电平是否正常,经过测试,没有短路现象且每个电平都正常。5.2通电调试(1) 将万用表调到直流电压档,来测定输出电压,测量结果为4.8V至6.5V之间可调,满足单片机系统的电源需求。(2) 满足检查系统时钟电路是否正常工作,用万用表直流电压测试XTAL1及XTAL2两端电压,检测到2.5V左右的电压,即视为正常工作。(3) 检测复位电路能否正常工作。(4)
27、检查LED灯和数码管是否正常。是否损坏。5.3 调试中的问题及解决方案 调试过程中遇到不少问题 问题一:LED的点亮情况与预设的不一致。不该亮的点亮了,该亮的却不亮。 解决方案:经过认真的检查,最终找到了错误所在,那就是赋值错误。将其纠正过来,最终实现LED按预设工作。 问题二:把程序HEX文件放进仿真电路中,LED灯按照程序设定的时间和步骤进行,但是数码管并没有亮起来。 解决方案:我们从程序上、部件上、单片机接口处、数码管的选型上逐一排查,发现自己程序上设计的是共阳极数码管得电后亮,但是在电路上布置数码管时却是使用的共阴极数码管,及时改正,最后数码管按照理想状态实现倒计时。 问题三:将hex
28、文件放进电路后,有东西方向的数码管没亮,南北方向的数码管亮。 解决方案:经过认真的检查,发现数码管串联错误,东西方向的数码管接线接错了,方向接反了。经过改正,东西方向的数码管按照效果亮了起来。5.4 电路仿真图经过设计与系统的调试,最后呈现的效果如下图: 图5-1 电路仿真图5.5本章小结 本章主要对本毕设的电路调试部分和电路仿真图进行了说明,文中详细的介绍了在设计交通灯时所遇到的一个问题和自己是如何解决这些问题的,从自己调试并且到最后成功,使读者对本系统的设计有了进一步的了解,也使自己对交通灯有了更深的了解。 六、结论和展望 6.1 结论 本文在对道路交叉口交通信号灯工作原理分析的基础上,结
29、合单片机知识,对叉口信号灯控制进行了基于单片机系统的开发。通过进行文献调研,对我国当前的交通控制技术有了更多的了解。在此基础上,结合路口控制要求对单片机型号进行了选择,并最终开发了一个小的控制系统。在开发过程中,主要用到了proteus7.8软件及keil51开发软件,并使用C编程语言。 课题完成的主要工作及结论: (1)查阅了大量的文献,对交通控制系统进行了全面分析,明确了信号的的控制要求,确定了基于AT89C51单片机来开发这一控制系统。(2)经过实验验证后,证明该系统可以满足设计要求,也就证明了系统的可行性。(3)深入分析并总结了系统软件的工作原理,并基于keil51进行了程序编写。不足
30、之处: 在设计中对倒计时显示时间进行要求,并没有达到预期中特别理想的效果,也因个人能力有限,所以设计的电路也特别的粗糙,还有就是硬件电路的摆放不是特别的整齐,设计的程序也比较的简单、希望自己将来能够改进。6.2展望本次设计的经历对于我来说,有着非常重要的意义,首先,让我对交通管制系统有更深入的了解,其次,我亦明白现时交通管制系统的缺点,也让我知道自己还有很多在交通控制上的知识缺漏,希望通过努力,可以将系统修改为可以引导交通并弥补交通控制系统不足的应用系统。 致谢 时光荏苒,不知不觉间,在广东环境保护工程职业学院的专科生学习和生活已经接近尾声。回顾这为期三年的时光,发觉自己收获了很多,同时也成长
31、了很多。而这一切都离不开老师与同学的真诚帮助和支持。在此,向这段时间给予我学习和生活真诚帮助的老师和同学致以最诚挚的谢意。 首先要感谢的是我的实习指导老师车海波。他严谨治学的教学态度和精益求精的学术精神极大地感染了我,在决定小论文的选题时,车老师花费了很多时间和-精力同我讨论选题的内容,启发研究的思路,并且在写作期间给予我很多宝贵的建议。同样的,在毕业论文写作的过程中,他也给予了我悉心的帮助和指导。从车海波老师孜孜不倦的教诲中,我的确受益良多。 其次还要感谢广东环境保护工程职业学院的其他老师和同窗好友们,正是他们陪伴我走过这三年的学习和生活时光,无论是老师在课堂上的谆谆教导还是同学们课下的无私
32、帮助,都令我觉得专科生学习的这段时光是人生的一段宝贵的经历。 最后,在即将毕业之际,真心地祝愿所有的老师和同学们在今后的工作和生活中一切顺利,健康快乐! 参考文献1 胡汉才 单片机原理及接口技术M.北京:清华大学出版社.1996.7.2 高涛等 C语言程序设计M.西安:西安交通大学出版社,2007.23 吴黎明主编 单片机原理及应用技术 科学出版社 2003.54 李学海主编 基于AT89C51单片机基础教程 北京瀚空航天大学出版社 2006.85 刘乐善主编 电子技术实训 华中科技大学出版社 2004.86 扬居义主编 单片机课程设计指导,北京:清华大学出版社 2009.97 朱勇 单片机原
33、理与应用技术, 北京:清华大学出版社。2006.8 附录#include#include#includeseg.h#defineu8unsignedchar#defineu16unsignedint#definerg60#defineye3#definejj115sbitled_red_n=P12;sbitled_gre_n=P10;sbitled_yel_n=P11;sbitled_red_w=P15;sbitled_gre_w=P13;sbitled_yel_w=P14;u8num,time=0,time1=0,time_jj=0,jj=0,xc=0;voiddelay(intz)inti
34、,j;for(i=z;i0;i-)for(j=100;j0;j-);voidinit()TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;voidmain()init(); /定时器0初始化led_red_n=1; /初始状态led_gre_n=0;led_yel_n=1;led_red_w=0;led_gre_w=1;led_yel_w=1;while(1)if(time1=0) /第一时间段,东西红,南北绿display_yang(rg-time,rg+ye-time);if(time1=1) /第
35、二时间段,东西红,南北黄display_yang(ye-(time-rg),rg+ye-time);if(time1=2) /时三时间段,东西绿,南北黄display_yang(rg+ye)*2-time,rg*2+ye-time);if(time1=3) /第四时间段,东西绿,南北红display_yang(rg+ye)*2-time,(rg+ye)*2-time); /按键检测voidtimer0()interrupt1 /时钟中断TH0=(65536-50000)/256;TL0=(65536-50000)%256;num+;if(num=20) /到达一秒 num=0;if(jj=1) /如果是紧急状态time_jj+; /紧急状态计时if(time_jj=jj1) /如果计时时间到time_jj=0;jj=0; /取消紧急状态P1=xc; /恢复现场time-=1; if(jj=0) /如果是非紧急状态time+; /计时if(time=(rg+ye)*2) /四个阶段计时满后计时重置time=0;if(time=rg&time=rg+ye&time=rg*2+ye&time(rg+ye)*2) /第四阶段time1=3;led_red_n=0;led_gre_n=1;led_yel_n=1;led_red_w=1;led_gre_w=1;led_yel_w=0;
限制150内