1、摘 要本系统由 AT89C51 单片机、键盘、LED 显示、交通灯演示系统组成。系统包括人行道、左转、右转、以及基本的交通信号灯的功能。系统除基本交通信号灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。随着社会经济的发展,城市交通问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。关键词 AT89C51;交通信号灯;控制器目 录摘 要 第章 绪 论 第章 方案设计
2、与论证 第章 系统硬件设计 3.1 总体设计 3. 单片机最小系统 3.3 显示及其驱动模块 3.3.1 键盘与状态显示功能 3.3.2 倒计时计数功能 第 4章 系统软件设计 104.1 软件总体设计 104.2 软件主要子程序设计 114.2.1 紧急状态子程序设计 114.4.2 设置状态子程序设第 3 页 共 28 页 计 114.2.3 键盘模块子程序设计 12第 5章 系统调试与测试 135.1 系统操作说明 135.2 调试 13第 6章 系统可靠性、经济性、实用性分析 15设计总结 16致 谢 18参考文献 19附录 1 交通灯的总体设计原理图 20附录 2 PCB板图 21附
3、录 3 程序清单 22附录 4 元件清单 28第章 绪 论当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在 19 世纪就已出现了。1858 年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868 年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两种旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示 “注意”。1869 年 1 月 2 日,煤气灯爆炸,造成人员伤亡,遂被取消。电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光
4、器组成,1914 年开始安装于纽约市 5 号大街的一座高塔上。红灯亮表示“停止” ,绿灯亮表示“通行 ”。1918 年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,另一种是用扩音器来启动红绿灯。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968 年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉
5、路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。基于单片机构成的城市交通信号灯控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率。但利用单片机控制交通信号灯涉及到一些现实问题,诸如信号的驱动、车辆到达的感知等。为此,我们采用模拟方式进行说明。所谓模拟,就是用绿、黄、红色三只共两组发光二极管代替交通信号灯。目前,城市交通信号灯控制系统应用广泛,因此,开发这种系统显得非常实用。第 2 章 方案设计与论证本设计以单片机为核心,以 LED 数码管作为倒计时指示,根据设计的要求我们考虑了各功能模块的几种设计方案,以求
6、最佳方案,实现实时显示系统各种状态,系统还增设了根据交通拥挤情况可分别设置主干道和次干道的通行时间,以提高效率,缓减交通拥挤。系统总体设计框图如图 1-1 所示。第 5 页 共 28 页 单片机最小系统倒计时显示时间交通灯键盘与状态显示图 1-1 系统总体设计框图1电源提供方案为使模块稳定工作,须有可靠电源。本次设计考虑了两种电源方案:方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。方案二:采用单片机控制模块提供电源。该方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。综上所述,选择第二种方案。2
7、显示界面方案该系统要求完成倒计时功能。基于上述原因,本次设计考虑了两种方案:方案一:完全采用点阵式 LED 显示。这种方案功能强大,可方便的显示各种英文字符,汉字,图形等,但实现复杂,且须完成大量的软件工作。方案二:完全采用数码管显示。这种方案优点是实现简单,可以完成倒计时功能。缺点是功能较少,只能显示有限的符号和数码字符。根据本设计的要求,方案二已经满足了要求,所以本次设计采用方案二以实现系统的显示功能。3输入方案这里同样讨论了两种方案:方案一:采用 8155 扩展 I/O 口、键盘及显示等。该方案的优点是使用灵活可编程,并且有 RAM 及计数器。若用该方案,可提供较多 I/O 口,但操作起
8、来稍显复杂。方案二:直接在 I/O 口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的端口资源还比较多,我们使用六个按键,分别是P16、P17、P27、P30、P32、P33,依次完成倒计时加 1、倒计时减 1、调完确认、调时方向切换、南北强行和东西强行等功能。由于该系统是对交通灯及数码管的控制,只需用单片机本身的 I/O 口就可实现,且本身的计数器及 RAM 已经够用,故选择方案二。第 3章 系统硬件设计硬件设计是整个系统的基础,要考虑的方方面面很多,除了实现交通灯基本功能以外,主要还要考虑如下几个因素:系统稳定度;器件的通用性或第 7 页 共 28 页 易选购性;软件编程的易实现性
9、;系统其它功能及性能指标;因此硬件设计至关重要。现从各功能模块的实现逐个进行分析探讨。3.1 总体设计本设计以单片机为控制核心,采用模块化设计,共分以下几个功能模块:单片机控制系统、键盘及状态显示、倒计时模块等。单片机作为整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。它由单片机振荡电路、复位电路等组成。键盘及状态显示,开关键盘输入交通灯初始时间,通过单片机 P1 输入到系统。系统采用双数码管倒计时计数功能,最大显示数字 99。友好的人机界面、灵活的控制方式、优化的物理结构是本设计的亮点。3.2 单片机最小系统1振荡电路AT89C51 是内部具有振荡电路的单片机,只需在 18
10、脚和 19 脚之间接上石英晶体,给单片机加工作所需直流电源,振荡器就开始振荡起来。振荡电路就为单片机工作提供了所需要的时钟脉冲信号,是单片机的内部电路、单片机的内部程序(若有)开始工作。振荡电路不工作,整个单片机电路都不能正常工作。AT89C51 常外接 6MHz、12MHz 的石英晶体,18 脚和 19 脚分别对地接了一个 20pF 的电容,目的是防止单片机自激。若从 18 脚输入外部时钟脉冲,则 19脚接地。2复位电路复位电路就是在 RST 端(9 脚)外接的一个电路,目的是使单片机上的电开始工作时,内部电路从初始状态开始工作,或者在工作中人为让单片机重新从初始状态开始工作。在时钟工作的情
11、况下,只要复位引脚高电平保持在两个机器周期以上的时间,AT89C51 便能完成系统重置的各项工作,使得内部特殊功能寄存器的内容均被设置成已知状态,并且从地址 0000H 处读入程序代码而执行程序。单片机最小系统电路如图 3-1 所示。图 3-1 单片机最小系统电路原理图3.3 显示及其驱动模块3.3.1 键盘与状态显示功能键盘在本设计中用于紧急情况的手动控制装置,以及定时时间的设置等功能,起到了不可缺少的重要作用。当定时器定时为 1 秒时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间,同时一直显示信号灯的颜色,这时在返回定时子程序定时 1 秒,在显示黄灯的下一个时间,这样依次把所
12、有的时间显示完后在重新给时间计数器赋初值,重新进入循环。键盘电路如图 3-2 所示。第 9 页 共 28 页 图 3-2 键盘电路3.3.2 倒计时计数功能本系统使用数码管完成倒计时显示功能。以南北方向为例,数码管显示的数值从绿灯的设置时间最大值往下减,每秒钟减 1,一直减到 1。然后又从红灯的设置时间最大值往下减,一直减到 1。接下来又显示绿灯时间,如此循环。系统共有 4 个两位的 LED 数码管,分别放置在模拟交通灯控制板上的四个路口。因为四个方向的数码管应该显示同样的内容,所以我们可以把它们同样对待。也就是说各个方向的数码管个位(把数码管第二位定义为个位,第一位定义为十位)用一根信号线控
13、制,十位用另一根信号线控制。这里采用动态显示。LED 数码管如图 3-3 所示。图 3-3 LED 数码管第 4章 系统软件设计软件在硬件平台上构筑,完成各部分硬件的控制和协调。系统功能是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,软件是本系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。同时,对软件进行全面测试也是检验错误排除故障的重要手段。这里我们选用了移值性好、结构清晰、能进行复杂运算的 C 语言来实现编程。4.1 软件总体设计软件总体设计主要完成各部分的软件控制和协调。本系统主程序模块主要完成的工作
14、是对系统的初始化,发送显示数据,同时对键盘进行扫描,等待外部中断,以及根据所需要的功能进行相应的操作。其流程图如图 4-1 所示。图 4-1 软件总体流程图第 11 页 共 28 页 4.2 软件主要子程序设计4.2.1 紧急状态子程序设计1在紧急状态下,只有紧急状态手动控制按键才可以使所有的 LED 都被置为红灯,车辆禁行、行人通行。紧急情况结束后再转成自动状态。程序流程如图 4-2 所示。图 4-2 紧急状态子程序4.2.2 设置状态子程序设计设置状态子程序如图 4-3 所示。图 4-3 设置状态子程序在设置状态,按下按键 1(P16)开始设置南北的红灯时间,按下按键2(P17)设置南北的
15、绿灯时间,按下按键 3(P27)返回正常运行状态。红灯和绿灯的时间最大可以设为 99,超出 99 的时候会从 50 开始重新计数。它包含倒计时调整和紧急状态两个状态。主程序中放了一个按键的判断指令,当有按键按下的时候,程序就自动的跳转到按键子程序处理。当检测到按键 2(P17)键按下的时候就自动返回到主程序。当出现紧急的情况的时候,按下按键3(P27)就切换到紧急状态,当紧急事件处理完毕的时候,按下按键 2(P17) ,就可以返回正常状态。4.2.3 键盘模块子程序设计键盘是人机进行交互的重要接口之一。用户通过按键对仪器下达命令,仪器对按键译码获得相应的键值,并执行相应的命令程序。键盘部分的软
16、件实现主要是指对键盘管理进行编程,从而成功地读取键盘值,实现相应的功能。键盘实现的程序流程图如图 4-4 所示。开始初始化设定初值红灯倒计时倒计时完毕黄灯闪 3S绿灯倒计时倒计时完毕黄灯闪 3S结束图 4-4 键盘实现的程序流程图第 13 页 共 28 页 第 5章 系统调试与测试5.1 系统操作说明本设计采用的是开关键盘,共 6 个键。键盘用来输入倒计时时间数字信息;功能菜单选择键则用于主次干道通行时间分别设置、确定、取消(即调时方向的切换、倒计时的加减、东西强行、南北强行,调完确认)等功能。系统分为两个状态:设置状态和显示状态。利用键盘可以进行两个状态间的切换;开机时,系统为显示状态,此时
17、显示四个路口数码管从默认的倒计时时间开始倒计时;显示状态时,交通灯模组的四个 LED 数码管进行倒计时;显示过程中按键可以重新进入设置状态。5.2 调试根据电路功能逐级进行:1通行方式功能调试:对行人和行车方向指示灯亮度和驱动电路调试;2倒计时功能调试:数码管亮度调试;3紧急情况手动控制功能调试:包括按键功能的调试。调试结果如下图所示。DPAADPADPABCDEFGABCDEFGBCDEFGBCDEFGBCDEFGP20P21P20P21P2P23 P2P23P13P14P15 P13P14P15P10 P1 P12P10P12 P1P10 P17P1P12P13P14P15P16P20 P
18、24P21P2P23DPP32 P3 P30P32 P35P3P34P16 P17P27P27P26 P30XTAL218XTAL119 ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD63P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD1P3.2/INT012P3.3/INT113P3.4/T014 P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/
19、A821P2.1/A92P2.2/A1023P2.3/A124P2.4/A1225P2.5/A1326P2.6/A1427U1 AT89C51D1LED-REDD2LED-REDD3LED-YELOW D4LED-YELOWD5LED-GREND6LED-GREN234567891RP1 RESPACK-8D7 LED-RED8 LED-YELOW9LED-GREND10 LED-GREN1LED-YELOW12 LED-RED调完确认键倒计时加1键倒计时减1键东西强行 南北强行 调时方向切换键 C11nFC21nF C3 1uFX1 CRYSTAL R110k第 15 页 共 28 页 第
20、6 章 系 统 可 靠 性 、 经 济 性 、 实 用 性 分 析可靠性分析采用 AT89SC51 系列单片机为主控器,对整个电路进行控制,采用红、黄、绿 LED 模拟交通信号灯进行显示,数码显示部分采用数码管显示通行时间,从而达到交通自动控制的目的。该设计方案的优点是系统简明扼要,工作稳定。经济性分析选用价廉、性能可靠的 AT89C51 作为主控芯片,并采用了资源共享(中断)技术,使外围组成元件减少,从而有效地降低了系统的成本。例如在安装、调试完成后,大体价格为 100 元左右。实用性分析出现紧急情况时系统可设置成手动控制,紧急情况结束后再转成自动,控制十分灵活,友好的人机界面、有效的控制方
21、式、优化的物理结构是本设计的亮点设计总结通过本次课程设计,我深深的体会到了作为一个硬件工程师的艰辛。即使做一个小小的项目,都需要做这么多细致入微的工作,必须考虑到问题的任何一个细节,否则最后也将是功败垂成。原理图设计: 当我们选取了这样一个题目,我们就开始收集相关的各种资料,对题目有个大致的了解,规划一下设计的任务将要完成哪些功能。然后就具体的每一项功能应该怎样具体的设计,例如用什么方法完成这一功能,这种想法是否合理,比较使用哪个芯片来完成这项功能。经过长时间的查阅资料、思索、推敲,最后定出了这次设计的原理图。PCB 板设计:前段时间我又重新复习了有关 Protel 软件使用方面的知识,研究应
22、该怎样生成正确的网络表,PCB 板的布局,布线,制板等工作。刚开始由于长时间的淡忘和经验的不足,一开始就遇到不少麻烦,经过老师和同学的帮助以及自己的摸索,最后以勉强及格的水准画出了这次的设计用板。硬件焊接:开始制作实物之前,按照老师的要求先进行整板的规划,这是一个非常关键的步骤,因为当你焊接上器件之后将会很难修改。结果发现了真的还有一些不足,比如在画板的过程中我们居然忘记留出电源接口,还有一些两根电源线没有和其他线接到一块,另外我给按键留的引脚的孔太小了,数码管的引脚情况也给弄错了,这些都是因为经验不够和粗心造成的。这也都给以后的学习留下了经验和教训,必须先拿到或熟悉芯片才能确定引脚的间距以及
23、大小,制板过程必须要细心。发现这些错误,在焊接过程中我们采取了一系列的措施来补救这些错误。关于焊接,因为自己的水平确实不怎么样,这需要一定的经验和技巧,但是我却是迟迟把握不到这种技巧。刚开始烙铁和焊锡配合不到一块,然后就是焊锡的量的控制问题,始终达不到老师说明的那种效果,这些都说明了我在实际动手能力方面还有待加强编程调试:在整个程序的编写过程中,研究每个子程序是否可行,我是通过 Keil C 和 Proteus 两个软件来实现的。Proteus 是一个单片机的仿真软件,第 17 页 共 28 页 发现它之后真的很受用,通过它可以不用连接硬件就能检查程序是否可行。Keil C 则帮助我检查程序是
24、否存在语法错误之类的问题,还可以生成 hex 文件,供 proteus 软件仿真使用。通过这两个软件,我完成了整个设计程序的编写与调试工作。通过上面的这个步骤,把程序调试好,接下来就是真正的硬件连接调试了。程序既然已经在仿真的软件上通过认证,如果连接上硬件不可行的话,说明在硬件上某个部分存在一定的问题。这点得到了验证:硬件模拟的时候,紧急情况用的开关有一个有问题,按下的时候没有反应。用万用表检测发现,开关内部的连接没有错误,但是当开关按下的时候,不是接通的,说明此开关有问题。于是我又将有问题的开关进行了更换,结果硬件连接调试很顺利。通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决
25、问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。致 谢转眼间时间已经在从我们的指间悄悄流走,没有任何预兆,但是它却留下了勤奋的汗水和努力过后的喜悦;我相信一分耕耘一分收获,特别在本次毕业设计中我深有体会。当然,做毕业设计是作为当代一名大学生将知识运用于实践的一个重要环节。在这次毕业设计中,我巩固了所学的电子基础知识,也扩大了自己的知识面,锻炼了我各方面的能力,这对我今后的学习和工作将产生积极的影响。此次毕业设计的顺利完成离不开指导老师的大力支持,在这里,我特别要感谢我们的指导老
26、师 X 老师, 是他告诉我不仅要在理论知识方面下手,也要去实际生活中寻找实例。从一开始老师就告诉我们要认真对待自己的毕业设计,将实际情况仔仔细细的告诉我们,还将最新的毕业设计信息通知给我们,并且在自己紧张的工作中,还尽量抽出时间关心我们的设计进度情况,督促我们抓紧学习。我们衷心的感谢 X 老师的指导。在整个课题的设计中,用到了以前所学的知识。最开始老师就教给了我们遇到问题,如何去分析问题、解决问题的方法,使我们受益匪浅。从确定设计题目到现在完成毕业设计论文的过程中,尤其是在课题设计的前期准备工作和设计的过程中,X 老师提出了许许多多宝贵的设计意见,在这段相处的时间里,X老师渊博的知识、敏锐的思
27、路和实事求是的工作作风给我留下了深刻的印象,这也将对我不久的工作,起到很大的鼓动作用,将使得我终身受益,谨此向 X老师表达我衷心的感谢和崇高的敬意!对于学过的知识只有运用到实践中,才能体现出它的价值。而这次毕业设计是自我锻炼的一个很好的机会,让我的大学生活画上一个圆满的句号。我知道,现在社会竞争激烈,只有不断学习才会有好的出路。母校给了我学习的空间和展示自我的舞台,今天的成功离不开每位老师的细心教导和同学们的之间互相帮助。在此,再次对所有关心和帮助过我的老师和同学表示衷心的感谢,祝愿您们身体健康,一切顺利。第 19 页 共 28 页 参考文献1张毅刚. 单片机原理及应用.北京:高等教育出版社,
28、2008 2沈红卫. 单片机应用系统设计实例.北京:北京航空航天大学出版社,20033陈有卿. 通用集成电路应用与实例分析.北京:中国电力出版社,20074谢自美. 电子线路设计实验测试武汉:华中科技大学出版社,20065和卫星 等.电子电路 CAD 实用技术.合肥:中国科学技术大学出版社,20086余锡存 等. 单片机原理及接口技术.陕西:西安电子科技大学出版社,20077龚尚福. 微机原理与接口技术.西安:西安电子科技大学出版社,20088李全利. 单片机原理及应用技术.北京:高等教育出版社,20039顾 滨. 单片微计算机原理、开发及应用.北京:高等教育出版社,200010朱家建. 单片
29、机与可编程控制器.北京:高等教育出版社,200111张毅坤. 单片微型计算机原理及应用.陕西:西安电子科技大学出版社,200812赵新民. 智能仪器设计基础.哈尔滨哈:尔滨工业大学出版社,199913李丽娟. C 语言程序设计教程.北京:人民邮电出版社,200614康华光. 电子技术基础(模拟部分).北京:高等教育出版社,200615康华光. 电子技术基础(数字部分).北京:高等教育出版社,200616马忠梅 等单片机的 C 语言应用程序设计.北京:北京航空航天大学出版社,2007附录 1 交通灯的总体设计原理图DPAADPADPABCDEFGABCDEFGBCDEFGBCDEFGBCDEFG
30、P20P21P20P21P2P23 P2P23P13P14P15 P13P14P15P10 P1 P12P10P12 P1P10 P17P1P12P13P14P15P16P20 P24P21P2P23DPP32 P3 P30P32 P35P3P34P16 P17P27P27P26 P30XTAL218XTAL119 ALE30EA31PSEN29RST9P0./AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD63P0.7/AD732P1.01P1.2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/
31、RXD10P3.1/TXD1P3.2/INT012P3./INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A92P2./A1023P2.3/A124P2.4/A1225P2.5/A1326P2.6/A1427U1 AT89C51D1LED-REDD2LED-REDD3LED-YELOW D4LED-YELOWD5LED-GREND6LED-GREN234567891RP1 RESPACK-8D7 LED-RED8 LED-YELOW9LED-GREND10 LED-GREN1LED-YELOW12 LED-RE
32、D调完确认键 倒计时加1键倒计时减1键东西强行 南北强行 调时方向切换键 C11nFC21nF C3 1uFX1 CRYSTAL R110k第 21 页 共 28 页 附录 2 PCB 板图附录 3 程序清单#include #include #define uchar unsigned char#define uint unsigned intsbit k1=P16;sbit k2=P17;sbit k3=P27;sbit k4=P30;sbit yellowled_nb=P14; /南北黄灯sbit yellowled_dx=P11; /东西黄灯uchar code table11=0x3
33、f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;uchar data dig; /位选uchar data led; /偏移量uchar data buf4;uchar data sec_dx=20;/东西数码指示值uchar data sec_nb=20;/南北数码指示值uchar data set_timedx=20;uchar data set_timenb=20;/倒计时设置的键值保存uchar data b;/定时器中断次数bit time;/灯状态循环标志bit int0_time;/中断强行标志bit set;/调时方向切换
34、键标志void delay(int ms);/延时子程序void key();/按键扫描子程序void key_to1();/键处理子程序void key_to2();void display();/显示子程序void main()TMOD=0X01;TH0=0X3C;TL0=0XB0;EA=1;ET0=1;TR0=1;EX0=1;EX1=1;第 23 页 共 28 页 P1=0Xf3;/ 东西通行while(1)key(); /调用按键扫描程序display(); /调用显示程序void key() /按键扫描子程序if(k1!=1)delay(10);if(k1!=1)while(k1!=
35、1);key_to1();if(k2!=1)delay(10);if(k2!=1)while(k2!=1);key_to2();if(k4!=1)delay(10);if(k4!=1)while(k4!=1);set=!set;if(k3!=1 /启动定时器sec_nb=20;sec_dx=20;int0_time=0;/清标志 else if(k3!=1set_timenb=sec_nb;set_timedx=sec_dx; /设置的键值返回保存void display()buf1=sec_dx/10; /第 1 位 东西秒十位buf2=sec_dx%10; /第 2 位 东西秒个位buf3
36、=sec_nb/10; /第 3 位 南北秒十位buf0=sec_nb%10; /第 4 位 南北秒个位P0=tablebufled;delay(2); /先延时,提前显示一位了P2=dig;dig=_crol_(dig,1);led+;if (led=4)led=0;dig=0xfe;void time0(void) interrupt 1 using 1 /定时中断子程序b+;if(b=10) / 定时器中断次数。b=0;sec_dx-;sec_nb-;/*南北黄灯闪烁判断*/if(sec_nb=3/南北黄灯亮delay(300);yellowled_nb=0;if(sec_nb=2/南北
37、黄灯亮delay(300);yellowled_nb=0;if(sec_nb=1delay(300);yellowled_nb=0;/*东西黄灯闪判断*/ if(sec_dx=3/南北黄灯亮delay(300);yellowled_dx=0;if(sec_dx=2/南北黄灯亮delay(300);yellowled_dx=0;if(sec_dx=1delay(300);yellowled_dx=0;/*/if(sec_dx=0|sec_nb=0) /东西或南北先到达 1S 时即开始重新计时 sec_dx=set_timedx;sec_nb=set_timenb; /第一次循环结束重置if(ti
38、me=1)P1=0XF3; /东西通行elseP1=0xde; /南北通行time=!time; /取反void key_to1()TR0=0; /关定时器if(set=0)sec_nb+; /南北加 1Selsesec_dx+;/东西加 1Sif(sec_nb=100)sec_nb=1;if( sec_dx=100)sec_dx=1;/加到 100 置 1void key_to2()TR0=0;/关定时器if(set=0)第 27 页 共 28 页 sec_nb-; /南北减 1Selsesec_dx-; /东西减 1Sif(sec_nb=0)sec_nb=99;if( sec_dx=0 )
39、sec_dx=99;/减到 1 重置 99void int0(void) interrupt 0 using 1 /东西强行TR0=0;P1=0XF3;sec_dx=88;sec_nb=88;int0_time=1;void int1(void) interrupt 2 using 1 /南北强行TR0=0;P1=0XDE;sec_nb=88;sec_dx=88;int0_time=1;void delay(int ms)uint j,k;for(j=0;jms;j+)for(k=0;k124;k+);附录 4 元件清单元器件型号 元件数量电解电容1uF 1电容20pF 2电阻10K 1晶振1
40、2MHZ 1单片机AT89C51 1按钮 6红色发光二极管 4黄色发光二极管 4绿色发光二极管 4两位LED数码管 4电源5V 1tgKQcWA3PtGZ7R4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGshLs50cLmTWN60eo8Wgqv7XAv2OHUm32WGeaUwYDIAWGMeR4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGZ7R4I30kA1DkaGtgKQcWA3PtGZ7R4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA
41、3PtGshLs50cLmTWN60eo8Wgqv7XAv2OHUm32WGeaUwYDIAWGMeR4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGZ7R4I30kA1DkaGtgKQcWA3PtGZ7R4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGshLs50cLmTWN60eo8Wgqv7XAv2OHUm32WGeaUwYDIAWGeR4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGZ7R4I30kA1DkaGtgKQcWA3PtGZ7R4I30kA1DkaGhn3XtKknBYCUDxqA7FHYi2CHhI92tgKQcWA3PtGshLs50cLmTWN