姚福安 万 鹏
摘要本系统由单片机系统、键盘、LCD显示、交通灯演示系统组成。系统包括人行道、左转、右转,以及基本的交通灯的功能。系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、语音提示、LCD信息显示、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。
方案设计与论证
1.电源提供方案
为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案:
方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。
方案二:采用单片机控制模块提供电源。该方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。
综上所述,我们选择第二种方案。
2.显示界面方案
该系统要求完成倒计时、信息提示等功能。基于上述原因,我们考虑了三种方案:
方案一:完全采用LCD显示。这种方案只显示有限的符号和数码字苻,无法胜任题目要求。
方案二:完全采用点阵式LCD显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便地显示各种英文字符、汉字、图形等。
方案三:采用LED与点阵LCD相结合的方法。因为设计既要求倒计时数字输出,又要求有汉字信息提示及图形输出等,为方便观看并考虑到现实情况,用LED与LCD分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现的复杂度。
权衡利弊,第三种方案可互补一、二方案的优缺点,我们决定采用方案三以实现系统的显示功能。
3.输入方案
题目要求系统能手动设灯亮时间、紧急情况处理,我们讨论两种方案:
方案一:采用8155扩展I/O口及键盘、显示等。该方案的优点是:使用灵活可编程,并且有RAM及计数器。若用该方案,可提供较多I/O口,但操作起来稍显复杂。
方案二: 采用ZLG7289来控制键盘及数码管显示。由于7289是串行控制方式,有专用的命令字,控制起来简单,且占用较少口线。
由于该系统对于交通灯及LCD的控制,只用单片机本身的I/O口就可实现,且本身的计数器及RAM已经够用,故选择方案二。
4.交通灯演示方案
采用在面板上焊接三色发光二极管模拟交通红绿灯,以发光二极管拼出小人状(并闪烁)/箭头状作为人行提示/左右转提示,简单明了。
系统设计
1.总体设计
⑴系统总框图如图1所示。其中,键盘控制电路采用2×8键盘,由单片机外接ZLG7289控制;单片机最小系统为系统的主控制器,用以控制其他模块协调工作;LCD显示模块用以显示提示信息,如天气、路况等,接口电路简单,由单片机控制;LED显示(倒计时)模块由单片机外接ZLG7289控制,经排线与交通灯演示模块相连,用以显示交通灯倒计时时间;控制接口电路用于连接单片机系统与交通灯演示模块,该电路含74lS139(二四译码器)、74lS373(数据锁存器),可使交通灯正常工作 ;交通灯演示模块用于演示系统的工作情况,该模块主要由发光二极管构成 ;语音提示模块采用现成的2532-120单段录放板(可录音及重复播放),用以完成语音提示。
(2)交通灯各状态说明。交通灯在通常工作条件中有五种状态:绿灯+人行道(S1) ;绿灯+右转(S2) ;黄灯(S3) ; 红灯+左转(S4) ;红灯(S5)五种状态。
状态说明:(S1)绿灯+人行道:车辆前行,行人可通过人行道;(S2)绿灯+右转:车辆可向前、向右行驶;(S3)黄灯:过渡状态;(S4)红灯+左转:车辆向左行驶,但不能前行;(S5)红灯:禁止通行与转弯(注:红黄绿等均为前行方向的信号指示灯,济南较大路口均为此种设计,只是左转、人行无红灯指示),图2为状态图。表1为真值表(注:R、G、Y、L、Rt、M分别表示红灯、绿灯、黄灯、左转、右转、人行道灯)。
本系统还设计了应急情况处理;在紧急情况下,设置交通灯状态。全红为东南西北所有方向禁止通行;南北红、东西绿为南北方向禁行,东西方向通行;东西红、南北绿为东西方向禁行,南北方向通行。
2.各模块设计
(1)单片机及键盘控制模块 单片机采用89C52。对交通灯的控制主要用其中的计数器定时来完成。一方面要完成对各模块的控制,另一方面也要协调好各模块的时序及口线冲突问题。
键盘采用7289串行控制。包括数字键0~9、时间设置键、回车键、紧急情况控制键、模式转换键、手动控制键及恢复键,时间设置可分别设计各方向的通行时间,其设置的时间应符合以下公式:
Tr1=Tg2+Ty2+Tl2+Tl1
Tg1=Tm1+Trt1
Tr2=Tg1+Ty1+Tl1+Tl2
Tg2=Tm2+Trt2
模式转换功能为根据交通状况切换到预先设定好的通行时间模式,或切换回原来模式。手动控制为手动控制各个方向的通行时间,具有灵活的特性。恢复键是从紧急状态或手动控制状态返回正常状态。
(2)LCD和LED显示模块 LED用来实现倒计时功能,可直接从7289的接口上接过来,其控制较为简单。
LCD用来显示提示信息及在时间设置时的提示功能,其电路如图3所示。
(3)交通灯演示模块交通灯用发光二极管代替,因为P2口过一段时间后其值会发生变化,故采用P2口加锁存器和P3口一起来控制。其电路图如图4。
软件系统
流程图如图5所示。在本刊的网站上(www.eleworld.com)给出了源程序,供读者参考。
根据方案设计的要求,调试过程共分三大部分:硬件调试、软件调试和软硬联调。
1.硬件调试
⑴交通灯演示电路的调试 交通灯模块由多个发光二极管组成,接线繁琐,极易出错。检查二极管无故障、导线无断线、连线接头无互相搭联后可先写一个软件调试程序,依次检查东南西北方向的指示灯(发光二极管)是否点亮;若未点亮,则可能是连线接错。根据灯的亮灭情况依次查找直到电路正常工作为止。
⑵倒计时电路调试倒计时电路主要由数码管组成。当交通灯程序写好后,倒计时的显示可与最小系统板上两组数码管显示比较(系统板上的这两组数码管用以检查倒计时工作情况)。
⑶语音提示电路的调试本系统采用现成的语音板。语音板上电后若不能工作,可将录音板首先复位,然后录音,再重放。依上操作,直到语音板正常工作。
⑷其它电路的调试 主要看接口以及连线是否正确。
2.软件调试
本系统的软件系统很大,全部采用汇编语言编写,除语法与逻辑差错外,当确认程序没问题时,直接下载到单片机仿真调试。采取自下到上的方法,单独调好每一个模块,最后完成一个完整的系统调试。
3.软硬联调
系统做好后,进行系统的完整调试。
(1)初始化后,两个方向通行时间完全相等。Tr1=Tr2=19s,Tg1=Tg2=12s,Ty1=Ty2=2s,Tl1=Tl2=5s,Trt1=Trt2=4s,Tm1=Tm2=8s,各灯运行及倒计时情况良好。
(2)按模式转换键后,按预先装入的模式2进行工作,完成后,会按重新设置的时间进行。
(3)按设置键后,进行时间设置
(4)按紧急预案键后,先出现全红状态,再按一下该键,又出现一方通行状态,再按,则另一方通行。如此循环。
按手动控制键后,进行手动控制,每按一次,灯会转到下一个状态。
按恢复键对上两者进行恢复到正常状态。