1、 毕业设计用纸 摘要 随着单片机的日益发展,其应用也越来越广泛,通过对“汽车转弯灯单片机控制系统”设计,可以对单片机的知识得到巩固和扩张。本设计是设计一个单片机控制系统。在汽车进行左转弯、右转弯、刹车、合紧急开关、停靠等操作时,实现对各种信号指示灯的控制。本设计主要是对单片机的并行输入/输出口电路的应用,通过I/O口控制发光二极管的亮灭闪烁,加上一些复位电路按键电路驱动电路来模拟汽车尾灯的功能。汽车在驾驶时有左转弯、右转弯、刹车、合紧急开关、停靠等操作。在左转弯或右转弯时,通过转弯操作杆应使左转开关或右转开关合上,从而使左头灯、仪表板左转弯灯、左尾灯或右头灯、仪表板右转弯灯、右尾灯闪烁;合紧急
2、开关时要求前面所述的6个信号灯全部闪烁;汽车刹车时,两个尾灯点亮;如正当转弯时刹车,则转弯时原应闪烁的信号灯仍应闪烁。以上闪烁,都是频率为1Hz的低频闪烁;在汽车停靠而停靠开关合上时,左头灯、右头灯、左尾灯、右尾灯按频率为30Hz的高频闪烁。通过做实物,编写程序,完成了设计的要求。通过该设计,对单片机的认识有了更进一步的了解,对单片机的各个口的功能作用了解加深,对Protel的应用更加熟练,对设计系统有了了解,掌握了一些设计方法,受益不少。关键词:单片机,汽车信号转弯灯,电路基础,数字电子技术ABSTRACTAlong with the development of single chip,
3、its application in more and more widely, through to the auto lamp single-chip microcomputer control system turning to the single chip design, can the knowledge has been consolidated and expansion. This design is the design of a single-chip microcomputer control system. In the car left turn, turn rig
4、ht, brakes, and emergency switch, call operation, such as the realization to the various signal indicator light control. This design is mainly to the chip parallel input/output circuit application, through the I/O control leds on the mouth, destroy, flashing, plus some reset circuit circuit, drive c
5、ircuit, keys to simulate the function of outsourcing.In a car driving left turn, turn right, brakes, and emergency switch, call operation. In turn left or right turn, turn through the operation should make a left turn pole switch or turn right switch closed, so that left the head lamp, instrument pa
6、nel turn left lamp, left or right tail lights the head lamp, dashboards turn right lamp, right tail lights flashing; And emergency switch, and the requirements of the mentioned six lights flashing all; Automobile braking, two tail lights light; Such as legitimate turning the brakes, is turning the f
7、lashing lights should be should still flashing. Above all, the frequency of flashing, is 1 Hz ac frequency twinkle; In car dock and parked close the switch when the head lamp, right, left, the head lamp, left, and right tail lights for 30 Hz ac frequency tail lights in the high frequency blinking. T
8、hrough the do physical, write programs, complete the design requirements. Through the design of the single chip, recognize the further understanding of the single chip, the function of each mouth role to deepen understanding, the application of Protel more skilled design system, to understand and gr
9、asp the some design methods, benefit a lot.Keywords: SCM ,Car turn signal lamp , Circuit basis, Digital electronic technology 目 录第一章绪论5第二章设计方案论证与选择6第三章汽车转弯灯工作原理8第四章控制系统的硬件设计104.1单片机介绍104.2单片机控制系统电路124.2.1电源电路134.2.2时钟电路134.2.3复位电路144.2.4键盘接口电路的设计144.3.5 信号灯电路154.3.6 故障监控电路15第五章控制系统的软件设计175.1汽车转弯灯控制系
10、统的软件设计175.1.1汽车转弯灯控制系统的主程序设计175.1.2中断服务程序的设计185.1.3控制系统键功能19第六章电路功能实现206.1 软件调试206.2 单片机硬件功能实现206.3 仿真操作说明及现象21参考文献22附录 A23附录 B24附录 C25附录 D29附录 E30附录 F32致谢33 第一章 绪论一、选题背景电子技术的发展经历了很长一段路程.而现在我们使用的微型电子技算机是超大规模集成电路所构成,它属于第四代计算机,而单片机则是微型计算机的一部分。从1971年微型计算机问世以来,由于实际应用的需要,微型计算机向着两个不同的方向发展:一个是向高速度、大容量、高性能的
11、高档微机方向发展;另一个则是向稳定可靠、体积小和价格廉的单片机方向发展。由于科学技术的发展,由模拟电路或数字电路实现的大部分控制功能,现在能够使用单片机通过软件编程方法实现了。单片机的应用改变着控制系统设计方法。软件取代硬件可以提高系统性能的控制 “软化”技术微控制技术,是一个全新的概念。在生活的环境中,自动控制要求中都会有单片机的控制的一部分;从简单到复杂,凡是能想像到的地方几乎都有使用单片机的需求。单片机的应用有利于产品的小型化、多功能化和智能化,能够提高劳动效率、减轻劳动强度,提升产品质量,改善劳动环境。例如,在工业自动化方面:自动化能使工业系统处于最佳状态、提高经济效益和改善产品质量。
12、自动化控制原理有应用于电子、电力、石油、化工、纺织、食品等轻重工业领域中,无论数据采集和测控技术,还是生产线上的机器人技术,都有单片机的参与。有时,在仪器仪表、信息和通信等产品方面,它在其中发挥着重大作用。现在,虽然单片机的应用很普遍了,但仍有许多项目尚未实现,所以单片机的应用有很大的发展空间。二、研究意义单片机在电子科技中发展前景很好,成为电子发展重要组成部分,学习单片机时要理论与实践同步进行,以理论指导实践,实践验证理论,才更有效率。理论部分我们花了大量的时间,只有少量的时间进行制做实物,编程方面,调试在软件上进行的,软件上能编译成功的程序,下载硬件上可能不会成功的。毕业设计过程中,我们在
13、网站上大量收集与课题相关的资料,了解目前与课题相关的科技发展趋势,确定自己的研究方案。还要自己动手制作实物、编写程序并对实物下载程序进行硬件的调试,达到预期所需的控制要求和目的,使理论和实践完满的统一。因此还锻炼了我们的制作能力,提升了综合素质。三、研究方法 单片机的控制系统以AT89S52为控制器;键盘为输入信号,由于AT89S52本身的功能强大,汽车转弯灯的驱动用单片机的驱动功能来完成。使得单片机的功能得到了充分的运用;并且显示电路从并行I/O口输出,由限流电阻和发光二极管组成,低电平使发光二极管导通,显示出相应的转弯信号。第二章 设计方案论证与选择方案一如图3.1所示,汽车转弯灯主要有单
14、片机、按键、复位、时钟、电源、故障检测电路、LED显示电路组成最基本的单片机系统。单片机本身的功能强大,汽车转弯灯的驱动用单片机本身的驱动来驱动。使得单片机的功能得到充分的运用。本方案的故障检测电路具有故障监控性能,他能提高系统的可靠性。图2.1 汽车转弯灯控制系统硬件构成方案二汽车转弯灯主要由单片机(AT89S52)、按键、复位、电源、时钟路、驱动、LED显示电路等组成的最基本的单片机控制系统。所有软件、参数均存在AT89S52的ROM和RAM中,因此能够减少了芯片的数量和整机的电流单片机的内部ROM有4K,RAM有128个字节,软件编时有足够的空间来存储其程序。复位设置由F键完成;A键至E
15、 键来调理信号灯。电源在5V以下可正常工作。LED是由NPN三极管驱动,键盘采用消抖扫描方式。如图2.2所示AT98S52按键电路时钟电路 复位电路电源电路驱动电路LED显示图2.2 汽车转弯灯控制系统硬件构成该方案应用单片机自身的并行口来实现其功能,由于单片机的种类很多,在选择单片机时要依据实际设计要求选择合适的单片机。我们接触的单片机有8031、8051。因8031无内部RAM,只要编程就必须扩展程序存储器,无疑会增加设计的难度和复杂,虽然8051有内部RAM,但从性能及设计成本考虑,我们选择AT89S52芯片。由于AT89S52的广泛使用,使单片机的价格大大下降。目前,AT89S52的市
16、场零售价已经低于8255、8279、8253、8250等专用接口芯片中的任何一种;而89S52的功能实际上远远超过以上芯片。因此,如把89S52作为接口芯片使用,在经济上是比较合算。时钟电路由晶振及电容组成,复位电路由按键复位结构组成。对于键盘电路我们采用独立式键盘,可以具体实现可分为以下几种情况:直接由并行I/O口来实现。使用三极管驱动LED来实现。方案选择两种方案的比较,我觉得方案一的设计具有稳定性和可靠性,所以本课题采用方案一。第三章 汽车转弯灯工作原理由定时器/计数器与中断系统的联合组成控制系统的工作原理。如汽车上有一个转弯控制杆,其中有三个位置:中间位置,汽车不转弯;向上,汽车左转;
17、向下汽车右转。转弯时,规定左右尾灯、左右头灯仪表板上2个指示灯相应地发出闪烁信号。应急开关合上时, 6个信号灯都应闪烁。汽车刹车时,2个尾灯发出不闪烁信号。如正当转弯时刹车,转弯时原应闪烁的信号仍应闪烁。它们都是频率为1Hz低频闪烁,在汽车停靠而停靠开关合上时,左头灯、右头灯、左尾灯、右尾灯按频率为30Hz的高频闪烁。由上所述,各种情况作操作时,信号灯应输出信号列于表2.1。表2.1 汽车驾驶操纵与信号驾 驶 操 作输 出 信 号仪表板左转弯灯仪表板右转弯灯左头灯右头灯左尾灯右尾灯左转弯(合上左转开关)闪烁闪烁闪烁右转弯(合上右转开关)闪烁闪烁闪烁合紧急开关闪烁闪烁闪烁闪烁闪烁闪烁刹车(合上刹
18、车开关)亮亮左转弯时刹车闪烁闪烁闪烁亮右转弯时刹车闪烁闪烁亮闪烁刹车,并合紧急开关闪烁闪烁闪烁闪烁亮亮左转弯时刹车,并合紧急开关闪烁闪烁闪烁闪烁闪烁亮右转弯时刹车,并合紧急开关闪烁闪烁闪烁闪烁亮闪烁停靠(合停靠开关)30Hz闪烁30Hz闪烁30Hz闪烁30Hz闪烁版面图如图所示:右转弯灯右尾灯左转停靠刹车右转紧急左头灯左转弯灯左尾灯右头灯图3.1 汽车转弯灯版面图第四章 控制系统的硬件设计4.1单片机介绍AT89S52单片机如图4.1所示图4.1 单片机AT89S52单片机特点1 兼容MCS-51产品指令系统2 8k可反复擦写Flash 闪速ROM3 32个可编程I/O口线4 256x8bit
19、内部RAM5 2个16位定时/计数器6 全静态工作模式:0Hz-33MHz7 看门狗(WDT)及双数据指针8 全双工串行UART通道9 6个中断源10 1000次擦写周期11 中断可从空闲模唤醒系统12 3级程序加密锁13 低功耗空闲和掉电模式14 掉电标识和快速编程特性15 灵活的在系统编程(ISP-字节)16 4.0-5.0V的工作电压范围AT89S52有40引脚双列直插式填和44引脚封装方式。方型封装有4个引脚(标有NC)是不连线的,故在连接时应注意。它在一块小芯片上,有CPU、存储器、I/O口、定时器/计数器、中断系统等。一、单片机各引脚介绍(1) VCC:电源。(2) GND:接地。
20、(3) P0口:是一个8位漏极开路的双向I/O口。(4) P1口:是一个具有内部上拉电路的8位双向I/O口。(5) P2口:是一个具有内部上拉电路的8位双向I/O口,P2口输出缓冲器能吸入/放出4个TTL输入。访问外部程序存储器及使用16位地址的是数据存储器(MOVXDPTR)时,P2口输出高8位地址。这种情况下,当不置“1”时,P2口使用强大的内部上拉电路。访问使用8位地址的外部存储器(MOVX RI)时,P2口输出P2口锁存器的内容。(6) P3口:是一个具有内部上拉电路的8位双向I/O口,P3输出缓冲器能吸入/放出4个TTL输入。Flash编程及检验时,P3口也接收一些控制信号。表4.1
21、 AT89S52的P3口各种专用功能表引脚替代的专用功能P3.0(串行输入口)P3.1(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4(定时器0的外部输入)P3.5(定时器1的外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)(7) RST:复位端。当振荡器工作时,此时高电平将系统复位。(8) ALE/PROG:当访问外部存储器时,ALE(允许地址锁存)是一个用于锁存地址的低8位字节的输出脉冲。(9) PSEN:外部程序存储器读选取通信号。(10)EA/Vpp:访问外部程序存储器允许端。 (11) XTAL1:振荡器反向放大器输入端和内部时钟发生器的输
22、入端。XTAL2:振荡器反相放大器输出端。二、单片机的功能介绍AT89S52与89C51相比新增加很多功能,性能有了较大提升,价格基本不变化,甚至比89C51更低。新功能主要有:(1) ISP在线编程功能,是一个强大易用的功能。 (2) 最高工作频率为33MHz,从而具有了更快的计算速度。(3) 有双工UART串行通道。(4) 内部集成看门狗计时器。(5) 双数据指示器。 (6) 电源关闭标识。 (7) 全新的加密算法,这就可以有效的保护不被侵犯。兼容性方面,AT89S52向下完全兼容51全部字系列产品。比如8051、89C51等等早期MCS-51兼容产品。网络教程上的程序在89S52上一样可
23、以照常运行,是所谓的向下兼容。AT89S52与89C51相比,具体优势如下:(1) 序存储器写入方式写入程序方式不同,89C51只支持并行写入。需要VPP烧写高压。AT89S52则支持ISP在线可编程写入技术!串行写入、速度相当快、稳定性好,烧写电压也仅仅需要45V即可。(2) 范围AT89S52电源范围宽达4.05.0V。 (3) 性能AT89S52的性能远高于89C5*,89S5*系列支持最高高达33MHz的工作率。而89C51工作频率范围最高只支持到24MHz。 (4) 功能89S5*系列的加密算法,使对于89S52的解密变的不可能。程序不易外漏,这样就可以有效的保护知识产权。(5) 兼
24、容性用89S5*可以代89C5*使用,相同的程序,运行结果一样。89S5*兼容性很好。(6) 干扰性由于S5*内部集成看门狗计时器,比89C51那样外接看门狗单元电路要好。4.2单片机控制系统电路汽车转弯灯单片机控制系统电路是由单片机AT89S52、复位、电源、时钟、LED显示电路、故障检测电路、按键电路构成。电源电路给控制相关电路提供所需电源;复位电路供上电或按键时复位用。当要求重新启动单片机或者单片机处于死循环时,都可以由此电路来实现;时钟电路用来产生时钟脉冲信号,供工作使用;通过并行I/O口构成键盘和显示电路,输入程序,即可实现汽车转弯灯中各信号灯的功能操作;系统的可靠性有所提高。汽车转
25、弯灯单片机控制系统框图如图4.2所示。图4.2 汽车转弯灯控制系统硬件构成汽车转弯灯单片机控制系统电路原理图见附录 A4.2.1电源电路电源电路采用压电脑USB接口供电,也可用直流稳压电源5V电压供电,在此电源电路略去。4.2.2时钟电路图4.3 外部时钟源接法由多片单片机组成的系统中,为了各单片机间时钟信号的同步,常引入统一的外部脉冲信号作为各单片机的振荡脉冲。将外部震荡器的信号接至XTAL2内部时钟发生器的输入端,而内部反向发大器的输入端XTAL1应接地, XTAL2的逻辑电平不是TTL电平,所以需要外接一个上拉电阻。因为整个电子钟只用一块单片机,不涉及时刻信号同步问题,所以此种电路我们不
26、选用。接法如图4.3所示:4.2.3复位电路振荡器启动时间不超过10ms。在加电情况下,这个电可以使单片机复位。按键手动复位又分按键脉冲电平复位和按键电平复位,电平复位将复位端通过电阻与Vcc相连,按键脉冲复位是利用RC分电路产生正脉冲来达到复位的。在按键电平复位和按键脉冲复位两种简单的复位电路中,干扰易串入复位端,在大多数情况下,不会造成单片机的错误复位,但会引起内部寄存器错误复位,这里可在复位端引脚上接一个去藕电容。需说明的是,如复位电路中R、C的值选择不当,使复位时间过长,单片机将处于循环复位状态。电阻、电容参数适宜于6MHz晶振,能保证复位信号与电平持续时间大于2个机器周期。我们采用按
27、键电平复位的方法,电路如图4.4所示。图4.4 按键电平复位电路4.2.4键盘接口电路的设计根据设计的要求,本设计选用独立式键盘。其工作原理为,单片机引脚作为输入使用,首先置“1”。当键没有被按下时,单片机引脚上为高电平;而当键被按下去后,引脚接地,单片机引脚上为低电平。是否有键按下,以及被按下的是哪一个组成键盘的按键有触点式和非触点式俩种。如图4.5所示。图4.5 独立式键盘原理图4.3.5 信号灯电路LED具有二极管的特性,但在导通之后会发光,称之为发光二极管。与普通的灯泡一样,LED导通后,随着其俩端电压的增加,电流急剧增加,所以,必须给LED串联一个限流电阻,否则一旦通电,LED会被烧
28、坏。要用89S52单片机来控制LED,显然这个LED必须要与89S52单片机的某个脚相连。89S52单片机上除了基本连线必须用到的6个脚,还有34个引脚。这里把LED与89S52单片机的P0脚相连。本次设计中按照图4.11的接法,当AT89S52单片机的第1脚是高电平时,LED不亮,当第1脚是低电平时,LED亮。但是在汽车转弯灯里要根据汽车方向来控制信号灯,而实现LED的亮与灭。如图:图4.6 信号灯电路4.3.6 故障监控电路如图4.7所示。是这类故障监控电路的方案之一,它利用T0作检测输入,只增加1个晶体管和几个电阻。假定其中一个信号灯是受控断开的(输出口线送高电平),而其余信号灯皆受控接
29、通。这时晶体管Q1的6个输入端中有5个是低电平 。图4.7 故障监控电路让单片机发出控制使所有信号灯都接通,则Q1应截止,测试T0应呈高电平。如果这时存在控制线与+5伏电源短路或驱动晶体管断路等故障,则Q1仍导通,T0仍呈低电平,表示线路中存在着另一类故障。这种故障监控功能很容易靠软件来实现。第五章 控制系统的软件设计5.1汽车转弯灯控制系统的软件设计本设计采用需要仿真来检测一下功能是否实现,运行的环境是proteus ISIS 7 Professional,程序以Keil作为编译环境,采用c语言进行程序编写。PC机的操作系统为Windows XP SP2.编译后的程序生成16进制代码.HEX
30、文件,用STC_ISP_V479下载软件将16进制代码通过串口接口下载到系统的FLASH中运行。5.1.1汽车转弯灯控制系统的主程序设计控制系统主程序流程图如图5.1所示。开始定时器0赋初值定时器0开中断开总中断启动定时器关灯报警等待有键按下?有故障?NYN图5.1 控制系统主程序流程图Y5.1.2中断服务程序的设计中断服务的程序流程图如图5.2所示开始定时器0重置初值键功能程序返回产生相应的控制信号图5.2 中断服务的程序流程图5.1.3控制系统键功能键的功能程序流程图如图5.3所示。开始是否有键按下合刹车开关读取键值合紧急开关P1.0按下P1.1按下P1.2按下合停靠开关P1.3按下产生各
31、自不同的控制信号合左转开关合右转开关P1.4按下结束 图5.3 键的功能程序流程图程序见附录C第六章 电路功能实现6.1 软件调试对应用程序进行排错调试就是对已经进行过硬件检查的试验板和翻译成机器码的应用程序,还要进行联合排错和调试检查。目前常用的排错、调试方法有两种,一是用单片机仿真开发装置与试验板联机提供排错、调试手段,具体的方法有单步运行、断点运行、跟踪运行、全速运行等。其中单步运行方法是使所编制的程序指令仅执行一条就停止下来,检查试验板和应用程序中的错误,然后再单步执行下一条指令;断点运行方法是在程序中设置断点,使得当程序执行到断点处时停止,供设计者检查试验板和应用程序中的错误;跟踪运
32、行方法是应用程序指令一条一条地执行,开发装置摄取运行每一条指令的地址、单片机各部分数据、I/O端口等处信息,供调试者随时停止程序,对各种信息进行检查和修改;全速运行方法是实时地运行用户程序,可以检查用户程序最终执行结果,也可用Vision2软件进行程序的调试。在这次硬件仿真中,应用到了Proteus 软件。先打开软件,找到所需元器件,把元器件调入,连线,下载程序到AT89S52芯片中,运行,根据不同的按键按下的情况的不同,可直观的看到相应的信号灯亮或闪烁。在此,我们可以先把方案在软件中调试,确定方案的可行性以及需要改进的地方,同时,在硬件仿真中,可以很直观、形象地看到现象。6.2 单片机硬件功
33、能实现单片机硬件功能实现说明如下:1、利用单片机的P0口连接6个LED作为数据线输出使用;2、利用单片机的P1口连接5个开关作为数据线输入使用;3、定时器/计数器的使用定时器/计数器0,定时功能,工作方式1,提供30ms的定时时间。4、中断源的使用定时器/计数器中断0。5、按键设定P1.0=刹车;P1.1=紧急;P1.2=停靠;P1.3=左转;P1.4=右转6、显示设定P0.0-P0.5控制线,接LED显示,信号灯顺序点亮是左前灯、右前灯、左仪表板、右仪表板、左后灯、右后灯6.3 仿真操作说明及现象Proteus软件,找到不同元器件,调入后,连线,下载程序到AT89S52芯片中,运行可看到相应
34、的信号灯亮或闪烁,操作说明如下:(1) 按S1刹车键,D5、D6相应信号灯亮;(2) 按S2紧急键,D1、D2、D3、D4、D5、D6相应信号灯以1Hz频率闪烁;(3) 按S3停靠键,D1、D2、 D5、D6相应信号灯以30Hz高频率闪烁;(4) 按S4左转弯键,D1、D3、D5相应信号以1Hz频率灯亮;(5) 按S5右转弯键,D2、D4、D6相应信号灯以1Hz频率闪烁;(6) 按S1刹车、S2紧急键,D1、D2、D3、D4相应信号灯以1Hz频率闪烁;D5、D6信号灯亮;(7) 按S4左转弯、S1刹车键,D1、D3、D5相应信号灯以1Hz频率闪烁; D6信号灯亮;(8) 按S5右转弯、S1刹车
35、键,D2、D4、D6相应信号灯以1Hz频率闪烁;D5信号灯亮;(9) 按S4左转弯、S1刹车、S2紧急键,D1、D2、D3、D4、D5相应信号灯以1 Hz频率闪烁;D6信号灯亮;(10)按S5右转弯、S1刹车、S2紧急键,D1、D2、D3、D4、D6相应信号灯以1Hz频率闪烁,D5信号灯亮汽车转弯灯单片机控制系统仿真图见附录D参考文献1李广弟,朱月秀,王秀山.单片机基础M.北京:航空航天大学出版社,2000.1471562康华光,陈大钦.电子技术基础模拟部分M.武汉:高等教育出版社,1998.571163戴佳,戴卫恒.51单片机C 语言应用程序设计实例精讲M.北京:电子工业出版社,2006.2
36、5314徐爱钧,彭秀华。Keil Cx51 V7.0单片机高级语言编程与Vision2应用实践M.北京:电子工业出版社,2006.133187 附录 A汽车转弯灯单片机控制系统电路原理图 附录 B表4.2 汽车转弯灯元器件清单名 称数 量名 称数 量LED7限流电阻(100)6按键1电阻(1K)3下载线接口1上拉电阻(5.1K)5芯片插座(40PIN)1电容(30pF)2电源插针(2PIN)1电容(22F)1整流桥1拨码开关5印刷板1三极管(NPN)2电阻(200)2晶振(12MHz)1附录 C程序清单如下:#include unsigned char jianzhi;unsigned cha
37、r time; /记录中断次数,time=30时产生1HZ的sbit LF=P00; /左前灯sbit RF=P01; /右前灯sbit LY=P02; /左仪表sbit RY=P03; /右仪表sbit LB=P04; /左后灯sbit RB=P05; /右后灯sbit P3_1=P31;sbit P3_4=P34;void delay(unsigned int z) unsigned int i,j; for(i=0;iz;i+) for(j=0;j100;j+);void main(void)TMOD=0x01; /定时器0,方式1TH0=(65536-30000)/256; /置初值,
38、产生30ms定时TL0=(65536-30000)%256;EA=1;ET0=1;TR0=1;P3_1=0; /置成低电平while(1)if(jianzhi=0x1f) /检查按键是否按下,如果没有则关灯 delay(10); if(jianzhi=0x1f) P1=0xff; P0=0xff; if(P3_4=1) P3_1=1; else P3_1=0; void time0(void) interrupt 1 TH0=(65536-30000)/256; TL0=(65536-30000)%256;P1=0xff; /P1先送0xff,P1中保存是按键的值jianzhi=P1; /暂存
39、键值到jianzhijianzhi=jianzhi&0x1f; /因为高三位不用,去掉switch(jianzhi)case 0x1e: /刹车LB=0;RB=0;break;case 0x1d: /紧急if(time=15) LF=!LF; RF=!RF; LY=!LY; RY=!RY; LB=!LB; RB=!RB; time=0;elsetime=time+1;break;case 0x1B: /停靠LF=!LF;RF=!RF;LB=!LB;RB=!RB;break;case 0x17: /左转弯if(time=15)LF=!LF;LB=!LB;LY=!LY;time=0;elsetim
40、e=time+1;break;case 0x0f: /右转弯if(time=15)RF=!RF;RB=!RB;RY=!RY;time=0;elsetime=time+1; break;case 0x16: /刹车左转弯RB=0;if(time=15)LB=!LB;LF=!LF;LY=!LY;time=0;elsetime=time+1;break;case 0x0e: /刹车右转弯LB=0;if(time=15)RB=!RB;RF=!RF;RY=!RY;time=0;elsetime=time+1;break;case 0x1c: /刹车紧急 LB=0;RB=0;if(time=15)RF=!
41、RF;LF=!LF;RY=!RY;LY=!LY;time=0;elsetime=time+1;break;case 0x14: /左转刹车紧急RB=0;if(time=15)LB=!LB;RF=!RF;RY=!RY;LF=!LF;LY=!LY;time=0;elsetime=time+1;break;case 0x0c: /右转刹车紧急 LB=0;if(time=15)RB=!RB;RF=!RF;RY=!RY;LF=!LF;LY=!LY;time=0;elsetime=time+1;break;default:break; unsigned char jianzhi;unsigned char time; /记录中断次数,time=30时产生1HZ的sbit LF=P00; /左前灯sbit RF=P01;