单片机课程设计-城市十字路口交通灯控制系统的设计_第1页
单片机课程设计-城市十字路口交通灯控制系统的设计_第2页
单片机课程设计-城市十字路口交通灯控制系统的设计_第3页
单片机课程设计-城市十字路口交通灯控制系统的设计_第4页
单片机课程设计-城市十字路口交通灯控制系统的设计_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要本系统由单片机系统、键盘、LED显示、交通灯演示系统组成。系统包括人行道、左转、右转、以及基本的交通灯的功能。系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间、违规车辆检测以及根据具体情况手动控制等功能。本文通过查询相关资料及对系统设计要求和交通灯电路逻辑的分析,结合MCS51的使用特点提出了一套系统实现的软、硬件方案,并通过MCS51开发装置实现了该设计方案的基本功能,对交通灯系统设计进行了一种经济、有效的尝试。关键词MCS51单片机KEILC51编译器LED显示时序目录第1章引言111交通灯的历史概况112程序主芯片功能介绍113程序编译语言及开发软件简介2第2章总体方案设计521设计要求及可实现功能522交通灯显示规律分析523方案选择8第3章硬件系统设计1131LED显示控制电路1132计时器显示电路1133车辆违规检测电路12第4章软件系统设计1441主程序设计1442按键子程序设计18第5章系统调试2351状态灯显示测试与分析2352数码管显示测试与分析2353整体电路测试与分析23结论24参考文献25附录26第1章引言11交通灯的历史概况当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两色旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。我们设计的单片机控制交通灯就是基于信号灯。12程序主芯片功能介绍MSC51芯片简介8051是MCS51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。8051单片机包含中央处理器、程序存储器ROM、数据存储器RAM、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明中央处理器中央处理器CPU是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器RAM8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。程序存储器ROM8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。定时/计数器ROM8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。并行输入输出I/O口8051共有4组8位I/O口P0、P1、P2或P3,用于对外部数据的传输。全双工串行口8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。时钟电路8051内置最高频率达12MHZ的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛HARVARD结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿PRINCETON结构。INTEL的MCS51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS96系列单片机则采用普林斯顿结构。13程序编译语言及开发软件简介131程序编译语言选择51的编程语言常用的有二种,一种是汇编语言,一种是C语言。汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C语言还可以嵌入汇编来解决高时效性的代码编写问题。对于开发周期来说,中大型的软件编写用C语言的开发周期通常要小于汇编语言很多。综合以上C语言的优点,本文在程序编写时选择了C语言来作为编译语言。132开发软件简介18051开发工具KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到UVISION2的集成开发环境中,这个集成开发环境包含编译器,汇编器,实时操作系统,项目管理器,调试器。UVISION2IDE可为它们提供单一而灵活的开发环境。C51是目前最高效、灵活的8051开发平台。它可以支持所有8051的衍生产品,也可以支持所有兼容的仿真器,同时支持其它第三方开发工具。2UVISION2集成开发环境工程PROJECT是由源文件、开发工具选项以及编程说明三部分组成的。一个单一的UVISION2工程能够产生一个或多个目标程序。产生目标程序的源文件构成“组”。开发工具选项可以对应目标,组或单个文件。UVISION2包含一个器件数据库DEVICEDATABASE,可以自动设置汇编器、编译器、连接定位器及调试器选项,来满足用户充分利用特定微控制器的要求。此数据库包含片上存储器和外围设备的信息,扩展数据指针EXTRADATAPOINTER或者加速器MATHACCELERATOR的特性。UVISION2可以为片外存储器产生必要的连接选项确定起始地址和规模。3编辑器和调试器UVISION2编辑器包含了所有用户熟悉的特性。彩色语法显像和文件辩识都对C源代码进行和优化。可以在编辑器内调试程序并且可以编写或使用类似C的数语言进行调试。4C51编译器KEILC51编译器在遵循ANSI标准的同时,为8051微控制器系列特别设计。语言上的扩展能让用户使用应用中的所有资源。C51允许用户使用C语言编写中断服务程序,快速进、出代码和寄存器区的转换功能使C语言中断功能更加高效。可再入功能是用关键字来定义的。多任务,中断或非中断的代码要求必须具备可再入功能。C51提供了灵活高效的指针。通用指针用3个字节来存储存储器类型及目标地址,可以在8051的任意存储区内存取任何变量。特殊指针在声明的同时已指定了存储器类型,指向某一特定的存储区域。由于地址的存储只需12字节,因此,指针存取非常迅速。5测试程序UVISION2调试器具备所有常规源极调试,符号调试特性以及历史跟踪,代码覆盖,复杂断点等功能。DDE界面和SHIFT语言支持自动程序测试。第2章总体方案设计21设计要求及可实现功能本系统由单片机系统、键盘、LED显示、交通灯演示系统组成。由MCS51单片机组成单片机最小应用系统,控制南北,东西两条干线十字路口的交通信号灯的亮灭,使两条干线交替成为放行线和禁止线。系统包括人行道、左转、右转、以及基本的交通灯的功能。除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间、违规车辆检测以及根据具体情况手动控制等功能。22交通灯显示规律分析221交通灯时序显示对于一个交通路口来说,能在最短的时间内达到最大的车流量,就算是达到了最佳的性能,我们称在单位时间内多能达到的最大车流为车流量,用公式车流量车流/时间来表示。行人灯行人灯白圈代表红灯左弯灯右弯灯黑圈代表绿灯图21标号设定图22规则状态图车人行驶说明此图为直方图,上边为北路口灯,右边为东路口灯,下边为南路口灯,左边为西路口灯。图22所示为一种红绿灯规则的状态图,分别设定为S1、S2、S3、S4,交通灯以这四种状态为一个周期,循环执行见图23。图23A车辆行驶状态S1图23B车辆行驶状态S2图23C车辆行驶状态S3图23D车辆行驶状态S423交通灯四种状态请注意图23B和图23D,它们在一个时间段中四个方向都可以通车,这种状态能在一定的时间内达到较大的车流量,效率特别高。依据上述的车辆行驶的状态图,可以列出各个路口灯的逻辑表,由于相向的灯的状态图是一样的,所以只需写出相邻路口的灯的逻辑表;根据图23可以看出,相邻路口的灯它们的状态在相位上相差180。因此最终只需写出一组S1、S2、S3、S4的逻辑状态表。如表21所示开始S1S4S3S2S2S1S3S4外圈是北方为前进方向的状态循环,内圈是东方为前进方向的状态循环。S1的状态ABCDEFGH逻辑值显示时间从40秒到0秒S2的状态ABCDEFGH逻辑值显示时间从30秒到0秒S3的状态ABCDEFGH逻辑值显示时间从70秒到30秒S4的状态ABCDEFGH逻辑值显示时间从30秒到0秒表21交通灯的循环逻辑表表中的“”代表是红灯亮(也代表逻辑上的0),“”是代表绿灯亮(也代表逻辑上的1),依上表,就可以向相应的端口送逻辑值。222交通灯时间显示方案东西和南北方向的放行时间的长短是依据路口的各个方向平时的车流量来设定,并且S1、S2、S3、S4各个状态保持的时间之有严格的对应关系,其公式如下所示TS1TS2TS3TS2TS4TS1TS3我们可以依据上述的标准来改变车辆的放行时间。按照一般的规则,一个十字路口可分为主干道和次干道,主干道的放行时间大于次干道的放行时间,我们设定值时也应以此为参考。23方案选择本文采用以单片机为核心本系统采用MSC51系列单片机80C51为中心器件来设计交通灯控制器,采用C语言为程序编译语言,使用KEILC单片机软件完成编辑、编译、连接、调试、仿真等流程。该系统具体分为输入模块、界面显示模块、电源模块以进行方案设计与选择。231输入模块对于本系统要求的能手动设灯亮时间、紧急情况处理,我们讨论了两种方案方案一采用8155扩展I/O口及键盘,显示等。该方案的优点是使用灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O口,但操作起来稍显复杂。方案二直接在IO口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是K1、K2、K3、K4。由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O口就可实现,且本身的计数器及RAM已经够用,故选择方案二。232界面显示模块该系统要求完成倒计时、状态灯等功能。基于上述原因,我们考虑了三种方案方案一完全采用数码管显示。这种方案只显示有限的符号和数码字符,无法胜任题目要求。方案二完全采用点阵式LED显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。方案三采用数码管与点阵LED相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现的复杂度。权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。233电源模块为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案方案一采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。方案二采用单片机控制模块提供电源。本方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。综上所述,我们选择第二种方案,如图24。图24电源电路第3章硬件系统设计31LED显示控制电路红绿灯的显示采用普通的发光二极管,每个方向上设置红绿黄灯及行人灯各一个,共四组,如图31所示。如果东西方向红灯亮那南北方向就是绿灯,反之亦然,所以在硬件连接图上也成对称分布。图31LED控制电路32计时器显示电路8段LED是一种常用的数码显示屏。这种数码管的每个线段都是一个发光二极管,因而把它叫做LED数码管。由于在数码管的右下角增加了一个小数点,形成了所谓的8段数码管。E10501是属于共阴极类型的数码管,只要公共端接地,其他端送上高电平就能点亮。E10501不仅具有工作电压低,体积小,寿命长,可靠性高等优点,而且响应时间短(一般不超过01微秒),亮度也比较高。缺点是工作电流比较高,一般工作电流都在10毫安左右。E10501的外形图和等效电路图如图32A所示。图32AE10501外形图图32BE10501等效电路图LED段显示数码管的设置为每个方位上一对2位显示器。四个方位上总共有8个LED接在单片机的I/O口上。显示时我们不需要小数点,所以每个LED的10根管脚只用了9根。连接后的时间显示电路,如图32B所示,虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的I/O口是对称的,原理图如图32C。图32C数码管显示33车辆违规检测电路在红灯和黄灯期间,车辆是禁止通行的为了对那些违反规则的车辆进行检测,受条件限制,本系统设计中只使用了普通光敏二极管。基本设计思路如下将光敏二极管放在停车线上,当车辆通过的时候,因光敏二极管给遮住,二极管就不导通,单片机检测到这一信号后就执行报警操作。但是,显然在实际中,使用发光二极管无法实现。违规车辆检测电路除了使用光敏二极管,还使用了三极管,型号为9031。由于普通的光敏二极管的开关性能不是很好,所以在设计中加个三极管做开关。由于普通光敏二极管在导通的情况下的电阻能达到051K,所以在设计中将光敏二极管直接接上了电源。同时三极管还可以起到一定的隔离作用。当光敏二极管关断时,三极管的基极为低电平,基极与发射极之间电压为零,三极管关断,检测口的电压为高电平;同理,当光敏二极管导通时,三极管的基极电压为高电平,基极与发射极之间的电压为高,三极管导通,检测口的电压为低电平。基于此就可以检测是否有车辆违章,其原理图如图33。图33违规检测电路程序初始化是否是状态S1启动状态S1是否是状态S2启动状态S2是否是状态S3启动状态S3是否是状态S4启动状态S4按键是否按下按键处理返回开始第4章软件系统设计41主程序设计411主程序设计流程图主程序开始是运用定时器0来定时,达到准确记时,在往下走就走到程序的死循环部分,分别判断是哪一个状态,当是状态S1时,就用软件的方法启动S1,运行S1,及南北通行,东西禁止。后面S2、S3、S4与S1一样,在这过程中,如果遇到突发事件,则要进行突发事件的按键处理,当突发事件处理完后,在回到主程序,其流程图如图41所示。图41主程序流程图412部分程序列表/主函数/VOIDMAINT5TIME_INIT/定时器初始化SECCOUNT_DOWN/定时初值WHILE1KEY_SCAN/按键扫描SWITCHKEY_FLAGCASE0TIFT30T5BREAK/设置时间CASE1TR21BREAK/恢复CASE2EW_ONP1LED4TR20BREAK/南北禁行,定时器停止CASE3SN_ONP1LED4TR20BREAK/东西禁行,定时器停止/状态S1IFASPECT_FLAG0P1LED0P2LED7CODESECINTERIM/10/东西方向绿灯,少5秒DELAY1MS1P20XFFP1LED1P2LED7CODESECINTERIM10DELAY1MS1P1LED2P2LED7CODESEC/10/南北方向红灯DELAY1MS1P20XFFP1LED3P2LED7CODESEC10DELAY1MS1/状态S2IFASPECT_FLAG0ELSEEW_Y_OFFP1LED0P2LED7CODESEC/10/东西方向黄灯DELAY1MS1P20XFFP1LED1P2LED7CODESEC10DELAY1MS1P1LED2P2LED7CODESEC/10/南北方向红灯DELAY1MS1P20XFFP1LED3P2LED7CODESEC10DELAY1MS1/状态S3IFASPECT_FLAG1P1LED0P2LED7CODESEC/10/东西方向红灯DELAY1MS1P20XFFP1LED1P2LED7CODESEC10DELAY1MS1P1LED2P2LED7CODESECINTERIM/10/南北方向绿灯,少5秒DELAY1MS1P20XFFP1LED3P2LED7CODESECINTERIM10DELAY1MS1/状态S4IFASPECT_FLAG1ELSESN_Y_OFFP1LED0P2LED7CODESEC/10DELAY1MS1P20XFFP1LED1P2LED7CODESEC10DELAY1MS1P1LED2K1按K2按K3按进入时间调整循环执行S1S3,S4返回循环执行S3K4按P2LED7CODESEC/10DELAY1MS1P20XFFP1LED3P2LED7CODESEC10DELAY1MS142按键子程序设计421按键子程序设计流程图它包含倒计时调整和紧急状态两个状态。主程序中放了一个按键的判断指令,当有按键按下的时候,程序就自动的跳转到按键子程序处理。当检测到K2键按下的时候就自动返回到主程序。当出现紧急的情况的时候,按下K3或者K4就切换到紧急状态,当紧急事件处理完毕的时候,按下K2,就可以返回正常状态,流程图如图42。42按键子程序流程图422按键原理说明图43按键设置键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘而靠软件编程来识别的称为非编码键盘;在单片机组成的各种系统中,用的最多的是非编码键盘。也有用到编码键盘的。非编码键盘有分为独立键盘和行列式(又称为矩阵式)键盘。其图如图44,而我们用的是独立式键盘,如上图43。图44矩阵键盘的原理图按键在编写程序时,应注意问题,如消颤,一般有物理消颤和软件消颤,我们这使用软件消颤。具体操作是,当按键按下,用软件延时一段时间,再次扫描按键情况,如果确实有按键按下,就进入相应的操作。当操作完后要做一个按键是否断开的判断,其依据如图45图45键闭合和断开时的电压抖动423按键程序VOIDKEY_SCANIFKEY10DELAY1MS10/按下延时消颤IFKEY10IFKEY_FLAG1KEY_FLAG0/取消ELSEKEY_FLAG1/确定WHILEKEY10DELAY1MS5/弹起延时消颤WHILEKEY10IFKEY20DELAY1MS10/按下延时消颤IFKEY20IFKEY_FLAG2KEY_FLAG0/取消ELSEKEY_FLAG2/确定WHILEKEY20DELAY1MS5/弹起延时消颤WHILEKEY20IFKEY30DELAY1MS10/按下延时消颤IFKEY30IFKEY_FLAG3KEY_FLAG0/取消ELSEKEY_FLAG3/确定WHILEKEY30DELAY1MS5/弹起延时消颤WHILEKEY30IFKEY40DELAY1MS10/按下延时消颤IFKEY40IFKEY_FLAG4KEY_FLAG0/取消ELSEKEY_FLAG4/确定WHILEKEY40DELAY1MS5/弹起延时消颤WHILEKEY40第5章系统调试51状态灯显示测试与分析当电路连接完毕后,将写好的测试程序刷写到芯片内,开启电源开关K,以及按下K1和K2分别给端口送高电平和低电平,通电即可检测。52数码管显示测试与分析将串口和电路板上的接口连接,通过专业烧写软件,将写好的相应测试程序及HEX文件刷写到芯片内,我们这用的ISPLAYV15下载线编程软件,其显示的效果图如图51,开电源即可测试。图51ISP下载软件53整体电路测试与分析系统上电,刷写好程序即可开始测试,观测一个周期(共计S1S4四个状态,(默认140秒)灯的显示状态是否正常,同时观察倒计的计数是否正常,以及按键调节突发事件,是否正常。结论1心得体会本系统设计在历经几个月的努力下终于完成了。实验证明,本系统能成功对交通灯实际运行进行控制,并且除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间、违规车辆检测以及根据具体情况手动控制等功能。在初期查阅了大量的文献书籍资料及指导老师的帮助下终于编译出完整的程序。然而在程序的调试过程中,却经常会遇到程序执行错误或运行结果不对的地方。有时是因为自己的粗心。比如一次在输入程序的过程中,误将数字“0”输入成字母“O”,结果程序无法正确运行,经单步调式、不断排查,花了将近一下午的时间才找到问题。也曾因为端口设置错误,使程序无法运行,浪费了很多时间。这次设计不仅巩固了我所学的知识(如MCS51单片机等)让我学到了很多新知识和宝贵的实践经验,也检验、锻炼了我将知识运用到实践的能力,培养了我严谨细致的工作作风,为我以后踏上工作岗位打下了坚实的基础。2系统改进由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯规则的效率还不是很高等等,这需要在实践中进一步完善。且功能的全面性还不够强,经过这么长的时间的失败到成功的过程,让我更加清楚的明白单片机的运用就是对其端口的控制,同时外围电路的设计以及了解,让我对以前学过的知识能更加了解和认识,比如电路、数、模电子技术、单片机技术、自动检测技术、电路板设计、智能仪器的设计应用与传感器的使用。参考文献及网站1许泳龙等单片机原理及应用机械工业出版社,2005年2侯媛彬等单片机原理及其毕业设计精选科学出版社,2006年3何立民单片机应用技术大全北京北京航空航天大学出版社,1994年4谭浩强MCS51单片机应用教程北京清华大学出版社,2004年5马忠梅等单片机的C语言应用程序设计北京航空航天大学出版社,2003修订版6张毅刚等MCS51单片机应用设计哈工大出版社,2004年7边海龙,单片机开发与典型工程项目,电子工业出版社,2008年8郭天翔单片机网络视频,2007年9WWWCEPARTCOM单片机学习网10WWW21ICCOM21IC单片机学习网附录1系统总体电路图2总程序/程序名称十字路口简易交通灯/功能介绍/KEY1按下,设置时间/KEY2按下,恢复/KEY3按下,东西禁止通行/KEY4按下,南北禁止通行/INCLUDEINCLUDE/DEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINT/指示灯状态定义DEFINEALL_OFFP00XDB/全部禁行DEFINEEW_ONP00XEB/东西绿灯,南北红灯DEFINESN_ONP00XDD/南北绿灯,东西红灯DEFINEEW_Y_ONP00XF3/南北红灯,东西黄灯亮DEFINEEW_Y_OFFP00XFB/南北红灯,东西黄灯灭DEFINESN_Y_ONP00XDE/东西红灯,南北黄灯亮DEFINESN_Y_OFFP00XDF/东西红灯,南北黄灯灭DEFINECOUNT_DOWN70/定时时间DEFINEINTERIMT/黄灯过渡时间/按键定义SBITKEY1P24/时间设置SBITKEY2P25/恢复SBITKEY3P26/东西禁行SBITKEY4P27/南北禁行/函数定义VOIDTIME_INIT/定时器初始化VOIDDELAY1MSUCHART/延时T1MSVOIDDELAY1SUCHART/延时T1SVOIDKEY_SCAN/键盘扫描/数码管选择定义CONSTUCHARLED7CODE0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90/段码CONSTUCHARLED0X01,0X02,0X04,0X08,0X00/共阳数码管位选/变量定义UCHART50MS0/50MS累加位UCHARHALF_SEC,SEC/半秒,秒寄存器UCHARKEY_FLAG/键值标记位UINTTBITASPECT_FLAG0/0东西通行,1南北通行BITINTERIM_FLAG0/0东西黄灯,1南北黄灯/主函数/VOIDMAINT5TIME_INIT/定时器初始化SECCOUNT_DOWN/定时初值WHILE1KEY_SCAN/按键扫描SWITCHKEY_FLAGCASE0TIFT30T5BREAK/设置时间CASE1TR01BREAK/恢复CASE2EW_ONP1LED4TR00BREAK/南北禁行,定时器停止CASE3SN_ONP1LED4TR00BREAK/东西禁行,定时器停止/状态S1IFASPECT_FLAG0P1LED0P2LED7CODESECINTERIM/10/东西方向绿灯,少5秒DELAY1MS1P20XFFP1LED1P2LED7CODESECINTERIM10DELAY1MS1P1LED2P2LED7CODESEC/10/南北方向红灯DELAY1MS1P20XFFP1LED3P2LED7CODESEC10DELAY1MS1/状态S2IFASPECT_FLAG0ELSEEW_Y_OFFP1LED0P2LED7CODESEC/10/东西方向黄灯DELAY1MS1P20XFFP1LED1P2LED7CODESEC10DELAY1MS1P1LED2P2LED7CODESEC/10/南北方向红灯DELAY1MS1P20XFFP1LED3P2LED7CODESEC10DELAY1MS1/状态S3IFASPECT_FLAG1P1LED0P2LED7CODESEC/10/东西方向红灯DELAY1MS1P20XFFP1LED1P2LED7CODESEC10DELAY1MS1P1LED2P2LED7CODESECINTERIM/10/南北方向绿灯,少5秒DELAY1MS1P20XFFP1LED3P2LED7CODESECINTERIM10DELAY1MS1/状态S4IFASPECT_FLAG1ELSESN_Y_OFFP1LED0P2LED7CODESEC/10DELAY1MS1P20XFFP1LED1P2LED7CODESEC10DELAY1MS1P1LED2P2LED7CODESEC/10DELAY1MS1P20XFFP1LED3P2LED7CODESEC10DELAY1MS1/名称VOIDTIME_INIT;功能定时器初始化指令调用无返回无/VOIDTIME_INITTMOD0X01RCAP2H(6553650000)/256/定时50MS自动重装RCAP2L(6553650000)256EA1/总中断使能ET01/定时器0中断开TR01/关定时器0/名称VOIDTIM0INTERRUPT1功能T0中断,参数调用返回/VOIDPWM_TIME0INTERRUPT1RCAP2H(6553650000)/256/定时50MS自动重装RCAP2L(6553650000)256TF20/清零中断标志位/ET20/定时器0中断禁止IFT50MS10HALF_SECT50MS0IFHALF_SEC2HALF_SEC0/清零IFSECINTERIMINTERIM_FLAG1/黄灯闪烁标志IFSEC0SECCOUNT_DOWNASPECT_FLAGASPECT_FLAG/换向INTERIM_FLAG0/黄灯闪烁关闭/名称VOIDKEY_SCAN功能按键扫描参数调用返回/VOIDKEY_SCANIFKEY10DELAY1MS10/按下延时消颤IFKEY10IFKEY_FLAG1KEY_FLAG0/取消ELSEKEY_FLAG1/确定WHILEKEY10DELAY1MS5/弹起延时消颤WHILEKEY10IFKEY20DELAY1MS10/按下延时消颤IFKEY20IFKEY_FLAG2KEY_FLAG0/取消ELSEKEY_FLAG2/确定WHILEKEY20DELAY1MS5/弹起延时消颤WHILEKEY20IFKEY30DELAY1MS10/按下延时消颤IFKEY30IFKEY_FLAG3KEY_FLAG0/取消ELSEKEY_FLAG3/确定WHILEKEY30DELAY1MS5/弹起延时消颤WHILEKEY30IFKEY40DELAY1MS10/按下延时消颤IFKEY40IFKEY_FLAG4KEY_FLAG0/取消ELSEKEY_FLAG4/确定WHILEKEY40DELAY1MS5/弹起延时消颤WHILEKEY40/名称VOIDDELAY1MSUCHART功能延时1MS参数T,最大255调用无返回无/VOIDDELAY1MSUCHARTUCHARIFORT0TFORI0IR錍Q説GEPL6泣ZR辦K粯伌毵嗂頸U葶B|鱡廘舳W齃EZG悀默駵渟蚙昖黍HHP鼾J喆6贪渾伵U2Y憜酽1HC舁TG颪瀡敥F881閃诵NWC岝8懂溃象臖B呚圊T爡萬聻黬珿6舄裙5F彟璂挻N9WX繇5鄵瀱蟂历謄C公1鄐虳丬臉鐒宵齣蔼A岊。DV鞪縢冪芢幀RMS蔠2娢谪R汝7W蟌杕J8彥鞹刦奉I猧O舢丱F8騴溦艡詢柋P0B4徆YFS镩覗R頔C窉惄Z硔賘,P冩葞菃偒韉悁T趑嗜8楞讦J銉KM嚃蜚UF羇ZL始3鞶ANIQ撜溠羖Y稐邻睛皵葱夼2飍勡GE也祎萡枛灋将晰I踒PS阨丂9俒錘W焻V掤X譴层龢鸁馥M懰MM宯戡顧璫I耊飋Y痊Z忓OK捙G椄跸Z鑼鬌M篎MG俋盉紕饑I酾松鼗O8捼瀀茕餓Z峡蘟遥KYN膀蛳S苆恮N汶YF1Y跰彃A趐V湟荒遝U坣NGZT禘I乭粠妗T2I8慬YL不郝剡柭03P婈KHT紾涸1K昩籌淭饿嗘歀|揌I凅1鋼扚N恑嗐肚“埼葉X芼QN鈛KO绤R樬H浴1PZ缨寘湹枽饑,W惠勃T_簝礫嘲農噤旊FO逓S撈8OB苁9A蟌哦観4踓埇狍爐I鶹緐洮VR錍Q説GEPL6泣ZR辦K粯伌毵嗂頸U葶B|鱡廘舳W齃EZG悀默駵渟蚙昖黍HHP鼾J喆6贪渾伵U2Y憜酽1HC舁TG颪瀡敥F881閃诵NWC岝8懂溃象臖B呚圊T爡萬聻黬珿6舄裙5F彟璂挻N9WX繇5鄵瀱蟂历謄C公1鄐虳丬臉鐒宵齣蔼A岊。DV鞪縢冪芢幀RMS蔠2娢谪R汝7W蟌杕J8彥鞹刦奉I猧O舢丱F8騴溦艡詢柋P0B4徆YFS镩覗R頔C窉惄Z硔賘,P冩葞菃偒韉悁T趑嗜8楞讦J銉KM嚃蜚UF羇ZL始3鞶ANIQ撜溠羖Y稐邻睛皵葱夼2飍勡GE也祎萡枛灋将晰I踒PS阨丂9俒錘W焻V掤X譴层龢鸁馥M懰MM宯戡顧璫I耊飋Y痊Z忓OK捙G椄跸Z鑼鬌M篎MG俋盉紕饑I酾松鼗O8捼瀀茕餓Z峡蘟遥KYN膀蛳S苆恮N汶YF1Y跰彃A趐V湟荒遝U坣NGZT禘I乭粠妗T2I8慬YL不郝剡柭03P婈KHT紾涸1K昩籌淭饿嗘歀|揌I凅1鋼扚N恑嗐肚“埼葉X芼QN鈛KO绤R樬H浴1PZ缨寘湹枽饑,W惠勃T_簝礫嘲農噤旊FO逓S撈8OB苁9A蟌哦観4踓埇狍爐I鶹緐洮VR錍Q説GEPL6泣ZR辦K粯伌毵嗂頸U葶B|鱡廘舳W齃EZG悀默駵渟蚙昖黍HHP鼾J喆6贪渾伵U2Y憜酽1HC舁TG颪瀡敥F881閃诵NWC岝8懂溃象臖B呚圊T爡萬聻黬珿6舄裙5F彟璂挻N9WX繇5鄵瀱蟂历謄C公1鄐虳丬臉鐒宵齣蔼A岊。DV鞪縢冪芢幀RMS蔠2娢谪R汝7W蟌杕J8彥鞹刦奉I猧O舢丱F8騴溦艡詢柋P0B4徆YFS镩覗R頔C窉惄Z硔賘,P冩葞菃偒韉悁T趑嗜8楞讦J銉KM嚃蜚UF羇ZL始3鞶ANIQ撜溠羖Y稐邻睛皵葱夼2飍勡GE也祎萡枛灋将晰I踒PS阨丂9俒錘W焻V掤X譴层龢鸁馥M懰MM宯戡顧璫I耊飋Y痊Z忓OK捙G椄跸Z鑼鬌M篎MG俋盉紕饑I酾松鼗O8捼瀀茕餓Z峡蘟遥KYN膀蛳S苆恮N汶YF1Y跰彃A趐V湟荒遝U坣NGZT禘I乭粠妗T2I8慬YL不郝剡柭03P婈KHT紾涸1K昩籌淭饿嗘歀|揌I凅1鋼扚N恑嗐肚“埼葉X芼QN鈛KO绤R樬H浴1PZ缨寘湹枽饑,W惠勃T_簝礫嘲農噤旊FO逓S撈8OB苁9A蟌哦観4踓埇狍爐I鶹緐洮VR錍Q説GEPL6泣ZR辦K粯伌毵嗂頸U葶B|鱡廘舳W齃EZG悀默駵渟蚙昖黍HHP鼾J喆6贪渾伵U2Y憜酽1HC舁TG颪瀡敥F881閃诵NWC岝8懂溃象臖B呚圊T爡萬聻黬珿6舄裙5F彟璂挻N9WX繇5鄵瀱蟂历謄C公1鄐虳丬臉鐒宵齣蔼A岊。DV鞪縢冪芢幀RMS蔠2娢谪R汝7W蟌杕J8彥鞹刦奉I猧O舢丱F8騴溦艡詢柋P0B4徆YFS镩覗R頔C窉惄Z硔賘,P冩葞菃偒韉悁T趑嗜8楞讦J銉KM嚃蜚UF羇ZL始3鞶ANIQ撜溠羖Y稐邻睛皵葱夼2飍勡GE也祎萡枛灋将晰I踒PS阨丂9俒錘W焻V掤X譴层龢鸁馥M懰MM宯戡顧璫I耊飋Y痊Z忓OK捙G椄跸Z鑼鬌M篎MG俋盉紕饑I酾松鼗O8捼瀀茕餓Z峡蘟遥KYN膀蛳S苆恮N汶YF1Y跰彃A趐V湟荒遝U坣NGZT禘I乭粠妗T2I8慬YL不郝剡柭03P婈KHT紾涸1K昩籌淭饿嗘歀|揌I凅1鋼扚N恑嗐肚“埼葉X芼QN鈛KO绤R樬H浴1PZ缨寘湹枽饑,W惠勃T_簝礫嘲農噤旊FO逓S撈8OB苁9A蟌哦観4踓埇狍爐I鶹緐洮VR錍Q説GEPL6泣ZR辦K粯伌毵嗂頸U葶B|鱡廘舳W齃EZG悀默駵渟蚙昖黍HHP鼾J喆6贪渾伵U2Y憜酽1HC舁TG颪瀡敥F881閃诵NWC岝8懂溃象臖B呚圊T爡萬聻黬珿6舄裙5F彟璂挻N9WX繇5鄵瀱蟂历謄C公1鄐虳丬臉鐒宵齣蔼A岊。DV鞪縢冪芢幀RMS蔠2娢谪R汝7W蟌杕J8彥鞹刦奉I猧O舢丱F8騴溦艡詢柋P0B4徆YFS镩覗R頔C窉惄Z硔賘,P冩葞菃偒韉悁T趑嗜8楞讦J銉KM嚃蜚UF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论