毕业设计基于AT89C51单片机的道路交通灯控制系统设计.doc

上传人:仙人指路1688 文档编号:4145348 上传时间:2023-04-07 格式:DOC 页数:34 大小:459.50KB
返回 下载 相关 举报
毕业设计基于AT89C51单片机的道路交通灯控制系统设计.doc_第1页
第1页 / 共34页
毕业设计基于AT89C51单片机的道路交通灯控制系统设计.doc_第2页
第2页 / 共34页
毕业设计基于AT89C51单片机的道路交通灯控制系统设计.doc_第3页
第3页 / 共34页
毕业设计基于AT89C51单片机的道路交通灯控制系统设计.doc_第4页
第4页 / 共34页
毕业设计基于AT89C51单片机的道路交通灯控制系统设计.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《毕业设计基于AT89C51单片机的道路交通灯控制系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计基于AT89C51单片机的道路交通灯控制系统设计.doc(34页珍藏版)》请在三一办公上搜索。

1、第一章 序 言1.1 交通灯的形成当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两色旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座

2、高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,

3、除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。我们设计的单片机控制交通灯就是基于信号灯。1.2芯片简介:MSC-51芯片简介8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我

4、们分别加以说明:中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(RAM): 8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。 程序存储器(ROM):8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。定时/计数器(ROM)

5、:8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。并行输入输出(I/O)口:8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。全双工串行口:8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统:8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。时钟电路:8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。单片机的结构

6、有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。1.3论文研究内容与章节安排本文首先通过序言介绍了交通的由来,以及单片机芯片相关知识,然后通过实际交通灯的考察,运用单片机的知识加以实现。章节安排如下:第一章 介绍交通灯的由来,以及单片机芯片相关知识第二章 通过比较法,选出我们用到的方案第三章 理论分析和计算出相关参数第四章 电路图设计第五

7、章 程序设计与流程图第六章 总结与致谢第二章 方案比较、设计与论证2.1 电源提供方案 为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案:方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。 方案二:采用单片机控制模块提供电源。本方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。综上所述,我们选择第二种方案,如图2-1。图2-1电源电路2.2 显示界面方案:该系统要求完成倒计时、状态灯等功能。基于上述原因,我们考虑了三种方案: 方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字符,无法

8、胜任题目要求。方案二:完全采用点阵式LED 显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。 方案三:采用数码管与点阵LED 相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现的复杂度。权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。2.3 输入方案:题目要求系统能手动设灯亮时间、紧急情况处理,我们讨论了两种方案:方案一:采用8155扩展I/O 口及键盘,显示等。该方案的优点是:使用

9、灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。方案二: 直接在IO口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是K1、K2、K3、K4。由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用,故选择方案二。第三章 理论分析与计算 3.1 交通灯显示时序的理论分析与计算对于一个交通路口来说,能在最短的时间内达到最大的车流量,就算是达到了最佳的性能,我们称在单位时间内多能达到的最大车流为车流量,用公式:车流量= 车流 / 时间 来表示。行人灯行人灯白圈代表

10、红灯黑圈代表绿灯左弯灯车人行驶右弯灯图3-1标号设定 32 规则状态图说明:此图为直方图,上边为北路口灯,右边为东路口灯,下边为南路口灯,左边为西路口灯。图32 所示为一种红绿灯规则的状态图,分别设定为S1、S2、S3、S4,交通灯以这四种状态为一个周期,循环执行见图33。 图3-3a车辆行驶状态S1 图3-3b车辆行驶状态S2 图3-3c车辆行驶状态S3 图3-3d车辆行驶状态S43-3 交通灯四种状态请注意图31b和图31d,它们在一个时间段中四个方向都可以通车,这种状态能在一定的时间内达到较大的车流量,效率特别高。依据上述的车辆行驶的状态图,可以列出各个路口灯的逻辑表,由于相向的灯的状态

11、图是一样的,所以只需写出相邻路口的灯的逻辑表;根据图33可以看出,相邻路口的灯它们的状态在相位上相差180。因此最终只需写出一组S1、S2、S3、S4的逻辑状态表。如表31 所示:开始S1S4S3S2S2S1S3S4外圈是北方为前进方向的状态循环,内圈是东方为前进方向的状态循环S1的状态ABCDEFGH逻辑值显示时间 从40秒到0秒S2的状态ABCDEFGH逻辑值显示时间从30秒到0秒S3的状态ABCDEFGH逻辑值显示时间从70秒到30秒S4的状态ABCDEFGH逻辑值显示时间从30秒到0秒表3-1 交通灯的循环逻辑表表中的“”代表是红灯亮(也代表逻辑上的0),“”是代表绿灯亮(也代表逻辑上

12、的1),依上表,就可以向相应的端口送逻辑值。3.2 交通灯显示时间的理论分析与计算东西和南北方向的放行时间的长短是依据路口的各个方向平时的车流量来设定,并且S1、S2、S3、S4各个状态保持的时间之有严格的对应关系,其公式如下所示:T-S1+T-S2=T-S3T-S2=T-S4T-S1=T-S3我们可以依据上述的标准来改变车辆的放行时间。按照一般的规则,一个十字路口可分为主干道和次干道,主干道的放行时间大于次干道的放行时间,我们设定值时也应以此为参考。第四章 电路图及设计文件4.1 灯控制电路设计红绿灯的显示采用普通的发光二极管,每个方向上设置红绿黄灯及行人灯各一个,共四组,如图4-1所示。如

13、果东西方向红灯亮那南北方向就是绿灯,反之亦然,所以在硬件连接图上也成对称分布。 图4-1 LED控制电路4.2倒计时显示电路设计 8段LED是一种常用的数码显示屏。这种数码管的每个线段都是一个发光二极管,因而把它叫做LED数码管。由于在数码管的右下角增加了一个小数点,形成了所谓的8段数码管。E10501是属于共阴极类型的数码管,只要公共端接地,其他端送上高电平就能点亮。E10501不仅具有工作电压低,体积小,寿命长,可靠性高等优点,而且响应时间短(一般不超过0.1微秒),亮度也比较高。缺点是工作电流比较高,一般工作电流都在10毫安左右。E10501的外形图和等效电路图如图4-2-1所示。图4-

14、2-1E10501外形图图4-2-2 E10501等效电路图LED段显示数码管的设置为每个方位上一对2位显示器。四个方位上总共有8个LED接在单片机的I/O口上。显示时我们不需要小数点,所以每个LED的10根管脚只用了9根。连接后的时间显示电路,如图4-2-2所示,虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的I/O口是对称的,原理图如图4-2-3。图4-2-3 数码管显示4.3违规车辆检测电路设计在红灯和黄灯期间,车辆是禁止通行的.为了对那些违反规则的车辆进行检测,受条件限制,本系统设计中只使用了普通光敏二极管。基本设计思路如下:将光敏二极管放在停车线上,当车辆通过的时候,因

15、光敏二极管给遮住,二极管就不导通,单片机检测到这一信号后就执行报警操作。但是,显然在实际中,使用发光二极管无法实现。违规车辆检测电路除了使用光敏二极管,还使用了三极管,型号为9031。由于普通的光敏二极管的开关性能不是很好,所以在设计中加个三极管做开关。由于普通光敏二极管在导通的情况下的电阻能达到0.51k,所以在设计中将光敏二极管直接接上了电源。同时三极管还可以起到一定的隔离作用。当光敏二极管关断时,三极管的基极为低电平,基极与发射极之间电压为零,三极管关断,检测口的电压为高电平;同理,当光敏二极管导通时,三极管的基极电压为高电平,基极与发射极之间的电压为高,三极管导通,检测口的电压为低电平

16、。基于此就可以检测是否有车辆违章,其原理图如图4-3。图4-3 违规检测电路第五章 程序设计思路与流程图5.1主程序流程图 程序初始化是否是状态S1启动状态S1是否是状态S2启动状态S2是否是状态S3启动状态S3是否是状态S4启动状态S4按键是否按下按键处理返回开始主程序开始是运用定时器0来定时,达到准确记时,在往下走就走到程序的死循环部分,分别判断是哪一个状态,当是状态S1时,就用软件的方法启动S1,运行S1,及南北通行,东西禁止。后面S2、S3、S4与S1一样,在这过程中,如果遇到突发事件,则要进行突发事件的按键处理,当突发事件处理完后,在回到主程序,其流程图如图51所示。 图5-1主程序

17、流程图 部分主程序如下:/主函数/Void main () t=5; TIME_Init (); /定时器初始化 sec=COUNT_DOWN; /定时初值while(1) key_scan(); /按键扫描 switch (key_flag) case 0:t+;if(t=30)t=5;break;/设置时间 case 1:TR2 = 1;break; /恢复 case 2:EW_ON;P1=LED4;TR2 = 0;break; /南北禁行,定时器停止 case 3:SN_ON;P1=LED4;TR2 = 0;break; /东西禁行,定时器停止 /=状态S1= if( (aspect_f

18、lag = 0)&(interim_flag = 0)&(key_flag = 0) ) EW_ON; P1=LED0; P2=LED7Code(sec-INTERIM)/10; /东西方向绿灯,少5秒 Delay1Ms(1); P2 = 0XFF; P1=LED1; P2=LED7Code(sec-INTERIM)%10; Delay1Ms(1); P1=LED2; P2=LED7Codesec/10; /南北方向红灯 Delay1Ms(1); P2=0XFF; P1=LED3; P2=LED7Codesec%10; Delay1Ms(1); /=状态S2= if( (aspect_flag

19、 = 0)&(interim_flag = 1)&(key_flag = 0) ) if(half_sec % 2 = 1) EW_Y_ON; else EW_Y_OFF; P1=LED0; P2=LED7Codesec/10; /东西方向黄灯 Delay1Ms(1); P2 = 0XFF; P1=LED1; P2=LED7Codesec%10; Delay1Ms(1); P1=LED2; P2=LED7Codesec/10; /南北方向红灯 Delay1Ms(1); P2 = 0XFF; P1=LED3; P2=LED7Codesec%10; Delay1Ms(1); /=状态S3= if(

20、 (aspect_flag = 1)&(interim_flag = 0)&(key_flag = 0) ) SN_ON; P1=LED0; P2=LED7Codesec/10; /东西方向红灯 Delay1Ms(1); P2 = 0XFF; P1=LED1; P2=LED7Codesec%10; Delay1Ms(1); P1=LED2; P2=LED7Code(sec-INTERIM)/10; /南北方向绿灯,少5秒 Delay1Ms(1); P2 = 0XFF; P1=LED3; P2=LED7Code(sec-INTERIM)%10; Delay1Ms(1); /=状态S4= if(

21、(aspect_flag = 1)&(interim_flag = 1)&(key_flag = 0) ) if(half_sec % 2 = 1) SN_Y_ON; else SN_Y_OFF; P1=LED0; P2=LED7Codesec/10; Delay1Ms(1); P2 = 0XFF; P1=LED1; P2=LED7Codesec%10; Delay1Ms(1); P1=LED2; P2=LED7Codesec/10; Delay1Ms(1); P2 = 0XFF; P1=LED3; P2=LED7Codesec%10; Delay1Ms(1); 5.2按键子程序流程图它包含倒

22、计时调整和紧急状态两个状态。主程序中放了一个按键的判断指令,当有按键按下的时候,程序就自动的跳转到按键子程序处理。当检测到K2键按下的时候就自动返回到主程序。当出现紧急的情况的时候,按下K3或者K4就切换到紧急状态,当紧急事件处理完毕的时候,按下K2,就可以返回正常状态,流程图如图5-2。K1按K2按K3按进入时间调整循环执行S1S3+,S4K4按返回循环执行S3 图 5-2按键子程序流程图图5-3 按键设置 键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘.而靠软件编程来识别的称为非编码键盘;在单片机组成的各种系统中,用的

23、最多的是非编码键盘。也有用到编码键盘的。非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。其图如图5-4,而我们用的是独立式键盘,如上图5-3。图5-4 矩阵键盘的原理图按键在编写程序时,应注意问题,如消颤,一般有物理消颤和软件消颤,我们这使用 软件消颤。具体操作是,当按键按下,用软件延时一段时间,再次扫描按键情况,如果确实有按键按下,就进入相应的操作。当操作完后要做一个按键是否断开的判断,其依据如图5-5: 图5-5 键闭合和断开时的电压抖动按键程序:void key_scan()if (KEY1 = 0)Delay1Ms(10); /按下延时消颤if (KEY1 = 0) if(ke

24、y_flag = 1) key_flag = 0; /取消 else key_flag = 1; /确定 while(KEY1 = 0);Delay1Ms(5); /弹起延时消颤while(KEY1 = 0);if (KEY2 = 0)Delay1Ms(10); /按下延时消颤if (KEY2 = 0) if(key_flag = 2) key_flag = 0; /取消 else key_flag = 2; /确定 while(KEY2 = 0);Delay1Ms(5); /弹起延时消颤while(KEY2 = 0);if (KEY3 = 0)Delay1Ms(10); /按下延时消颤if

25、(KEY3 = 0) if(key_flag = 3) key_flag = 0; /取消 else key_flag = 3; /确定 while(KEY3 = 0);Delay1Ms(5); /弹起延时消颤while(KEY3 = 0);if (KEY4 = 0)Delay1Ms(10); /按下延时消颤if (KEY4 = 0) if(key_flag = 4) key_flag = 0; /取消 else key_flag = 4; /确定 while(KEY4= 0);Delay1Ms(5); /弹起延时消颤while(KEY4 = 0);第六章 测试、数据及结果分析6.1状态灯显示

26、测试当电路连接完毕后,将写好的测试程序刷写到芯片内,开启电源开关K,以及按下K1 和K2分别给端口送高电平和低电平,通电即可检测。6.2数码管的测试 将串口和电路板上的接口连接,通过专业烧写软件,将写好的相应测试程序及.HEX文件刷写到芯片内,我们这用的ISPlayv15下载线编程软件,其显示的效果图如图6-1,开电源即可测试。 图6-1 ISP下载软件6.3整体电路测试系统上电,刷写好程序即可开始测试,观测一个周期(共计S1S4四个状态,(默认140秒)灯的显示状态是否正常,同时观察倒计的计数是否正常,以及按键调节突发事件,是否正常。总 结由于使用的是单片机作为核心的控制元件,使得电路的可靠

27、性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯规则的效率还不是很高等等,这需要在实践中进一步完善。且功能的全面性还不够强,经过这么长的时间的失败到成功的过程,让我更加清楚的明白单片机的运用就是对其端口的控制,同时外围电路的设计以及了解,让我对以前学过的知识能更加了解和认识,比如:电路、数、模电子技术、单片机技术、自动检测技术、电路板设计、智能仪器的设计应用与传感器的使用。在这段时间中,李老师们给了我很大的帮助,还有很多班上的同学及网上好友,你们对我的帮助和指导我非常感谢!附录:系统总体

28、电路图: 交通灯总原理图 总程序:/*/作品名称: 十字路口简易交通灯/设计者: 刘伟/功能介绍:/ KEY1按下,设置时间/ KEY2按下,恢复/ KEY3按下,东西禁止通行/ KEY4按下,南北禁止通行/设计时间: 2009.5.15/*#include #include /= #define uchar unsigned char#define uint unsigned int/=指示灯状态定义=#define ALL_OFF (P0 = 0xdb)/全部禁行#define EW_ON (P0 = 0xeb) /东西绿灯,南北红灯#define SN_ON (P0 = 0xdd) /南

29、北绿灯,东西红灯#define EW_Y_ON (P0 = 0xF3) /南北红灯,东西黄灯亮#define EW_Y_OFF (P0 = 0xFB) /南北红灯,东西黄灯灭#define SN_Y_ON (P0 = 0xDE) /东西红灯,南北黄灯亮#define SN_Y_OFF (P0 = 0xDF) /东西红灯,南北黄灯灭#define COUNT_DOWN 70 /定时时间#define INTERIM t /黄灯过渡时间/=按键定义=sbit KEY1 = P24; /时间设置sbit KEY2 = P25; /恢复sbit KEY3 = P26; /东西禁行sbit KEY4 =

30、 P27; /南北禁行/=函数定义=void TIME_Init (); /定时器初始化void Delay1Ms(uchar t); /延时t*1Msvoid Delay1s(uchar t); /延时t*1svoid key_scan(); /键盘扫描/=数码管选择定义=const uchar LED7Code=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90; /段码const uchar LED=0x01,0x02,0x04,0x08,0x00;/共阳数码管位选/=变量定义=uchar t50ms = 0; /50ms累加位uchar

31、half_sec,sec; /半秒,秒寄存器 uchar key_flag; /键值标记位uint t;bit aspect_flag = 0; /0:东西通行,1:南北通行bit interim_flag = 0; /0:东西黄灯,1:南北黄灯/主函数/Void main () t=5; TIME_Init (); /定时器初始化 sec=COUNT_DOWN; /定时初值while(1) key_scan(); /按键扫描 switch (key_flag) case 0:t+;if(t=30)t=5;break;/设置时间 case 1:TR0 = 1;break; /恢复 case 2

32、:EW_ON;P1=LED4;TR0 = 0;break; /南北禁行,定时器停止 case 3:SN_ON;P1=LED4;TR0 = 0;break; /东西禁行,定时器停止 /=状态S1= if( (aspect_flag = 0)&(interim_flag = 0)&(key_flag = 0) ) EW_ON; P1=LED0; P2=LED7Code(sec-INTERIM)/10; /东西方向绿灯,少5秒 Delay1Ms(1); P2 = 0XFF; P1=LED1; P2=LED7Code(sec-INTERIM)%10; Delay1Ms(1); P1=LED2; P2=

33、LED7Codesec/10; /南北方向红灯 Delay1Ms(1); P2=0XFF; P1=LED3; P2=LED7Codesec%10; Delay1Ms(1); /=状态S2= if( (aspect_flag = 0)&(interim_flag = 1)&(key_flag = 0) ) if(half_sec % 2 = 1) EW_Y_ON; else EW_Y_OFF; P1=LED0;待添加的隐藏文字内容2 P2=LED7Codesec/10; /东西方向黄灯 Delay1Ms(1); P2 = 0XFF; P1=LED1; P2=LED7Codesec%10; Del

34、ay1Ms(1); P1=LED2; P2=LED7Codesec/10; /南北方向红灯 Delay1Ms(1); P2 = 0XFF; P1=LED3; P2=LED7Codesec%10; Delay1Ms(1); /=状态S3= if( (aspect_flag = 1)&(interim_flag = 0)&(key_flag = 0) ) SN_ON; P1=LED0; P2=LED7Codesec/10; /东西方向红灯 Delay1Ms(1); P2 = 0XFF; P1=LED1; P2=LED7Codesec%10; Delay1Ms(1); P1=LED2; P2=LED

35、7Code(sec-INTERIM)/10; /南北方向绿灯,少5秒 Delay1Ms(1); P2 = 0XFF; P1=LED3; P2=LED7Code(sec-INTERIM)%10; Delay1Ms(1); /=状态S4= if( (aspect_flag = 1)&(interim_flag = 1)&(key_flag = 0) ) if(half_sec % 2 = 1) SN_Y_ON; else SN_Y_OFF; P1=LED0; P2=LED7Codesec/10; Delay1Ms(1); P2 = 0XFF; P1=LED1; P2=LED7Codesec%10;

36、 Delay1Ms(1); P1=LED2; P2=LED7Codesec/10; Delay1Ms(1); P2 = 0XFF; P1=LED3; P2=LED7Codesec%10; Delay1Ms(1); /*名称:void TIME_Init ();功能:定时器初始化指令:调用:无返回:无/*/void TIME_Init () TMOD = 0x01;RCAP2H =(65536-50000)/256; /定时50ms 自动重装RCAP2L =(65536-50000)%256;EA = 1; /总中断使能ET0 = 1; /定时器0中断开TR0 = 1; /关定时器0/*名称:v

37、oid Tim0 () interrupt 1功能:T0中断,参数:调用:返回:*/ void PWM_Time0 () interrupt 1RCAP2H =(65536-50000)/256; /定时50ms 自动重装RCAP2L =(65536-50000)%256;TF2 = 0; /清零中断标志位/ET2 = 0; /定时器0中断禁止if(+ t50ms = 10) half_sec+; t50ms = 0; if(half_sec = 2) half_sec = 0; /清零 if(-sec =INTERIM ) interim_flag = 1;/黄灯闪烁标志 if(sec =0) sec = COUNT_DOWN; aspect_flag = !aspect_flag; /换向 interim_flag = 0;/黄灯闪烁关闭 /*名称:void key_scan()功能:按键扫描参数:调用:返回:*/ void key_scan()if (KEY1 = 0)Delay1Ms(10);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号