1、基于单片机交通灯控制摘 要交通控制系统是近现代社会随着物流、出行等交通发展产生的一套独特的公共管理系统。要保证高效安全的交通秩序,除了制定一系列的交通规则,还必须通过一定的科技手段加以实现。本文在对目前交通控制进行深入分析的基础上,运用检测传感、实时调整智能化控制的实现技术,将传感器监测、实时调整车辆通行时间的算法与单片机控制作用相结合,提出了基于单片机的交通控制系统设计方案。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。单片机的交通灯控制系统由STC89C52单片机、交通灯显示、LED倒计时、紧急处理、时间模式手动设
2、置等模块组成。系统除基本交通灯功能外,还具有通行时间手动设置、可倒计时显示、急车强行通过、交通异常状况判别及处理等相关功能。理论证明该系统能够简单、经济、有效地疏导交通,提高交通路口的通行能力。 本设计主要做了如下几方面的工作:一是确定系统交通控制的总体设计,包括,十字路口具体的通行禁行方案设计以及系统应拥有的各项功能,二是硬件电路、显示电路等的设计和基本功能要求。三是进行软件系统的设计。对于本系统,本人采用单片机C语言编写,总体上完成了软件的编写。关键词:单片机;STC89C52;交通灯;记时 ; ABSTRACTTraffic control system is a modern soci
3、ety with the logistics, travel and other transportation development of a unique set of public management system. To ensure safe and efficient traffic order, in addition to the development of a series of traffic rules, it must be through some technological means to achieve. In this paper, the current
4、 traffic control for in-depth analysis, based on the use of detection sensors, real-time adjustment to achieve intelligent control technology, sensor monitoring, real-time adjustments to traffic control algorithm and the role of single-chip combination is proposed based on microcontroller traffic co
5、ntrol system design.Crossroads shuttle vehicles, pedestrians bustling, car dealers Drive, people walkways, orderly. Then rely on to achieve the discipline of the order then? Rely on the automatic traffic light is the chain of command.8051 by the traffic light control system 8051, traffic light displ
6、ay, LED countdown, traffic detection and adjustment, compliance testing, emergency treatment, time mode manually set the other modules. In addition to basic traffic light system functions, but also with the passage of time manually set, you can countdown show, emergency vehicle forced through, traff
7、ic detection and adjustment, identification and handling of traffic anomalies and other related functions. The system is able to prove the theory is simple, economic, efficient flow of traffic, improve traffic intersection traffic capacity. This design made the following main aspects: First, determi
8、ne the overall traffic control system design, including, specific passage forbidding intersection design and the system should have the function, and second, the sensor hardware circuits, display circuit design and basic functional requirements. Third, the software system design. for this system, I
9、used the MCU assembly language, the overall completion of the software was written.Key words: SCM ;traffic lights; STC89C52; timing; detection目 录1. 概述11.1 单片机交通控制系统的选题背景11.2 单片机交通控制系统选题的现实意义11.3 国内外研究现状及其发展31.3.1 国内外交通控制技术31.3.2 交通控制存在的问题31.4 单片机交通控制系统主要研究的内容42. 单片机交通控制系统总体设计52.1单片机交通控制系统通行方案设计52.2
10、单片机交通控制系统的功能要求62.2.1 倒计时显示72.2.2 时间手动设置72.2.4 紧急处理72.3 单片机交通控制系统的基本构成及原理73. 系统硬件电路的设计83.1 系统硬件总电路构成及原理83.1.1 系统硬件电路构成83.1.2 系统工作原理83.2 单片机的选择93.2.1 单片机的概述93.2.2 STC89C52RC芯片的主要性能93.2.3 STC89C52RC芯片的内部结构框图93.2.4 STC89C52RC芯片最小系统103.3硬件介绍及连接113.3.1 八段LED数码管113.3.2其它器件124.系统软件程序的设计144.1程序主体设计流程144.2 系统
11、软件的理论基础知识154.2.1 定时器原理154.2.2 软件延时原理154.2.3 中断原理164.3 子程序模块设计164.3.1 按键扫描程序164.3.2 状态灯显示184.3.3 LED倒计时显示194.3.4红绿灯时间调整程序204.3.5消抖动程序214.4 系统软件调试214.4.1 TKS仿真器214.4.2 集成开发环境KEIL224.4.3 系统软件调试235. 结论24参考文献25致 谢26附录:271. 概述1.1 单片机交通控制系统的选题背景 随着人口快速的增多,交通工具的爆炸性的发展,以及道路资源的有限性,交通控制就应运而生,在人类的生活、工作环境中,交通扮演着
12、极其重要的角色,人们的出行都无时不刻与交通打着交道。自18世纪工业革命以来,工业发展带动整个交通运输的发展,从而催生了单独的交通控制学问与管理机构。交通控制系统是近现代社会随着物流、出行等交通发展产生的一套独特的公共管理系统。要保证高效安全的交通秩序,除了制定一系列的交通规则,还必须通过一定的技术手段加以实现。现代人类科学技术,特别是电子科学技术的发展和成熟能比较好的解决系统建立中硬软件方面要求的技术难题。目前,交通控制方面的研究能完全实现自动智能化,甚至将整个区域整合成一个统一的系统范围,还能根据正常时段以及特定突发时段的情况进行科学的自动调整。交通对于社会的工业经济和人们的生活生产中有着十
13、分重要的意义。随着单片机和传感技术的迅速发展,自动检测领域发生了巨大变化,交通自动监测控制方面的研究有了明显的进展,并且必将以其优异的性能价格比,逐步取代传统的交通控制措施。1.2 单片机交通控制系统选题的现实意义城市道路交通自动控制系统的发展是以城市交通信号控制技术为前导,与汽车工业并行发展的。在其各个发展阶段,由于交通的各种矛盾不断出现,人们总是尽可能地把各个历史阶段当时的最新科技成果应用到交通自动控制中来,从而促进了交通自动控制技术的不断发展。早在1850年,城市交叉口处不断增长的交通就引发了人们对安全和拥堵的关注。世界上第一台交通自动信号灯的诞生,拉开了城市交通控制的序幕,1868年,
14、英国工程师纳伊特在伦敦威斯特敏斯特街口安装了一台红绿两色的煤气照明灯,用来控制交叉路口马车的通行,但一次煤气爆炸事故致使这种交通信号灯几乎销声匿迹了近半个世纪。1914年及稍晚一些时候,美国的克利夫兰、纽约和芝加哥才重新出现了交通信号灯,它们采用电力驱动,与现在意义上的信号灯已经相差无几。1926年英国人第一次安装和使用自动化的控制器来控制交通信号灯,这是城市交通自动控制的起点。早期的交通信号灯使用“固定配时”方式实行自动控制,这种方式对于早期交通流量不大的情况曾起过一定的作用。但随着汽车工业的发展、交通流量增加、随机变化增强,采用以往那种单一模式的“固定配时”方式已不能满足客观需要,于是一种
15、多时段多方案的信号控制器开始出现并逐步取代了传统的只有一种控制方案的控制器。 20世纪30年代初,美国最早开始用车辆感应式信号控制器,之后是英国,当时使用的车辆检测器是气动橡皮管检测器。车辆感应控制器的特点是它能根据检测器测量的交通流量来调整绿灯时间的长短,使绿灯时间更有效地被利用,减少车辆在交叉口的时间延误,比定时控制方式有更大的灵活性。车辆感应控制的这一特点刺激了车辆检测器技术的发展。继气动橡皮管式检测器之后,雷达、超声波、光电、地磁、电磁、微波、红外以及环形线圈等检测器相继问世。当今在城市道路交通自动控制、交通监测和交通数据采集系统中,应用最广的是环形线圈车辆检测器。超声波检测器主要在日
16、本等少数国家得到广泛应用。计算机技术的出现为交通控制技术的发展注入了新的活力,更是实现了以一个城市或者更大地域,而非简单的一个路口的交通总体控制系统。1952年,美国科罗拉多州丹佛市首次利用模拟计算机和交通检测器实现了对交通信号机网的配时方案自动选择式信号灯控制,而加拿大多伦多市于1964年完成了计算机控制信号灯的实用化,建立了一套由IBM650型计算机控制的交通信号协调控制系统,成为世界上第一个具有电子数字计算机城市交通控制系统的城市。这是道路交通控制技术发展的里程碑。可以说,在近百年的发展中,道路交通信号控制系统经历了手动到自动,从固定配时到灵活配时,从无感应控制到有感应控制,从单点控制到
17、干线控制,从区域控制到网络控制的长远过程。交通控制研究的发展,旨在解决人类交通因需求的增多而日益繁重带来的问题,局限于道路建设的暂时不足和交通工具的快速增长,就要使更多的车辆安全高效的利用有限的道路资源,避免因无序和抢行等无控制原因造成的不必要阻塞甚至瘫痪,另外,针对整个交通线路车辆的多少实时调整和转移多条线路的分流也十分必要。交通网络是城市的动脉,象征着一个城市的工业文明水平。交通关系着人们对于财产,安全和时间相关的利益。具有优良科学的交通控制技术对资源物流和人们出行都是十分有价值的,保证交通线路的畅通安全,才能保证出行舒畅,物流准时到位,甚至是生命通道的延伸。1.3 国内外研究现状及其发展
18、1.3.1 国内外交通控制技术当前世界各国广泛使用的最具代表性却有实施的城市道路交通信号控制系统有英国的TRANSYT与SCOOTS交通控制系统和澳大利亚的SCATS系统。在信号机的发展历程中,自适应理论一直受到各研究机构的欢迎,比如上面所述的SCOOTS和SCATS系统。最近几年,国外仍偏向于引进自适应理论来对交通信号控制系统进行研制,特别是美国有十几个大学或研制机构正在研制自适应交通信号控制系统,具有代表性的有美国亚利桑那大学研制的RHODES。我国交通领域的发展起步较晚,基本是从新中国建国之后,随着各方面的条件的成熟以及社会发展的要求,才建立及健全交通控制系统的。城市交通是一个高度综合而
19、又复杂的问题,必须从政策,机构,体制,管理,收费价格,基础设施建设和投资各个方面同时入手解决。我国城市经济和社会的高速发展使得社会对交通的需求急剧增加。也对此提出了严峻的挑战,一句城市发展的规划,建设以及运行原照,在广泛借鉴和吸取国外先进经验的基础上,建立并完善适合我国国情的城市交通系统1.3.2 交通控制存在的问题我国城市交通运输的现状和存在的问题,借鉴国外城市交通管理的先进经验,强调建立城市交通管理体制的重要性,提出加强城市交通研究的交通规划,建立稳定的交通基础设施建设的资金出道,实行公交优先政策,建立先进的交通信息系统等对策。随着城市机动车增长速度的加快。1994年卧轨城市机动车保有量已
20、接近500完辆。20世纪90年代以来,经济的发展加快,从1985年到1995年,机动车增长率达13%左右,近几年更是增多。然而,在此同时,城市道路建设规模也在加大,我国城市普遍存在道路密度,道路面积率偏低的问题,这是我国城市哟其是大城市有机的一个重要原因。我国城市道路的密度只有6.8km每平方千米,而在20世纪80年代,世界发达国家就已到达20km每平方千米。20世纪90年代,我国部分城市道路面积率,北京为5.9%,上海为6.4%,而国外东京为13.8%,巴黎为25%,普遍高于我国。近几年,国家虽不断加大城市道路建设的力度,但仍赶不上车辆的增长速度,且与世界其他国家相比,差距仍很大。出租车以及
21、公交的发展运营情况并不尽如人意,虽然车辆和线路长度增长,但运营速度成了瓶颈,新增的运力被运输效率低下所抵消。交通管理方面水平还欠发展,随着交通需求越来越旺盛,而我国城市中小交通管理和交通安全的现代化设施却做得不足。在车辆,道路和交通管理系统,城市交通信号控制系统,城市交通管制中应用人工智能技术,信息 采集和信息提供技术等方面都与发达国家有很大差距。近几年,虽然有部分城市研究和引进一些国外先进的交通信号管理系统,但是由于交通管理设施不足等原因,我国交通事故率居高不下。城市车流行驶速度逐年下降,目前不少城市交通运量年年增长,但运输速度普遍下降,这都源于交通通行不佳。1.4 单片机交通控制系统主要研
22、究的内容基于整个交通控制系统的发展情况,本设计主要进行如下方面的研究:用智能,集成,且功能强大的单片机芯片为控制中心,设计出一套十字路口的交通控制系统,以指挥该路口的实时通行状态。本设计主要做了如下几方面的工作:一是确定系统交通控制的总体设计,包括十字路口具体的通行禁行方案设计以及系统应拥有的各项功能,在这里,本设计除了有信号灯状态控制能实现基本的交通功能,还增加了倒计时显示提示,基于实际情况,紧急状况处理和键盘可设置等强大功能。 二是进行硬件电路,显示电路等的设计对各器件的选择及连接,大体分配各个器件及模块的基本功能要求。三是进行软件系统设计,对本系统,本人采用单片机C语言编写,对单片机内部
23、结构和工作情况做了充足的研究,了解定时器,中断以及延时原理,总体上完成了软件的编写。2. 单片机交通控制系统总体设计2.1单片机交通控制系统通行方案设计设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如下图所示。说明:黑色表示亮,白色表示灭。交通状态从状态1开始变换,直至状态6然后循环至状1,周而复始,即如图2.1所示:图2.1 交通状态状态一:东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时20秒。此状态下,东西向禁止通行,南北向允许通行。状态二:东西方向绿灯灭,同时黄灯亮,南北方向红灯
24、亮,倒计时5秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。状态三:南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时20秒。此状态下,东西向允许通行,南北向禁止通行。状态四:南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时5秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。下面我们可以用图表表示灯状态和行止状态的关系如下:表2.1 交通状态及红绿灯状态状态1状态3状态4状态6东西向禁行等待变换通行等待变换南北向通行等待变换禁行等待变换东西红灯1100东西黄灯0001东西绿灯0010南北红灯0011南北绿灯1000南北黄灯0100表2.1 交通状态及
25、红绿灯状态 东西南北四个路口均有红绿黄3灯和数码显示管2个,在任一个路口,遇红灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。状态及红绿灯状态如表2.1所示。说明:0表示灭,1表示亮。2.2 单片机交通控制系统的功能要求本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还能进行倒计时显示,车流量检测及调整,交通违规处理和紧急处理等功能。2.2.1 倒计时显示倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。倒计时显示是用来减少驾驶
26、员在信号灯色改变的关键时刻做出复杂判断的1种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择 。2.2.2 时间手动设置可以通过键盘进行手动设置,增加了人为的可控性,避免自动故障和意外发生,并再紧急状态下,可设置所有灯变为红灯。键盘是单片机系统中最常用的人机接口,一般情况下有独立式和行列式两种。前者软件编写简单,但在按键数量较多时特别浪费I0口资源,一般用于按键数量少的系统。后者适用于按键数量较多的场合,但是在单片机I0 口资源相对较少而需要较多按键时,此方法仍不能满足设计要求。本系统要求的按键控制不多,且I0口足够,可直接采用独立式。2.2.4 紧
27、急处理交通路口出现紧急状况在所难免,如特大事件发生,救护车等急行车通过等,我们都必须尽量允许其畅通无阻,毕竟在这种情况下是分秒必争的,时时刻刻关系着公共财产安全,个人生死攸关等。由此在交通控制中增设禁停按键,就可达到想此目的。2.3 单片机交通控制系统的基本构成及原理单片机设计交通灯控制系统,可用单片机直接控制信号灯的状态变化,基本上可以指挥交通的具体通行。当然,接入LED数码管就可以显示倒计时以提醒行使者,更具人性化。键盘设置模块对系统输入模式选择及具体通行时间设置的信号,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到LED数码管上实时显示。在此过程中还要实时捕捉违
28、规检测和紧急按键信号,以达到对异常状态进行实时控制的目的。急停按键和违规检测随时调用中断。在模式选择上,若为自动模式,将到达一定时间将修正通行时间一满足不同路况的需要。3. 系统硬件电路的设计3.1 系统硬件总电路构成及原理实现本设计要求的具体功能,可以选用STC89C52RC单片机及外围器件构成最小控制系统,12个发光二极管分成4组红绿黄三色灯构成信号灯指示模块,两个两位共阴数码管构成倒计时显示模块,若干按键组成时间设置和紧急按钮等。3.1.1 系统硬件电路构成本系统以单片机为核心,状态灯,LED显示,按键。其具体的硬件电路总图如图3.1所示。其中P0,P2,用于送显两片LED数码管,P1用
29、于控制红绿黄发光二极管,XTAL1和XTAL2接入晶振时钟电路,REST引脚接上复位电路,P3.2接东西禁止通行键,P3.3接南北禁止通行键,P3.0接调时方向切换键,P2.7调完确认键,P1.6调整倒计时加1键, P1.7调整倒计时减1键。3.1.2 系统工作原理系统上电或手动复位之后,系统显示状态灯及LED数码管,将状态码值送显P0口,将要显示的时间值的个位和十位分别送显P2.0_2.3口,在此同时以50ms为周期,用软件方法计时1秒,到达1s就要将时间值减1,刷新LED数码管。时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次状态的相应状态码值以及时间值,3.2 单片机的
30、选择3.2.1 单片机的概述单片微型计算机简称单片机,又称微控制器,嵌入式微控制器等,属于第四代电子计算机。它把中央处理器、存储器、输入/输出接口电路以及定时器/计数器集成在一块芯片上,从而具有体积小、功耗低、价格低廉、抗干扰能力强且可靠性高等特点,因此,适合应用于工业过程控制、智能仪器仪表和测控系统的前端装置。正是由于这一原因,国际上逐渐采用微控制器(MCU)代替单片微型计算机(SCM)这一名称。“微控制器”更能反映单片机的本质,但是由于单片机这个名称已经为国内大多数人所接受,所以仍沿用“单片机”这一名称。单片机的主要特点有:1)具有优异的性能价格比。2)集成度高、体积小、可靠性高。3)控制
31、功能强。3.2.2 STC89C52RC芯片的主要性能芯片STC89C52RC是宏晶公司生产的带2K字节快闪存储器的8位单片机。它具有如下的一些特性:1.指令和89C51产品兼容 8.内含2K字节可重复编程快闪存储器2.耐久性1,000写/擦除周期 9. 2.7V6V的工作电压范围3.全静态操作0Hz24MHz 10.二级程序存储器加锁4.内含128*8位内部RAM 11.15根可编程I/0引线5.2个16位的计数器/定时器 12.6个中断源6.带有可编程串行通讯口 13.可直接驱动LED输出7.片内模拟电压比较器 14.低功耗空载和掉电方式另外,该单片机还具有体积小,价格低等特点。3.2.3
32、 STC89C52RC芯片的内部结构框图STC89C52RC是一带有2K字节快闪可编程可擦除存储体(EEPROM)的低电压、高性能8位CMOS微型计算机。它采用ATMEL的高密非易失存储技术制造并和工业标准MCS51指令集和引脚结构兼容。通过在单块芯片上组合通用的CPL1和快闪存储器,ATMEL公司生产的STC89C52RC是一强劲的微型计算机,它对许多嵌入式控制的应用,提供了一种高度灵活和成本低的解决办法。图3.2为STC89C52RC的内部结构框图。图3.2 STC89C52RC内部结构图3.2.4 STC89C52RC芯片最小系统一个最简单的单片机系统包括晶振、复位、电源、系统的输入控制
33、、输出显示,以及其他外围模块(如通信、数据采集等)。(1)时钟电路首先介绍一下单片机的晶振电路,即时钟电路。单片机的工作流程,就是在系统时钟的作用下,一条一条地执行存储器中的程序。单片机的时钟电路由外接的一只晶振和两只起振电容,以及单片机内部的时钟电路组成,晶振的频率越高,单片机处理数据的速度越快,系统功耗也会相应增加,稳定性也会下降。单片机系统常用的晶振频率有6MHz、110592MHz、12MHz、本系统采用110592MHz晶振,电容选22pF或30pF均可。(2)复位电路系统刚上电时,单片机内部的程序还没有开始执行,需要一段准备时间,也就是复位时间。一个稳定的单片机系统必须设计复位电路
34、。当程序跑飞或死机时,也需要进行系统复位。复位电路有很多种,有上电复位,手动复位等。 (3) EA脚的功能及接法单片机的EA脚控制程序从内部存储器还是从外部存储器读取程序。由于现在单片机内部的flash容量都很大,因此基本都是从内部的存储器读取程序,即不需要外接ROM来存储程序,因此,EA脚必须接高电平。本设计中复位方式采用上电复位方式,时钟采用外部时钟。3.3硬件介绍及连接3.3.1 八段LED数码管LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。LED数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。以八段共阳管为例,它有8个发光二极管(比七段多
35、一个发光二极管,用来显示sP,即点),每个发光二极管的阳极连在一起,如图3.6所示。这样,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制。为方便起见,本文主要讨论共阳八段LED数码显示管,其他类形的显示管与其类似。图3.6 LED数码管LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如 dp,g,f,e,d,c,b,a全亮显示为,采用共阳极连接驱动代码,代码表如下表3.1所示。3.1 驱动代码表显示数值dp,g,f,e,d,c,b,a驱动代码011010000C0H111111001F9H210100
36、100A4H310110000B0H41001100199H51001001092H61000001082H711111000F8H81000000080H91001000090H 相应在程序软件上,可以通过调用程序给定的秒值经过特定计算算出需要显示的个位和十位,然后有DPTR调取LEDMAP的代码。LED8段数码管的设置为每个方位上的一对2为显示器。四个方位上总共用8个LED接在单片机的IO口上。虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的IO口是对称的。3.3.2其它器件(1)发光二极管根据本设计的特点,红绿灯的显示不可少,红绿灯的显示采用普通的发光二极管。每个方向上设置
37、红绿黄灯,总共4组。如果东西红灯亮,那南北方向就是绿灯亮,反之亦然,所以在硬件上连接图上也是对称分布的。(2)按键控制本设计设置了有6个键如下图,,个按键一端接地。低电平有效,当按键按下端口接地,单片机捕获到低电平,从而知道相应的输入信息。如下图3.10所示。图3.10 按键示意图4.系统软件程序的设计4.1程序主体设计流程全部控制程序实际上分为若干模块:键盘设置处理程序,状态灯控制程序,LED显示程序,消抖动延时程序,次状态判断及处理程序,紧停或违规判断程序,中断服务子程序,车流量计数程序,红绿灯时间调整程序等。整个软件程序方面主要分两大部分:按键处理程序和50ms扫描程序。流程图如图4.1
38、所示。图4.1 系统总流程图首先是按键处理程序,89C52通过对IO扫描,确定是否有键按下,再判断具体是那个键按下,根据键值跳转到按键处理程序。若想重新设置则要按下复位键。设置过后进入50ms扫描程序。50ms扫描程序开始后,先刷新显示模块,若为自动模式则接下来要计数车流量,然后扫描紧停信号和违规信号,若捕获则调用中断,中断服务子程序主要启动蜂鸣器,直至恢复键按下。50ms已到则重新扫描。扫描20次之后计时到达1s则时间数据减1,在显示模块中修改显示缓冲区内容。然后调用红绿灯时间调整程序,更新红绿灯时间。当前状态时间已到,则判断其状态装入相应数据,然后进入下一状态。4.2 系统软件的理论基础知
39、识4.2.1 定时器原理定时器工作的基本原理其实就是给初值,让它不断加1直至减完为模值,这个初值是送到TH和TL中的。它是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值,即所要求的计数值设定为C,把计数初值设定为TC 可得到如下计算通式:TC=M-C式中,M为计数器模值。计数值并不是目的,目的是时间值,设计1次的时间,即定时器计数脉冲的周期为T0,它是单片机系统主频周期的12倍,设要求的时间值为T,则有C=TT0。计算通式变为:T=(MTC)T0模值和计数器工作方式有关。在方式0时M为8192;在方式1时M的值为65536;在方式2和3为256
40、。就此可以算出各种方式的最大延时。如单片机的主脉冲频率为12MHZ,经过12分频后,若采用方式最大延时只有8.129毫秒,采用方式最大延时也只有65.536毫秒。这就是为什么扫描周期为50ms的原因,若使用软件则会耽搁程序流程,显然不可行。相反,时间计时方面却不可能只用计数器,因为显然秒钟已经超过了计数器的最大定时间,所以我们还必须采用定时器和软件相结合的办法才能解决这个问题。4.2.2 软件延时原理MCS-51的工作频率为12MHZ,机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/12MHZ)=1us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的
41、执行条数来确定1秒的时间,但同时由于单片机的运行速度很快其他的指令执行时间可以忽略不计。我们设定一个初值为20的软件计数器和使T0定时50毫秒。这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减,然后判断它是否为零。为零表示秒已到。设定定时器需要定时50毫秒,故T0必须工作于方式。 4.2.3 中断原理本系统主要使用了外部中断,中断信号有引脚INT0和INT1输入,低电平有效,CPU每个时钟周期都会检测INT0和INT1上的信号,单片机允许外部中断以电平方式或负边沿方式两种中断方式输入中断请求信号,可由用户通过设置TCON中
42、IT0和IT1位的状态来实现。以IT0为例,IT0=0,为电平触发方式,IT0=1,为负边沿触发方式,本设计采用电平方式,IE0为其中断标志位,有中断信号则置位,中断服务子程序响应后,IE0自动清零。IE中的EA为允许中断的总控制位,为1开启,EX0为外部中断允许控制位,为1开启。在优先级的允许下,一旦有外部中断信号产生,单片机CPU首先保护断点,PC值进栈,然后执行相应的中断服务子程序,执行完后,用RETI指令返回,此时CPU会从堆栈中取保存的断点地址,送回PC,程序再正常执行。4.3 子程序模块设计4.3.1 按键扫描程序首先程序不断扫描按键,对应O端口的3.0,P3.1,P3.2, P2
43、.7 P1.6 P1.7低电平有效,按键顺序是指定的,然后进入下一程序。程序的开始要判断是否有键按下,与值为1则表示没有键按下,为0则表示有键按下。程序如下:void key_to1()TR0=0; /关定时器if(set=0)set_timenb+; /南北加1Selseset_timedx+; /东西加1Sif(set_timenb=100)set_timenb=1;if(set_timedx=100)set_timedx=1; /加到100置1sec_nb=set_timenb ; /设置的数值赋给东西南北sec_dx=set_timedx;void key_to2()TR0=0; /关
44、定时器if(set=0)set_timenb-; /南北减1Selseset_timedx-; /东西减1Sif(set_timenb=0)set_timenb=99;if(set_timedx=0 )set_timedx=99; /减到1重置99sec_nb=set_timenb ; /设置的数值赋给东西南北sec_dx=set_timedx;void key_to3() /键盘处理之紧急车通行TR0=0;P1=0Xf6;sec_dx=00;sec_nb=00;void int0(void) interrupt 0 using 1 /东西强行TR0=0;P1=0XF3;sec_dx=00;s
45、ec_nb=00;int0_time=1;void int1(void) interrupt 2 using 1 /南北强行TR0=0;P1=0XDE;sec_nb=00;sec_dx=00;int0_time=1;4.3.2 状态灯显示在本设计中,实际控制的灯只有6个,即:东西红灯,东西绿灯,东西黄灯,南北红灯,南北绿灯,南北黄灯。定义IO端口如下,其中均是低电平有效。sbit Yellow_nb=P14;/南北黄灯sbit Yellow_dx=P11;/东西黄灯sbit Green_nb=P15;sbit Green_dx=P12;各LED亮灭状态程序如下:void time0(void)
46、 interrupt 1 using 1 /定时中断子程序b+;if(b=19) / 定时器中断次数b=0;sec_dx-;sec_nb-;if(sec_nb=5&time=0) /东西黄灯闪 Green_dx=1;Yellow_dx=!Yellow_dx; if(sec_dx=5&time=1) /南北黄灯闪 Green_nb=1;Yellow_nb=!Yellow_nb; if(sec_dx=0&sec_nb=5) sec_dx=5;if(sec_nb=0&sec_dx=5)sec_nb=5;if(time=0&sec_nb=0) P1=0xDE;time=!time;sec_nb=set_timenb;sec_dx=set_timenb+5;if(time=1&sec_dx=0)P1=0Xf3;time=!time;sec_dx=set_timedx;sec_nb=set_timedx+5;4.3.3 LED倒计时显示具体程序如下:void display()buf1=sec_dx/10; /