《基于单片机的交通灯控制系统设计_毕业论文(18页).doc》由会员分享,可在线阅读,更多相关《基于单片机的交通灯控制系统设计_毕业论文(18页).doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于单片机的交通灯控制系统设计_毕业论文-第 - 13 - 页兰州文理学院学生毕业论文题 目:基于单片机的交通灯控制系统 作 者: 指导老师: 电子信息工程 学院 电子 系 电子信息工程技术 专业 2011 级 三年 年制 一 班 2013年 11月 15 日基于单片机的交通灯控制系统摘要:介绍一种基于单片机的交通灯控制系统设计。本文在对目前交通控制进行深入分析的基础上,运用程序时间控制、传感器检测、实时调整智能化控制的实现技术,将传感器监测、实时调整车辆通行时间的算法与单片机控制作用相结合,提出了基于单片机的交通控制系统设计方案。硬件方面该方案主要是基于单片机的交通灯控制系统由单片机、交通
2、灯显示、LED倒计时、车流量检测及调整、违规检测、智能报警、紧急处理、时间模式手动设置等模块组成。系统除基本交通灯功能外,还具有通行时间手动设置、可倒计时显示、急车强行通过、车流量检测及调整、交通异常状况判别及处理等相关功能。理论证明该系统能够简单、经济、有效地疏导交通,提高交通路口的通行能力。 程序方面,编写适应某一地方的程序,输入到相应的单片机当中以调整时间、智能检测、以及智能报警等应用使之成为某一地方的一套独特的交通灯控制系统。这样可以保证高效安全的交通秩序,除了制定一系列的交通规则,还必须通过一定的科技手段加以实现。 本设计主要做了如下几方面的工作:一是确定系统交通控制的总体设计,包括
3、,十字路口具体的通行禁行方案设计以及系统应拥有的各项功能,二是进行传感器的硬件电路、显示电路等的设计和基本功能要求。关键字:交通控制;传感检测;单片机;智能时间控制Abstract This paper introduces a design of control system of traffic lights based on single chip microcomputer. Based on the current traffic control based on the thorough analysis, application time to achieve control,
4、sensor detection, real-time adjustment of intelligent control, sensor monitoring, real-time adjustments to traffic control algorithm and the role of single-chip combination, put forward the design scheme of traffic control system based on single chip microcomputer. The hardware aspect of the project
5、 is mainly composed of a traffic light control system based on single chip microcomputer, the traffic light display, LED countdown, traffic detection and adjustment, violation detection, intelligent alarm, emergency treatment, time mode manual settings module based on. In addition to the basic traff
6、ic lights function, but also with the passage of time manually, but the countdown display, urgent vehicle passing, distinguishing traffic detection and adjustment, and handling of traffic anomalies and other related functions. Theory shows that the system can simple, economic and effective relieves
7、traffic, improving the traffic intersection traffic capacity. The program, written to a local procedure, the input to the corresponding microcontroller to adjust the time, intelligent detection, and smart alarm application to become a place of a set of traffic lights unique control system. This can
8、ensure safe and efficient traffic order, except for a series of traffic rules, it must be achieved through certain means of science and technology. This design mainly do the following aspects of work: one is to determine the overall design, traffic control system includes a crossroads, specific traf
9、fic ban the function design and the system should have, the two is the hardware circuit for the sensor, display circuit design and the basic functional requirements.Key Words: Traffic control;sensor;SCM;intelligent control目录1 绪 论- 2 -1.1 完善交通灯的必要性- 2 -1.2交通灯的发展前景- 2 -1.2.1诞生- 3 -1.2.2黄色信号灯的发明- 3 -1.
10、2.3没有红绿灯的国家- 3 -1.2.4颜色采用原因- 4 -1.2.5触摸式红绿灯- 4 -1.2.6总结- 5 -2单片机交通灯控制系统的设计- 5 -2.1交通灯的大概方案- 5 -2.1.1直行道交通灯的状态如下:- 5 -我们假设路是由南向北的,则斑马线是东西方向。- 5 -2.1.2十字路口大概如下:- 5 -2.2系统硬件电路设计- 5 -2.2.1系统时钟电路- 6 -2.2.2系统复位电路- 6 -2.2.4路灯指示电路- 8 -2.2.5按键电路设计- 9 -3系统软件程序设计- 9 -3.1设计思路及关键技术- 9 -3.2 软件流程- 10 -系统总体流程图如图所示:
11、- 10 -3.3交通灯的设计程序说明- 10 -3.4 延时函数- 11 -3.5 延时函数- 11 -3.7定时器0中断函数- 12 -4总结及心得- 13 -5致谢- 13 -参考文献- 14 -附录- 14 -1 绪 论1.1 完善交通灯的必要性随着经济日益发展,人类物质要求不断改观,交通工具种类越来越多,交通量随之上涨,交通规则虽然不断完善,但交通事故频频不断。多少生命因此而终止?多少美满的家庭因此而破碎?悲剧一幕接着一幕上演。可是悲剧并没有因此而终止,交通规则再完善依然被无视,汽车喇叭如同虚设。所以本课题对基于单片机的交通灯控制系统进行设计。以单片机为控制核心,设计并制作交通灯控制
12、系统,用于十字路口的车辆及行人的交通管理。东西南北四个路口具有左拐、右拐、直行及行人4种通行指示灯,并分别用计时器显示路口通行转换剩余时间,在特种车辆如119、120通过路口时,系统可自动转为特种车辆放行,其他车辆禁止通行状态。 交通规则必须人人遵守,但是违反规则,如闯红灯等,也时有发生,交警等交通管理人员虽然可以进行实时监管,但是耗费精力,在路口设置检测传感器就可以进行自动的警报提示。 模拟交通信号灯的交替变换;最大限度的提高交通的顺畅交替运行。交通工具的爆炸性的发展,以及道路资源的有限性,交通控制就应运而生,在人类的生活、工作环境中,交通扮演着极其重要的角色,人们的出行都无时不刻与交通打着
13、交道。自18世纪工业革命以来,工业发展带动整个交通运输的发展,从而催生了单独的交通控制学问与管理机构。交通控制系统是近现代社会随着物流、出行等交通发展产生的一套独特的公共管理系统。要保证高效安全的交通秩序,除了制定一系列的交通规则,还必须通过一定的技术手段加以实现。现代人类科学技术,特别是电子科学技术的发展和成熟能比较好的解决系统建立中硬软件方面要求的技术难题。目前,交通控制方面的研究能完全实现自动智能化,甚至将整个区域整合成一个统一的系统范围,还能根据正常时段以及特定突发时段的情况进行科学的自动调整。交通对于社会的工业经济和人们的生活生产中有着十分重要的意义。随着单片机和传感技术的迅速发展,
14、自动检测领域发生了巨大变化,交通自动监测控制方面的研究有了明显的进展,并且必将以其优异的性能价格比,逐步取代传统的交通控制措施。1.2交通灯的发展前景 红绿灯(交通信号灯)是以规定之时间上交互更迭之光色讯号,设置于交岔路口或其他特殊地点,用以将道路通行权指定给车辆驾驶人与行人,管制其行止及转向之交通管制设施。1.2.1诞生 19世纪初,在英国中部的约克城,红、绿装分别代表女性的不同身份。其中,着红装的女人表示我已结婚,而着绿装的女人则是未婚者。后来,英国伦敦威斯敏斯会议大楼前经常发生马车轧人的事故,于是人们受到红绿装启发,1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞
15、生了,由当时英国铁路信号工程师德哈特设计、制造的灯柱高7米,身上挂着一盏红、绿两色的提灯-煤气交通信号灯,这是第一盏信号灯。在灯的脚下,一名手持长杆的警察随心所欲地牵动皮带转换提灯的颜色。后来在信号灯的中心装上煤气灯罩,它的前面有两块红、绿玻璃交替遮挡。不幸的是只面世23天的煤气灯突然爆炸自灭,使一位正在值勤的警察也因此断送了性命。 从此,城市的交通信号灯被取缔了。直到1914年,在美国的克利夫兰市才率先恢复了红绿灯,不过,这时已是“电气信号灯”。稍后又在纽约和芝加哥等城市,相继重新出现了交通信号灯。 随着各种交通工具的发展和交通指挥的需要,第一盏名副其实的三色灯(红、黄、绿三种标志)于191
16、8年诞生。它是三色圆形四面投影器,被安装在纽约市五号街的一座高塔上,它的诞生,使城市交通大为改善。 1.2.2黄色信号灯的发明黄色信号灯的发明者是我国的胡汝鼎,他怀着“科学救国”的抱负到美国深造,在大发明家爱迪生为董事长的美国通用电器公司任职员。一天,他站在繁华的十字路口等待绿灯信号,当他看到红灯而正要过去时,一辆转弯的汽车呼地一声擦身而过,吓了他一身冷汗。回到宿舍,他反复琢磨,终于想到在红、绿灯中间再加上一个黄色信号灯,提醒人们注意危险。他的建议立即得到有关方面的肯定。于是红、黄、绿三色信号灯即以一个完整的马路工具出现在世界上。 1.2.3没有红绿灯的国家圣马力诺共和国是欧洲最古老的国家之一
17、,该国风景秀丽,每逢旅行旺季,街市人头涌动,车流不息。 圣马力诺只有2万多人口,却拥有各种汽车5万辆,按理说,交通状况应该是拥挤不堪的。但实际上,在圣马力诺行车,道路顺畅,极少有堵车现象,偶尔塞车也不必担心,很快就会自动化解。 尤为令人惊奇的是,该国境内各种大小交叉路口看不到一个绿红灯信号。 没有红绿灯,交通却井然有序,这其中的奥妙就在于圣马力诺的公路设计、交通管理十分科学。该国的道路几乎全是单行线和环行线,开车人如果不进家门或停车场,一直开到底,就会不知不觉地又原路返回了。 在没有信号的交叉路口,驾驶人员均自觉遵守小路让大路、支线让主线的规则。各路口上都标有醒目的“停”字,凡经此汇入主干的汽
18、车都必须停车观望等候,确实看清干线无车时才能驶入。在圣马力诺,人人都自觉遵守交通规则,这已形成习惯。 1.2.4颜色采用原因世界上第一个由红黄绿汽灯组成的交通信号灯1868年出现在英国伦敦经过不断的改进才出现了由红黄绿组成的三色信号灯并一直沿用至今,采用红黄绿三种颜色是根据光学原理,红色光的波长很长,穿透空气的能力强,同时比其他信号更引人注意,所以作为禁止通行的信号,黄色光的波长较长,穿透空气的能力较强,所以作为警告的信号,采用绿色作为通告信号,是因为红色和绿色的区别最大,易于分辨,其显示距离也较远 1.2.5触摸式红绿灯触摸式红绿灯被称为“聪明红绿灯”或“行人过街触摸式红绿灯”。其特点是行人
19、要过街,只需用拇指摁一下路旁信号灯灯柱的按钮,行人过街的红灯随即变成绿灯,机动车道的绿灯则变成红灯,行人就可以安全通过了。从而使市民过街难的情况全面解决。同时,没有行人摁的时候,供机动车通行的灯将一直绿着,这样就大大提高了道路的使用效率和机动车的通行能力。 触摸式红绿灯目前已经在成都、武汉、哈尔滨、烟台等许多城市的不同个路口进行试点并安装。例如成都市在包括西南财大、西南交大、西南民族大学等几所高校大门附近的路口进行试点。经过长期的试点观察,成都市有关部门认为效果不错。为了让成都市民更多地享受高科技带来的“人性化交通”,“聪明红绿灯”开始在城区大街推广。一环路将成为第一条全线安装“行人过街触摸式
20、红绿灯”的街道。据介绍,一环路全线的“触摸式红绿灯”将和其他红绿灯连接,形成一整套“信号灯自适应控制系统”。经过电脑分析,红绿灯能够自动根据车流量的变化来调节红绿灯的转换和调节时间长短。作为这套系统的一部分,行人过街“触摸式红绿灯”的功能设定前期将主要定在晚上。 从外表看,“触摸式红绿灯”与普通信号灯并无两样,只不过在金属灯柱上多了一个小小的绿色按钮“触摸式红绿灯”的操作键。按钮距地面1.2米左右,旁边附有“人行按钮”4个字,并配上了一只手向下按钮的提示图样。行人要过街时,按一下按钮,斑马线两侧就会亮起绿灯。同时,机动车和慢车道上将迅速亮起红灯,供行人安全过街。有的城市的按钮会有所不同。为了避
21、免行人过街的灯老亮着,汽车没法通行造成交通堵塞,交管部门对红绿灯的时间进行了严格设定,当市民按了过街灯后,行人过街的绿灯将亮2030秒,(不同城市不同路口有所不同),第二次操作要在40秒(供机动车通行)(不同城市不同路口有所不同)之后才能生效。1.2.6总结从最早的手牵皮带到20世纪50年代的电气控制,从采用计算机控制到现代化的电子定时监控,交通信号灯在科学化、自动化上不断地更新、发展和完善;从空中到地面,从模糊到精准,也是符合现代人性的理念。2单片机交通灯控制系统的设计2.1交通灯的大概方案目前有交通灯的地方大概有两类,有直行道,十字路口,所以总体的状态就是在任一时刻只有一个方向通行,另一方
22、向禁止通行,持续一定时间,经过短暂的持续时间,将通行禁行方向对换。2.1.1直行道交通灯的状态如下: 我们假设路是由南向北的,则斑马线是东西方向。南北方向有红灯灭,然后黄灯亮,短暂持续过后,绿灯亮,倒计时X秒。东西方向禁止人可以通行。南北方向有绿灯灭,然后黄灯亮,短暂持续过后,红灯亮,倒计时X秒。东西方向允许人可以通行。2.1.2十字路口大概如下:东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时X秒。此状态下,东西向禁止通行,南北向允许通行。东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时Y秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。南北方向红灯灭,同时绿灯
23、亮,东西方向黄灯灭,同时红灯亮,倒计时X秒。此状态下,东西向允许通行,南北向禁止通行。南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时Y秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。2.2系统硬件电路设计交通灯控制系统的结构框图如图所示。总体设计方案共有五个部分组成,分别是:单片机AT89C51、红、绿、黄灯显示电路、LED数显时间电路、晶振及复位控制电路、控制与调时开关电路。在进行仿真调试过程中,程序运行正确,五个部分就同时工作,从而实现了交通灯的基本功能及调时功能。系统的总的原理框图如图所示。2.2.1系统时钟电路晶振采用了内部时钟信号源的方式。对于时间要求不是很高的系
24、统,只要按图进行设计就能使系统可靠起振并稳定运行。但由于图中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,在本系统的实际应用中一定要注意正确选择参数(3010 PF),并保证对称性(尽可能匹配)。时钟电路2.2.2系统复位电路复位电路我采用上电+按钮复位的方式。当开关打开时,RST通过电阻接地,当有开关闭合时由于电容的作用使电源VCC通过电阻施加在单片机复位端RST上,实现单片机复位。只是可惜,在进行仿真器调试过程中,该复位电路是不起作用的。具体电路如图所示。 图系统复位电路 2.2.3数码管显示电路数码管工作原理 这里我们介绍8段数码管的工作原理。8段数码管又称为8字型数码管,分为
25、8段:A、B、C、D、E、F、G、DP。其中,DP为小数点。数码管常用的有10根管脚,每一段有一根管脚,另外两根管脚为一个数码管的公共段,两根之间相互连通。 发光二极管的发光原理,我们已经介绍过了,同理,8段LED数码管,则是在一定形状的绝缘材料上,利用不同形状点划的发光二极管组合,排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示0-9的数字。 从电路上,按数码管的接法不同又分为共阴和共阳两种。图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。 图 数码管的内部电路接法在设计时,为了系统图的美观,我采用了6个数码管组成的数码管组,采用共阴极
26、接法。如图。 图系统数码管电路2.2.4路灯指示电路在设计路灯时,采用了发光二极管代替路灯。先介绍一下二极管,见图。二极管工作原理是单向导通,即只有正极电压高于负极电压某特定值时才会导通,而负极电压高于正极电压是不导通的。 图 发光二极管示意图发光二极管是一种特殊的二极管,导通时会发光(发光二极管导通压降一般为1.7V1.9V)。此外,工作电流要满足该二极管的工作电流。 发光二极管的正负极可以用万用表进行判断,把万用表拨至二极管档或电阻挡,用两个表笔分别接触二极管的两个引出脚。若发光二极管被点亮,则与红表笔相接的引出脚为正极。从外观上看,发光二极管的正极引脚的长度也比较长。 一般发光二极管与I
27、/O端口之间都会再连接一个电阻,其作用在于限制通过二极管的电流,从而达到减少功耗或者满足端口对最大电流的限制。一般发光二极管的点亮电流为5mA至10mA。 路灯设计时我采用了红、黄、绿三种发光二级管。如图所示。 图路灯设计电路2.2.5按键电路设计按键工作方式可以是中断方式也可以是扫描方式,对扫描方式来说,扫描是一直调用按键扫描程序,也可以用定时调用按键扫描程序,不管哪一种,都需要占用系统宝贵的时间资源,相比较而言中断就有优势,中断键盘只有在有按键按下时才去执行键盘程序,在没有按键按下的情况下,可以处理其他的事务,使资源得到充分的利用,故中断键盘有占用资源少,响应速度快的优点,但在有按键按下时
28、有数码管闪烁的缺点,这是因为处理中断时,数码管停止了扫描,对显示要求不高的场合下,这也是完全可以满足要求的。但实际应用中,为了保证安全查询键值和响应,通常还要进行按键去抖和等待键释放(查询按键是否抬起)的动作, 由于按键本身是机械开关,所以在触点闭合或断开的瞬间会出现电压抖动的现象。按键设计如图所示。 图按键电路3系统软件程序设计3.1设计思路及关键技术 一个完整的交通灯相当于一个简单的单片机系统,该系统有交通灯设置电路、单片机、显示电路等构成。单片机是集成的IC芯片,只需根据实际设计要求选型。其他部分都需要根据应用要求和性能指标自行设计。首先了解实际交通灯的变化规律。假设一个十字路口为东西南
29、北走向。初始状态0为东西红灯,南北红灯。然后转状态1南北绿灯通车,东西红灯。过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。再转状态3,东西绿灯通车,南北红灯。过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。最后循环至状态1。 3.2 软件流程系统总体流程图如图所示: 整体软件设计流程图3.3交通灯的设计程序说明这部分中定义了一些全局变量的数组和变量以及位标志,只是些定义的东西不需要画流程图了。这部分程序如下:#include#define uchar unsigned char#define uint unsigned intsbit nom=P37;
30、uchar code led_table10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/显示数码表uchar code light_state=0x21,0x12,0x0c,0x12;/交通灯状态存储表uchar code em_state3=0x24,0x21,0x0c;/紧急灯状态显示表uchar light_time2=0,4,0,1,0,5,0,1;/显示时间存储表uchar statebef,time1s=100,state=0;/存储紧急灯状态,定时基数,状态基数uint time;/显示时间变量bit md_flag,s
31、tate_flag=1,red;/显示时间更改状态,状态切换标志位,红绿切换标志位定义局部变量i,ji-j-j100i=100j=100i0;i-) for(j=100;j0;j-); /循环10000次 延时函数的流程图定义局部变量value读P3口状态value右移4位取value低三位状态改变?return 0return 1YNstatebef=value3.5 延时函数读状态函数的流程图如图。 读状态函数如下:读状态函数:判断是否有紧急灯状况出现uchar rd_emstate(void) uchar value; value=P3; value=4; value&=0x07; if
32、(value!=statebef)statebef=value;return 1;/判断是否有紧急灯状况发生,/保存按键值,置返回标志为1 读状态函数的流程图 else return 0;3.6 显示函数 显示函数如下:void display(void) if(md_flag=1)/显示更改时间状态 if(1=red) / 南北方向红灯时间显示 P2=0xf6; P0=led_tablelight_time00;delay();/分钟 P2=0xed; P0=led_tablelight_time01/10;delay();/秒的十位 P2=0xdb; P0=led_tablelight_t
33、ime01%10;delay();/秒的个位 else /正常状态,显示时间 P2=0xf6; P0=led_tabletime/100; delay();/分钟 P2=0xed; P0=led_tabletime/10%10;delay();/ 秒的十位 P2=0xdb; P0=led_tabletime%10; delay();/秒的个位3.7定时器0中断函数定时器0中断函数如下:void Time0int(void) interrupt 1 EA=0; TH0=-10000/256; TL0=-10000%256; time1s-; if(time1s=0)/一秒中到,重新置数 time
34、1s=100;time-;/显示时间自减if(time=0)/显示时间减到0时切换显示时间状态 state+;/四个状态轮流切换 if(state=4) state=0; state_flag=1;/置状态切换标志位 EA=1; 4总结及心得三年的大学生涯不过转瞬,一切都像昨天一样,历历在目。总以为很遥远,但当拿到毕业论文设计通知的时候我突然意识到,我毕业了。我怀着对离开学校无比的不舍,开始了我的毕业设计.通过此次毕业论文设计让我能够亲身参与电子产品的设计使我更加深深地体会到:现代的社会是信息的社会,很多与人们生活紧密相关的产品都是电子产品。要熟练地掌握单片机的基本知识,这样才能对试验中出现的
35、问题进行分析解决。通过这次对交通灯系统的设计,我们掌握了设计一个实用装置电路的基本方法和基本步骤,掌握了实用装置工作的基本原理,实际解决了设计中出现的问题,增强了寻找问题,解决问题的能力。此次电子设计的成功不仅帮助我们更好地掌握书本知识,尤其重要的是增强了我们的自信,培养了我们独立思考的能力! 通过紧张而充实的课程设计,我学到了很多东西,让我重新认识自己,收益匪浅,并对我以后所要做的毕业设计有了一个初步的了解。做好一个课程设计或毕业设计不仅要具备扎实的书本知识并会善于应用,还要学会查阅资料,对以前学过的知识不清楚的地方还要进行复习,实在搞不明白的地方要向老师或同学请教,这样才可能做出一个比较不
36、错的课程设计。在这里我要感谢我们的指导老师,非常感谢老师的指导和帮助。希望以后还能参加这样的课程设计。我想我会做的更好的。5致谢历时将近两个月的时间终于将这篇论文写完,在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。尤其要强烈感谢我的论文指导老师XX老师,他对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此向帮助和指导过我的各位老师表示最中心的感谢! 感谢这篇论文所涉及到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写
37、作。 感谢我的同学和朋友,在我写论文的过程中给予我了很多你问素材,还在论文的撰写和排版灯过程中提供热情的帮助。 由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正!参考文献1余发山.单片机原理及应用技术.中国矿业大学.20022李朝青.单片机原理及接口技术(修订版).北京:北京航空航天大学出版社,19983李广弟.单片机基础.北京:北京航空航天大学出版社,19924 周明德. 单片机原理与技术M 北京:人民邮电出版社,20085 何立民. 单片机应用系统设计M. 北京:北京航空航天大学出版社,20006 姜志海,刘连新. 单片微型计算机原理接口与应用M. 北京:机械工业
38、出版社,2007 7张一工现代电力电子技术原理与应用第一版科学出版社2002年8李学海 标准80C51单片机基础教程M.北京: 北京航空航天大学出版社 200610 李伯成.基于MCS-51单片机的嵌入式系统的设计M.北京:电子工业出版社11胡宴如模拟电子技术高等教育出版社,2004附录源程序代码#include#define uchar unsigned char#define uint unsigned intsbit nom=P37;uchar code led_table10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/显示数码
39、表uchar code light_state=0x21,0x12,0x0c,0x12;/交通灯状态存储表uchar code em_state3=0x24,0x21,0x0c;/紧急灯状态显示表uchar light_time2=0,4,0,1,0,5,0,1;/显示时间存储表uchar statebef,time1s=100,state=0;/存储紧急灯状态,定时基数,状态基数uint time;/显示时间变量bit md_flag,state_flag=1,red;/显示时间更改状态,状态切换标志位,红绿切换标志位延时函数void delay(void) uchar i,j; for(i
40、=100;i0;i-) for(j=100;j0;j-);读状态函数:判断是否有紧急灯状况出现uchar rd_emstate(void) uchar value; value=P3; value=4; value&=0x07; if(value!=statebef)statebef=value;return 1;/判断是否有紧急灯状况发生,保存按键值,置返回标志为1 else return 0;显示函数void display(void) if(md_flag=1)/显示更改时间状态 if(1=red) / 南北方向红灯时间显示 P2=0xf6; P0=led_tablelight_time
41、00;delay();/分钟 P2=0xed; P0=led_tablelight_time01/10;delay();/秒的十位 P2=0xdb; P0=led_tablelight_time01%10;delay();/秒的个位 else /南北绿灯东西红灯亮时间显示 P2=0xf6;P0=led_tablelight_time20; delay();/分钟 P2=0xed;P0=led_tablelight_time21/10; delay();/秒的十位 P2=0xdb;P0=led_tablelight_time21%10; delay();/秒的个位 else /正常状态,显示时间
42、 P2=0xf6; P0=led_tabletime/100; delay();/分钟 P2=0xed; P0=led_tabletime/10%10;delay();/ 秒的十位 P2=0xdb; P0=led_tabletime%10; delay();/秒的个位主函数void main()/初始化定时器0,外部中断1 EA=1; EX1=1; IT1=1; ET0=1; TMOD=0x01; TH0=-10000/256; TL0=-10000%256; TR0=1; while(1) if(rd_emstate()/如果有紧急灯按下,进行如下紧急处理 switch(statebef) case 0x04:P1=em_state0;TR0=0;break;/紧急灯亮 case 0x02:P1=em_state1;TR0=0;break;/东西应急灯亮