《智能交通灯控制系统 毕业设计说明书.doc》由会员分享,可在线阅读,更多相关《智能交通灯控制系统 毕业设计说明书.doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录1引言12 89C51单片机的介绍33方案设计与论证83.1电源提供方案83.2显示界面方案83.3输入方案94系统硬件设计94.1总体设计94.2各功能模块硬件设计及实现94.2.1交通灯四种通行模式及行车方向指示94.2.2键盘与状态显示及其实现124.2.3数码管显示电路124.2.4交通灯系统硬件电路图(见附一)145系统软件设计145.1软件总体流程图145.2软件主要程序流程155.2.1每秒钟的设定155.2.2按键中断程序165.2.3数码管显示程序176系统调试与测试结果246.1软件调试246.2硬件调试246.3软硬联调247参考文献25附一1智能交通灯控制系统摘要:
2、 交通事业蓬勃发展,交通流量年年增长,大、中、小城市的汽车、摩托车等各种车辆与日俱增,道路交通繁忙,经常有严重堵车现象,特别是在交叉口,机动车、非机动车、行人来往非常混乱,为了在叉口的各条干道实现合理的科学分流。本人根据单片机具有物美价廉、功能强、使用方便灵活、可靠性高等特点,提出了一种用STC89c51单片机自动控制交通信号灯及时间显示的方法,同时给出了软硬件的实现方法,为交通指挥自动化提供了一种新的廉价手段,具有一定的推广意义。本文介绍了控制基本原理以及控制的表现,同时也介绍了城市交通信息系统的设计目标, 开发途径及其系统结构与功能和数据地理编码、建库, 同时, 论述了系统中交通现状、交通
3、管理、交通规划及背景信息查询模块的建造及应用。介绍了用于城市交叉路口的三色程控交通信号时间显示器的研制方案,对其电源供电、发光二极管构成的负载结构、灯色时间检测都给出了精巧合理的优化结构,大幅度地提高了产品可靠性并降低了制造成本。关键词:8051单片机;交通灯;自动控制;时间显示器;1引言交通灯通常指由红、黄、绿三种颜色灯组成用来指挥交通的信号灯。绿灯亮时,准许车辆通行,黄灯亮时,已越过停止线的车辆可以继续通行;红灯亮时,禁止车辆通行。19世纪初,在英国中部的约克城,红、绿装分别代表女性的不同身份。其中,着红装的女人表示我已结婚,而着绿装的女人则是未婚者。后来,英国伦敦议会大厦前经常发生马车轧
4、人的事故,于是人们受到红绿装启发,1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德哈特设计、制造的灯柱高7米,身上挂着一盏红、绿两色的提灯-煤气交通信号灯,这是城市街道的第一盏信号灯。在灯的脚下,一名手持长杆的警察随心所欲地牵动皮带转换提灯的颜色。后来在信号灯的中心装上煤气灯罩 ,它的前面有两块红、绿玻璃交替遮挡。不幸的是只面世23天的煤气灯突然爆炸自灭,使一位正在值勤的警察也因此断送了性命。 从此,城市的交通信号灯被取缔了。直到1914年,在美国的克利夫兰市才率先恢复了红绿灯,不过,这时已是“电气信号灯”。稍后又在纽约和芝加哥等城市,相继重新出
5、现了交通信号灯。随着各种交通工具的发展和交通指挥的需要,第一盏名副其实的三色灯(红、黄、绿三种标志)于1918年诞生。它是三色圆形四面投影器,被安装在纽约市五号街的一座高塔上,由于它的诞生,使城市交通大为改善。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯
6、是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。其实,用这三色来作交通讯号和人的视觉机能结构和心理反应有关。 我们的视网膜含有杆状和三种锥状感光细胞。杆状细胞对黄色的光特别敏感,三种锥状细胞则分别对红光、绿光及蓝光最敏感。由于这种视觉结构,人最容易分辨红色与绿色。虽然黄色与蓝色也容易分辨,但因为眼球,对蓝光敏感的感光细胞较少,所以分辨颜色,还是以红、绿色为佳。所以,交通灯用什么颜色也是有大学问的呀 ! 颜色也有活动 (activity)的含意,要表达热或剧烈的话,最强是红色,其次是黄色。绿色则有较冷及平静的含意。因此,人们常以红色代表危险,黄色
7、代表警觉,绿色代表安全。 而且,由于红光的穿透力最强,其他颜色的光很容易被散射,在雾天里就不容易看见,而红光最不容易被散射,即使空气能见度比较低,也容易被看见,不会发生事故。所以我们用红色表示禁止。 黄色信号灯的发明者是我国的胡汝鼎,他怀着“科学救国”的抱负到美国深造,在大发明家爱迪生为董事长的美国通用电器公司任职员。一天,他站在繁华的十字路口等待绿灯信号,当他看到红灯而正要过去时,一辆转弯的汽车呼地一声擦身而过,吓了他一身冷汗。回到宿舍,他反复琢磨,终于想到在红、绿灯中间再加上一个黄色信号灯,提醒人们注意危险。他的建议立即得到有关方面的肯定。于是红、黄、绿三色信号灯即以一个完整的指挥信号家族
8、,遍及全世界陆、海、空交通领域了。中国最早的马路红绿灯,是于1928年出现在上海的英租界。从最早的手牵皮带到20世纪50年代的电气控制,从采用计算机控制到现代化的电子定时监控,交通信号灯在科学化、自动化上不断地更新、发展和完善。 交通指挥灯是非裔美国人加莱特摩根在1923年发明的。此前,铁路交通已经使用自动转换的灯光信号有一段时间了。但是由于火车是按固定的时刻表以单列方式运行的,而且火车要停下来不是很容易,因此铁路上使用的信号只有一种命令:通行。公路交通的红绿灯则不一样,它的职责在很大程度上是要告诉汽车司机把车辆停下来。 开车的人谁也不愿意看到停车信号。美国夏威夷大学心理学家詹姆斯指出,人有一
9、种将刹车和油门与自尊相互联系的倾向。他说:驾车者看到黄灯亮时,心里便暗暗作好加速的准备。如果此时红灯亮了,马上就会产生一种失望的感觉。他把交叉路口称作“心理动力区”。如果他的理论成立的话,这个区域在佛罗伊德心理学理论中应该是属于超我而非本能的范畴。 新式的红绿灯能将闯红灯的人拍照下来。犯事的司机不久就会收到罚款单。有的红绿灯还具备监测车辆行驶速度的功能。 最早的交通灯出现于一八六八年英国伦敦。那时的交通灯只有红、绿两色,经改良后,再增加一盏黄色的灯,红灯表示停止,黄灯表示准备,绿灯则表示通行。随着经济的发展,交通运输中出现了一些传统方法难以解决的问题。道路拥挤现象日趋严重,造成的经济损失越来越
10、大,并一直保持大比例的增长。现在交通系统已不能满足经济发展的需求。由于生活水平的提高,人们对交通运输的安全性及服务水平提出了更高的要求。在交通中管理引入单片机交通灯控制代替交管人员在交叉路口服务,有助于提高交通运输的安全性、提高交通管理的服务质量。并在一定程度上尽可能的降低由道路拥挤造成的经济损失,同时也减小了工作人员的劳动强度。 中国车辆数量不断增加,交通管制的工作量越来越大,利用计算机代替人进行高效交通管理是必然的发展趋势,而让计算机控制的交通灯拥有类似人类的感知智能,具有很强的现实意义,比如通过摄像机让交通灯控制系统获得视觉感知功能,就可以代替人类的眼睛,使系统根据所“看到”交通情况自适
11、应改变管制策略,提高了交通管理的自动化水平,使得交通更高效、更顺畅。2 89C51单片机的介绍2.1 MCS-51单片机的逻辑结构及信号引脚图1 MCS-51 单片机的结构框图2.2 MCS-51单片机的逻辑结构(1)中央处理器(CPU)中央处理器简称CPU,是单片机的核心,完成运算和控制操作。按其功能,中央处理器包括运算器和控制器两部分电路。(2)运算器电路功能:单片机的运算部件,用于实现算术和逻辑运算。(3)控制器电路功能:单片机的指挥控制部件,保证单片机各部分能自动而协调地工作。(4)内部数据存储器组成:RAM(1288)和RAM地址寄存器等。功能:用于存放可读写的数据。(5)内部程序存
12、储器组成:ROM(4K8))和程序地址寄存器等。功能:用于存放程序和原始数据。(6)定时器计数器80C51共有两个16位的定时器计数器。功能:实现定时或计数功能,并以其定时或计数结果对单片机进行控制,以满足控制应用的需要。(7)并行I/O口MCS-51共有4个8位的I/O口(P0、P1、P2、P3)功能:实现数据的并行输入输出。(8)串行口MCS- 51单片机有一个全双工的串行口。功能;以实现单片机和其它数据设备之间的串行数据传送。(9)中断控制系统80C51共有5个中断源,即外中断2个,定时计数中断2个,串行中断1个。全部中断分为高级和低级共两个优先级别。(10)时钟电路MCS- 51芯片的
13、内部有时钟电路,但石英晶体和微调电容需外接。功能:时钟电路为单片机产生时钟脉冲序列。典型的晶振频率:6MHz、11.0592MHz、12MHz。(11)位处理器位处理器称为布尔处理器。功能:以状态寄存器中的进位标志位C为累加位,可进行各种位操作。(12)总线总线:连接计算机各部件的一组公共信号线。分类:地址总线、数据总线和控制总线。 作用:减少了单片机的连线和引脚,提高了集成度和可靠性。2.3 MCS-51的信号引脚80C51是标准的40引脚双列直插式集成电路芯片,引脚排列如图所示。(1) 信号引脚介绍图2 80C51芯片引脚排列图输入输出口线P0.0P0.7 P0口8位双向口线P1.0P1.
14、7 P1口8位双向口线P2.0P2.7 P2口8位双向口线P3.0P3.7 P3口8位双向口线ALE 地址锁存控制信号功能:a)在系统扩展时,ALE用于控制把P0口输出的低8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。如图所示。图3单片机程序存储器扩展连接图b)ALE是以六分之一晶振频率的固定频率输出的正脉冲,可作为外部时钟或外部定时脉冲使用。/PSEN 外部程序存储器读选通信号在读外部ROM时/PSEN有效(低电平),以实观外部ROM单元的读操作。/EA 访问程序存储器控制信号当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当/EA信号为高电平时,对ROM的读操作
15、是从内部程序存储器开始,并可延续至外部程序存储器。RST 复位信号当输入的复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位操作。XTAL1和XTAL2外接晶体引线端当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。VSS地线Vcc5V电源(2)信号引脚的第二功能 “复用”即给一些信号引脚赋予双重功能。第二功能信号定义主要集中在P3口线中,另外再加上几个其它信号线。常见的第二功能信号P3口线的第二功能P3口8条口线都定义有第二功能,如表所示。图4 P3口的第二功能EPROM存储器程序固化所需要的信号编程脉冲:30脚(ALE/P
16、ROG)编程电压(25V):31脚(/EA/Vpp)备用电源引入备用电源是通过9脚(RST/VPD)引入的。当电源发生故障,电压降低到下限值时,备用电源经此端向内部RAM提供电压,以保护内部RAM中的信息不丢失。说明:a)第一功能信号与第二功能信号是单片机在不同工作方式下的信号,因此不会发生使用上的矛盾。b)P3口线先按需要优先选用它的第二功能,剩下不用的才作为I/O口线使用。(3)89C51的复位电路8051的复位方式可以是上电复位,也可以是上电按键复位,见下图。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。图5复位电路2.4
17、8255芯片简介8255可编程并行接口芯片简介:8255可编程并行接口芯片有三个输入输出端口,即A口、B口和C口,对应于引脚PA7PA0、PB7PB0和PC7PC0。其内部还有一个控制寄存器,即控制口。通常A口、B口作为输入输出的数据端口。C口作为控制或状态信息的端口,它在方式字的控制下,可以分成4位的端口,每个端口包含一个4位锁存器。它们分别与端口A配合使用,可以用作控制信号输出或作为状态信号输入。8255可编程并行接口芯片方式控制字格式说明:8255有两种控制命令字;一个是方式选择控制字;另一个是C口按位置位复位控制字。其中C口按位置位复位控制字方式使用较为繁难,说明也较冗长,故在此不作叙
18、述,需要时用户可自行查找有关资料方式控制字格式说明如表1: D7D6D5D4D3D2D1D0图6 D7:设定工作方式标志,1有效。 D6、D5:A口方式选择 0 0 方式0 0 1 方式1 1 方式2 D4:A口功能 (1=输入,0=输出) D3:C口高4位功能 (1=输入,0=输出) D2:B口方式选择 (0=方式0,1=方式1) D1:B口功能 (1=输入,0=输出)D0:C口低4位功能 (1=输入,0=输出) 8255可编程并行接口芯片工作方式说明: 方式0:基本输入输出方式。适用于三个端口中的任何一个。每一个端口都可以用作输入或输出。输出可被锁存,输入不能锁存。 方式1:选通输入输出方
19、式。这时A口或B口的8位外设线用作输入或输出,C口的4条线中三条用作数据传输的联络信号和中断请求信号。方式2 :双向总线方式。只有A口具备双向总线方式,8位外设线用作输入或输出,此时C口的5条线用作通讯联络信号和中断请求信号。2.5串口电平转换芯片MAX232MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。内部结构基本可分三个部分:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通
20、道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚DNG、16脚VCC(+5v)。图7 MAX232芯片各管脚解法图3方案设计与论证此交通灯方案实现了基本的交通工作原理,并且加入了禁左行车时间,有两种工作模式,
21、白天的时候车流量比较大启动模式1,当到了晚上车流量相对少了启动模式2,这样就避免了晚上没车时候等候时间过长的因素。3.1电源提供方案为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。综上所述,我们选择第二种方案。3.2显示界面方案该系统要求完成倒计时、状态灯等功能。基于上述原因,我们考虑了三种方案:方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字苻
22、,无法胜任题目要求。方案二:完全采用点阵式LED 显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。方案三:采用数码管与点阵LED 相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现的复杂度。权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。3.3输入方案题目要求系统能手动设灯亮时间、夜间模式处理,我们讨论了两种方案:方案一:采用8155扩展I/O 口及键盘,显示等。该方案的优点是:使用
23、灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。方案二: 直接在IO口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用两个按键,分别是K1、K2由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用,故选择方案二。4系统硬件设计硬件设计是整个设计的基础,要考虑的方方面面很多,除了实现交通灯的基本功能外,主要还要考虑如下几个因素:系统稳定度;器件的通用性或易选购性;软件编程的易实现性;系统其他功能及性能指标;因此硬件设计至关重要。先从各功能模块的实现之歌进行分析探讨。4.1总
24、体设计本设计一单片机为控制核心,采用单MCU结构,模块化设计,共分为以下几个功能模块:单片机控制系统、键盘及状态显示、行车方向显示、和倒计时模块等。单片机作为整个硬件系统的核心,他既是谐调整机工作的控制器,又是数据处理器。它由单片机、时钟电路、复位电路等组成。行车方向指示灯采用三种颜色的LED发光管,分别为红、黄、绿,红和绿指示禁止与放行,形象直观。键盘采用按键。分别控制模式1和模式2。系统采用单数码管倒计时功能,最大显示数字为99。有好的人机界面、灵活的控制方式、优化的物理结构以及丰富的功能是本设计的亮点。主单片基行车方向指示键盘与状态显示倒计时图8 系统总体设计框图4.2各功能模块硬件设计
25、及实现4.2.1交通灯四种通行模式及行车方向指示按交通灯控制规则,每个街口有左拐、直行、等待、三种指示灯。交道口模型图:图9 交道口模型图4个LED灯按照设置的通行时间变化,LED显示南北、和东西方向的等待时间开始南北方向为60秒,而东西方向为40秒就行倒计时,共有四种通行方式,分别为图10a通行方式一 图10b 通行方式二图10c通行方式三 图10d通行方式四 图11a 模式一下的通行方式一 图11b 模式一下的通行方式二 图11c 模式一下的通行方式三 图11d 模式一下的通行方式四当处于模式1时:通行方式一:倒计时时间为60秒(等待时间),红绿灯状态:只限东西方向左拐,所以南北方向为红,
26、东西方向左拐LED灯亮,持续10秒钟。如图9b和图10b。通行方式二:倒计时时间为50秒(等待时间),红绿灯状态:东西方向直行,南北方向禁行,所以南北方向为红灯,东西方向直行LED灯亮,持续50秒。如图9a和10a。通行方式三:倒计时时间为40秒(等待时间),红绿灯状态:只限南北方向左拐,所以东西方向为红灯,南北方向左拐LED灯亮,持续10秒钟。如图9d和图10d。通行方式四:倒计时时间为30秒(等待时间),红绿灯状态:南北方限制性,东西方向禁行,所以东西方向为红灯,南北方向直行LED灯亮,持续30秒。如图9c和10c。通行方式二和四,在通行还剩五秒的时候,这是黄灯开始工作,绿灯在倒计时还剩5
27、秒的时候灭,然后黄灯开始闪烁,提醒司机快红灯了。当处于模式2时:通行方式五:倒计时时间为40秒(等待时间),红绿灯状态:只限东西方向左拐,所以南北方向为红,东西方向左拐LED灯亮,持续10秒钟。如图9b。通行方式六:倒计时时间为30秒(等待时间),红绿灯状态:东西方向直行,南北方向禁行,所以南北方向为红灯,东西方向直行LED灯亮,持续50秒。如图9a。通行方式七:倒计时时间为20秒(等待时间),红绿灯状态:只限南北方向左拐,所以东西方向为红灯,南北方向左拐LED灯亮,持续10秒钟。如图9d。通行方式八:倒计时时间为10秒(等待时间),红绿灯状态:南北方限制性,东西方向禁行,所以东西方向为红灯,
28、南北方向直行LED灯亮,持续30秒。如图9c。通行方式六和八,在通行还剩五秒的时候,这是黄灯开始工作,绿灯在倒计时还剩5秒的时候灭,然后黄灯开始闪烁,提醒司机快红灯了。4.2.2键盘与状态显示及其实现键盘在本设计中用于更换红绿灯工作模式的手动控制装置,以及复位时间,起到了不可或缺的重要作用。我们选用两个按钮来作为控制装置,分别为K1,K2,当按下K1启动模式1,当按下K2启动模式2。独立式是一组相互独立的按健,这些按健可直接与单片机的1/O口连接,即每个按健独占一条口线,接口简单。独立式键盘因占用单片机的硬件资源较多,只适合按键较少的场合。图12 键盘4.2.3数码管显示电路数码管在其中要加相
29、应大小的上拉电阻,上拉电阻的作用就是增大电流,是数码管更亮,在此设计中,由于I/O接口数量足够,所以采用数码管静态显示方法,这样虽然浪费I/O接口,但是本设计条件允许,并且使软件设计更简单,更容易。采用的数码管为共阴极,所用公共端接地。数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将
30、公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。图13数码管显示电路图中的电阻为上拉电阻。LED显示器中的发光二极管共有两种连接方法:共阳极接法把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接5V。阴极端输入低电平的段发光二极管导通点亮,输入高电平的则不点亮。共阴极接法把发光二极管的阴极连在
31、一起构成公共阴极。使用时会共阴极接地,阳极端输入高电平的段发光二极管导通点亮,输入低电平的则不点亮。图14 LED显示器用LED显示器显示十六进制数的字型代码如下表所示:显示数值dop g f e d c b a 驱动代码(16进制)00 0 1 1 1 1 1 1 3FH1 0 0 0 0 0 1 1 006H2 0 1 0 1 1 0 1 15BH3 0 1 0 0 1 1 1 14FH4 0 1 1 0 0 1 1 066H5 0 1 1 0 1 1 0 06DH6 0 1 1 1 1 1 0 07DH7 0 0 0 0 0 1 1 107H8 0 1 1 1 1 1 1 17FH图15
32、 数码管驱动代码表4.2.4交通灯系统硬件电路图(见附一)5系统软件设计硬件平台结构一旦确定,大的功能框架即形成。软件在硬件平台上构筑,完成各部分硬件的控制和协调。系统功能是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,如那件事本系统的灵魂。软件采用C语言,不仅易于编程和调试,也可减少软件故障率和提高软件的可靠性。同时,对软件进行全面测试也是检验错误排除故障的重要手段。由于变成多涉及到数值运算,比较复杂,这里我们选择移植性好、结构清晰、能进行复杂运算的C语言来实现编程。5.1软件总体流程图软件总体设计及流程图见图16,主要完成各部分的软件控制和协调。本
33、系统主程序模块主要完成的工作是对系统的初始化,包括发送显示数据,LED的初始值设定,等待外部中断,以及根据所需要的功能进行相应的操作。其流程图如图15所示。开 始初 始 化取 键 值判断当前状态倒 计 时LED颜色工作模式图16 系统流程图主程序比较简单,初始化完成后,调用按键子程序,取得键值,并根据当前系统状态调用相应的子程序。5.2软件主要程序流程5.2.1每秒钟的设定延时方法可以有两种一中是利用MCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。MCS-51的工作频率为2-12MHZ,我们选用的8031单片机的工作频率为6MHZ。机器周期与主频有关,机器周期是主
34、频的12倍,所以一个机器周期的时间为12*(1/6M)=2us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。我们采用的是软延迟的方法。void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);其中给定z=1000为时间1秒。流程图如下图17延时函数流程图5.2.2按键中断程序它包含倒计时调整和模式切换两个状态。主程序中放了一个按键的判断指令,当有按键按下的时候,程序就自动的跳转到按键子程序处理。当检测到K1键按下的时候就自动返回到主程序,运行K1模式1,当检测刀K2按下时自动返回主程序,运行K2模
35、式。K1模式子程序:if(h=1|aa=1)i=9;j=4;P2=table3;g1=0;r2=0;g2=1;r1=1;y1=1;y2=1;h=1;if(h=1)i=9;j=6;P2=table5;g2=0;r1=0;r2=1;g1=1;y1=1;y2=1;h=1;K2模式子程序:if(h=0|aa=0)i=9;j=6;P2=table5;g1=0;r2=0;g2=1;r1=1;y1=1;y2=1;h=0;if(h=0)i=9;j=8;P2=table7;g2=0;r1=0;r2=1;g1=1;y1=1;y2=1;h=0;5.2.3数码管显示程序参照表2,数码管显示与16位进制时之间的关系建立
36、数组table=0x6f,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x3f;采用循环,将数组中的值按每秒键1的方法显示在数码管上,这就是冲9-0的倒计时。循环显示程序:for(;j11;j+) for(;i10;i+) P3=tablei; delay(500); z+; P2=tablej;i=0;j11 N Yi10 N YP3=tablei延时50秒z=z+1i=i+1P2=tableji=0j=j+1结束循环图18显示流程图其中P3位十位数码显示管显示数字,P2为个位数码管显示数字。5.3程序源代码#include#include#define
37、uint unsigned int /宏定义#define uchar unsigned charuchar i,j,z,h,tt,ii,jj,aa,bb;uchar code table=0x6f,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x3f;sbit gg1=P00;sbit gg2=P01;sbit y1=P12;sbit r1=P13;sbit g1=P14;sbit y2=P17;sbit r2=P16;sbit g2=P15;sbit key1=P10;sbit key2=P11;void delay(uint);void delay(u
38、int z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void main() gg1=1;gg2=1;aa=1;h=1;key1=1;key2=1;z=0;P3=0;P2=0;while(1) if(h=1|aa=1)i=9;j=4;P2=table3;g1=0;r2=0;g2=1;r1=1;y1=1;y2=1;h=1;if(h=0|aa=0)i=9;j=6;P2=table5;g1=0;r2=0;g2=1;r1=1;y1=1;y2=1;h=0; for(;j11;j+) for(;i=5)gg1=0; g1=1;if(h=0)if(P3=0x3f) &
39、(j=7)gg1=0; g1=1;if(key1=0)aa=1;if(key1=0)aa=1;if(key2=0)aa=0;if(key2=0)aa=0;if ( P2=0x3f ) & ( i = 4 ) )g1=1;gg1=1;if(z=0)y1=0;if(z=1)y1=1;z+; P2=tablej;i=0; if(h=1)i=9;j=6;P2=table5;g2=0;r1=0;r2=1;g1=1;y1=1;y2=1;h=1;if(h=0)i=9;j=8;P2=table7;g2=0;r1=0;r2=1;g1=1;y1=1;y2=1;h=0;for(;j11;j+)for(;i=7)gg2=0; g2=1;if(h=0)if(P3=0x3f) & (j=9)gg2=0; g2=1;if(key1=0)aa=1;if(key1=0)aa=1;if(key2=0)aa=0;if(key2=0)aa=0;if ( P2=0x3f ) & ( i = 4 ) )g2=1; gg2=1;if(z=0)y2=0;