汽车尾灯控制毕业设计论文_第1页
汽车尾灯控制毕业设计论文_第2页
汽车尾灯控制毕业设计论文_第3页
汽车尾灯控制毕业设计论文_第4页
汽车尾灯控制毕业设计论文_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、摘 要本次的设计是基于单片机的汽车尾灯控制器,该设计主要由STC89C52RC单片机为核心展开的汽车尾灯控制电路的设计方法,用数码管模拟汽车尾灯,按键开关作为转弯等控制信号。通过设计汽车尾灯显示控制电路,能很好的综合运用我们所学习到的单片机、C语言、模拟电路等知识,熟悉电子电路设计的基本方法。在实际应用中有很多种方法来实现汽车尾灯的控制,但此次以单片机为核心的控制电路体现出电路简单、制作方便、容易操作、可反复擦写、性能可靠等特点。关键词:STC89C52RC,数码管,单片机,C语言,汽车尾灯AbstractThis task is to design a car tail light cont

2、roller depend onMCU, it mainly constituted by STC89C52RC then become a car taillight Control circuit, using LED simulation the car taillight, using the button turn as the control signal. Through the design of a carTaillight control circuit, the use of well integrated single chip、C language、analog ci

3、rcuit, become familiar with the basic methodof electronic circuit design. Key words:STC89C52RC,Light emitting diode,MCU,C language,taillight目 录1 设计基本要求11.1目的及任务:11.2技术要求:11.3 工作要求:12 系统的硬件电路32.1概述:32.2 系统框图设计32.3 系统功能42.4 核心芯片及功能的简介52.4.1 SCT89C52RC单片机芯片52.4.2 DS1302时钟芯片72.4.3 DS18B20数字温度器芯片82.5系统电路

4、原理图中主要模块介绍113 系统的软件设计193.1 主程序193.2 时间读取模块203.3 速度录放模块283.4 速度录放模块313.5 尾灯控制模块353.6数码管显示模块:424 系统设计中所遇到的问题及解决办法434.1 硬件部分434.2 软件部分435 总结45致 谢47参考文献49附 录511 设计基本要求1.1目的及任务:(1)通过查阅相关资料,了解汽车尾灯的工作原理;(2)学习有关数字信号处理及采样原理;(3)复习“MCS-51单片机原理及C语言程序设计”,掌握其接口扩展,包括:显示、键盘等;(4)设计汽车尾灯控制系统的原理图,构建硬件平台;(5)采用汇编或C语言编写应用

5、程序并调试通过;(6)制作出样机并测试达到功能和技术指标要求;(7)写出设计报告和答辩PPT。1.2技术要求:(1)采用DS18b20测温,显示车内温度; (2)利用时钟日历DS1302作为计时器件,显示当前的时间。(3)实时年月日显示与温度显示的切换。(4)利用按键模拟方向盘,在显示器上可指示出汽车的状态,如刹车、 倒车、左转弯、右转弯等。正常前行时可显示车速。1.3 工作要求:(1)组建基于单片机的汽车尾灯控制系统的总体结构框图;(2)根据题目要求,选择主要元器件,通过理论分析和计算选择电路参数;(3)根据操作功能要求,确定键盘控制功能;(4)按题目要求确定显示格式、位数和单位;(5)采用

6、汇编或C语言编写应用程序并调试通过;对系统进行测试和结果分析;撰写设计报告和答辩PPT。2 系统的硬件电路2.1概述:单片微型计算机简称单片机,又称微控制器或嵌入式控制器。它是将计算机的基本部件微型化,使之集成在一块芯片上的微机。片内含有CPU,ROM,RAM,并行I/0口,定时计数器,中断控制,时钟系统及总线等。它是工业控制和智能化控制系统中应用最多的一种模式。这种模式的最大特点是设计者可根据自己的实际需要开发,设计一个单片机系统,因而更加方便,更加灵活,成本更低。其基本方法是在单片机的基础上扩展一些接口,如用于模拟/数字转换的A/D,D/A接口,用于人机对话的键盘处理接口,LED和LCD接

7、口,用于输出控制的点击接口等。然后再开发一些应用软件就可组成完整的单片机系统。单片机有着体积小,功耗低,功能强,性能价格比高,易于推广应用等显著特点,在自动化装置,智能化仪器仪表,过程控制和家用电器等许多领域获得了广泛的应用。从国内开发应用单片机的情况来看,自80年代初起步以来,以INTEL公司的MCS-48系列单片机为主导机种,率先渗入到微机控制的各个领域,取得了一定的应用成果。80年代中期以来,随着性能更强,速度更快的MCS-51系列的加入,单片机得了更为迅速的推广和广泛的应用。2.2 系统框图设计SCT89C52RC单片机单片机按键控制电路555晶振电路复位电路路电源电路时钟日历电路驱动

8、电路LED数码管显示温度测量电路本系统以SCT89C52RC单片机为核心,实现对汽车速度检测,对汽车水箱温度检测和汽车尾灯控制等功能,主要由电源电路、复位电路、晶振电路、按键控制电路、LED数码管显示电路、时钟日历产生电路、温度测量电路几部分组成,系统的框图如图2.1所示。图2-1 基于AT89C52单片机的汽车尾灯控制系统的框图2.3 系统功能本系统主要实现对汽车行驶状态的检测并显示的功能,具体包括车速、水箱温度、时间、左右转弯、刹车、倒车等。同时,本系统还实现了时间调节功能。用户可根据需要按按键切换,观察汽车状态以及对应的显示等。我们总共设计了五个按键S1-S5,下图2.2所示为按键功能介

9、绍:图2-2 S1S5按键功能介绍初始化按下S2按下S3按下S4S5左转弯显示刹车显示右转弯显示按下S5按下S5按下S5温度显示时间显示车速显示按下S1倒车显示按下S1时间调节按下S1返回时间显示2.4 核心芯片及功能的简介2.4.1 SCT89C52RC单片机芯片SCT89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。主要特性如下:增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.工作电压:5.5V3.3V(5V单片机)/3.8V2

10、.0V(3V单片机)工作频率范围:040MHz,相当于普通8051的080MHz,实际工作频率可达48MHz用户应用程序空间为8K字节片上集成512字节RAM通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片具有EEPROM功能具有看门狗功能共3个16位定时器/计数器。即定时器T0、T1、T2外部中断4路,下降沿中断或低电

11、平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒通用异步串行口(UART),还可用定时器软件实现多个UART工作温度范围:-40+85(工业级)/075(商业级)PDIP封装STC89C52RC引脚功能说明:VCC(40引脚):电源电压VSS(20引脚):接地RST(9引脚):复位输入。ALE/(30引脚):地址锁存控制信号(ALE)。PSEN(29引脚):外部程序存储器选通信号 图2-3 SCT89C52RC引脚图/VPP(31引脚):访问外部程序存储器控制信号。XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。XTAL2(18引脚):振荡器反相放大器

12、的输入端。图2-1 P3口引脚复用功能引脚号复用功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)2.4.2 DS1302时钟芯片DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI 三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补

13、偿功能。工作电压宽达2.55.5V 。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。DS1302的外部引脚分配如图1 所示及内部结构如图2 所示。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。 下图分别是时钟日历的具体电路(左图)和芯片(右图)。2,3引脚接入一个外部连接的晶振振荡器,提供时钟,1,8引脚提供电源,5,6,7三个引脚连入AT89C52。其中SCL联入P20; I/O接入P21;RST接入P22。 图2-5 DS1302芯片 图2-6 时序图

14、2.4.3 DS18B20数字温度器芯片DS18B20数字温度计是DALLAS公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS1 DS18B20产品的特点:(1)、只要求一个端口即可实现通信。(2)、在DS18B20中的每个器件上都有独一无二的序列号。(3)、实际应用中不需要外部任何元器件即可实现测温。(4)、测量温度范围在55。C到125。C之间。(5)、数字温度计的分辨率用户可以从9位到12位选择。(6)、内部有温度上、下限告警设置。8B20的外形及管脚排列如下图图2-7 DS

15、18B20引脚图及引脚功能介绍2.4.4 555定时器芯片555 定时器是 一种模拟和数字功能相结合的中规模集成器件。一般用双极性工艺制作的称为 555,用 CMOS 工艺制作的称为 7555,除单定时器外,还有 图2-8 555定时器对应的双定时器 556/7556。555 定时器的电源电压范围宽,可在 4.5V16V 工作,7555 可在 318V 工作,输出驱动电流约为 200mA,因而其输出可与 TTL、CMOS 或者模拟电路电平1脚:外接电源负端VSS或接地,一般情况下接地。 它的各个引脚功能如下: 1脚:外接电源负端VSS或接地,一般情况下接地。 2脚:低触发端 3脚:输出端Vo

16、4脚:是直接清零端。当端接低电平,则时基电路不工作,此时不论、TH处于何电平,时基电路输出为“0”,该端不用时应接高电平。 5脚:VC为控制电压端。若此端外接电压,则可改变内部两个比较器的基准电压,当该端不用时,应将该端串入一只0.01F电容接地,以防引入干扰。6脚:TH高触发端 7脚:放电端。该端与放电管集电极相连,用做定时器时电容的放电。 8脚:外接电源VCC,双极型时基电路VCC的范围是4.5 16V,CMOS型时基电路VCC的范围为3 18V。一般用5V。 在1脚接地,5脚未外接电压,两个比较器A1、A2基准电压分别为的情况下,555时基电路的功能表如表示。 表 555定时器的功能表

17、清零端高触发端TH低触发端Q放电管T功能00导通直接清零10导通置011截止置11Q不变保持2.5系统电路原理图中主要模块介绍1)状态控制开关组图2.9开关控制图设定为:S2按下左转弯;S3按下刹车,此时按下S1倒车;S4按下右转弯;S5时间、温度、速度显示切换,其中显示时间时,可按下S1调时间。(依图为低电平有效)2)温度转换模块DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房

18、测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。DS18B20是单总线温度传感器,与单片机T1脚相连,测试车内温度。其主要功能特点有:(1) 独特的单线接口方式,DS18B20与单片机通信 时仅需要一条I/O线。(2) 低压供电,电源范围从 35V,也可以直接从数据 线上窃取电源。(3) 测温范围为55125,在-1085范围内误差为0.5。(4) 数据位可编程912为,转换12位温度时间为750ms(最大)。3)555构成的多谐振荡器模块 图2-11555定时器是一种模拟电路和数字电路相结合的

19、中规模集成器件。它性能优良,适用范围很广,外部接很少的阻容元件可以很方便的组成单位态触发器和多谢振荡器,以及不需要接任何器件可称为施密特触发器。因此被广泛的应用于脉冲波形的产生于变换,测量与控制等方面。工作原理:当接通电源Vcc时,如电容C上的初始电压为0,uo处于高电平,放电管T截止,电源通过R1、R2向C充电,经过t1时间后,uc达到高触发电平(2Vcc/3),uo由1变为0,这时放电管T导通,电容C通过电阻R2放电, 到t=t2时,uc下降到低触发电平(Vcc/3),uo又翻回到1状态,随即T 又截止,电容C又开始充电。如此周而复始,重复上述过程。就可以在输出端3得到矩形波电压。本次设计

20、只是用此模块进行调试,实际中汽车速度来源于汽车车轮的脉冲。并且R1=27K,W1=100K,C1=0.1uF 4)时钟日历模块 图2.12DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行

21、涓细电流充电的能力。 引脚功能及结构 图1示出DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所

22、有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK始终是输入端。 DS1302的控制字节 DS1302 的控制字如图2所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行

23、读操作,控制字节总是从最低位开始输出。 数据输入输出(I/O) 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。 DS1302的寄存器 DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式其日历。 此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两

24、类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 3 DS1302实时显示时间的软硬件 DS1302与CPU的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。图3示出DS1302与89C2051的连接图,其中,时钟的显示用LCD。 DS1302与CPU的连接 实际上,在调试程序时可以不加电容器,只加一个32.768kHz 的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以

25、在上面的电路中加入DS18B20,同时显示实时温度。只要占用CPU一个口线即可。 LCD还可以换成LED,还可以使用北京卫信杰科技发展有限公司生产的10位多功能8段液晶显示模块LCM101,内含看门狗(WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示RAM,可显示任意字段笔划,具有34线串行接口,可与任何单片机、IC接口。功耗低,显示状态时电流为2A (典型值),省电模式时小于1A,工作电压为2.4V3.3V,显示清晰。 DS1302实时时间流程 图4示出DS1302的实时时间流程。根据此流程框图,不难采集实时时间。下面结合流程图对DS1302的基本操作进行编程: DS1302与频

26、率为32.768KHz的晶振构成的日历时钟。晶振产生基准时钟信号,与芯片内部的电路组成振荡器,经过分频可以得到精确地秒信号。DS1302使用单片机的P2.0、P2.1、P2.2三条I/O线。DS1302的8号端口接备用电源。DS1302体积小,功耗低,自带31字节RAM,遇闰年自动修正,不存在“千年虫”问题。5)单片机模块单片机简介单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机储存器 RAM、只读储存器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换等电路)集成到一块硅片上构成的

27、一个小而完善的微型计算机系统,在工业控制领域的广泛应用。从上世纪80年代,由当时的4位、8为单片机,发展到现在的32位300M的高速单片机。目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师

28、。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。本次设计用单片机来实现汽车尾灯的控制 图2-13(1) P1.0P1.3和INT0脚与状态控制开关组模块相连,开关输入量;(2) T0脚接收速度模块555多谐振荡器的频率方波;(3) T1脚与18B20相连,接收车内温度信息;(4) 与EA和REST相连的为手动复位电路(高电平有效);(5) 在XTAL1、XTAL2端外接石英晶体作定时元件,内部反相放大器自激振荡,产生时钟。时钟发生器对振荡脉冲二分频。即石英晶体频率fosc=11.0592MHz时,时钟频率为f=5.5296MHz。时钟是双相信号,

29、由P1相P2相构成;(6) P0.0P0.7与74LS573相连,控制LED灯的显示内容;(7) P2.0P2.4与日历时钟模块DS1302相连;(8) P2.5、P2.6和WR连接两个或非门,进行LED灯的片选;6)8位动态数码管显示电路模块 图2-14数码管简介数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管; 按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5

30、V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。(1)数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,df"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码

31、时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。(2)2片74LS573作为7段码和位码驱动

32、锁存器,8个数码管为共阴极数码管,一片ULN2803作为位增强驱动器。ULN2803为反相驱动器。(3)根据片选和传输内容显示数据,按照程序设定值分别用动态数码管显示倒车、刹车、左转、右转。(4)显示的时间单位是:时/分/秒;温度单位为:摄氏度;车速单位是:m/s。(5)显示的车速计算式:v=(f-63)/5。f为555多谢振荡器输出的频率。常见问题(1)由于发光二极管基本上属于电流敏感器件,其正向压降的分散性很大, 并且还与温度有关,为了保证数码管具有良好的亮度均匀度,就需要使其具有恒定的工作电流,且不能受温度及其它因素的影响。另外,当温度变化时驱动芯片还要能够自动调节输出电流 的大小以实现

33、色差平衡温度补偿。(2)即使是短时间的电流过载也可能对发光管造成永久性的损坏,采用恒流驱动电路后可防止 由于电流故障所引起的数码管的大面积损坏。另外,我们所采用的超大规模集成电路还具有级联延时开关特性,可防止反向尖峰电压对发光二极管的损害。超大规模集成电路还具有热保护功能,当任何一片的温度超过一定值时可自动关断,并且可在控制室内看到故障显示。3 系统的软件设计本系统是采用单片机C编程语言进行开发的,整个系统的程序共分为6个模块,即主程序模块、时间读取模块、温度读取模块、车速读取模块、尾灯控制模块和数码管显示模块。3.1 主程序void judge() while(1) if(turn_righ

34、t=0) turn_right_display(); /如果s4键按下,执行右转显示功能 else if(turn_left=0) turn_left_display(); /如果s2键按下,执行左转显示功能 else if(brake=0) brake_display(); /如果s3键按下,执行刹车显示功能else if(change=0)/如果s5键按下,执行时间、温度、速度切换显示功能while(1) flagg=0; temp_display(); calender(); if(!turn_right|!brake|!turn_left) break; normal_display(

35、); void main() /主函数 judge(); 3.2 时间读取模块本系统利用DS1302实现时间的读取功能。用户需要查看时只需按键切换数码管显示即可。同时,我们还设置了调时功能。时钟日历读取模块主要程序代码如下:/*/ /* 日历时钟显示 */ /*/ /*/ /定义日历时钟函数void calender(void) int i=10;BIT_LED=0;ppppp=ppppp+1;TMOD=0x01;/定时器/计数器0定时方式1time0_times=65536-time0*fosc/12;time0_h =(time0_times/256 );time0_l =(time0_t

36、imes%256);TH0=time0_h;TL0=time0_l;/高8位和低8位时间常数TR0=EA=ET0=1; /启动定时器0 initial_ds1302();/上电启用,否则不走时 if(ppppp=1)display_buffer7=0X02;/秒低display_buffer6=0X05;/秒高display_buffer5=0X01;/分低display_buffer4=0X05;/分高display_buffer3=0X02;/时低display_buffer2=0X00;/时高 set_time(); /将数组中的时间置入DS1302display_bit=0x01;wh

37、ile(1) if(!normal) ad_time(); /如果按下调整时间的按钮(s1),则进入调时程序read_time(); if(!turn_right|!brake|!turn_left) /跳出时间程序 BIT_LED=0; display_bit=0x80; for(i=0;i<8;i+) BIT_LED=display_bit; display_bit=display_bit>>1; SEGMENT=0x00; TR0=ET0=0;break; else if(!change) /切换时间、速度、温度 while(1) if(change=1)flagg=f

38、lagg+1;/此处设置一个flagg判断,判断是否应该切换到速度或温度,速度与温度函数结束时与此处相同break;if(flagg=2) BIT_LED=0; display_bit=0x80; for(i=0;i<8;i+) BIT_LED=display_bit; display_bit=display_bit>>1; SEGMENT=0x00; TR0=ET0=0;break; /*/ /* 时间调整程序 */ /*/ /*/void ad_time()int i,j;Delay(300);BIT_LED=0; display_bit=0x80; for(i=0;i&

39、lt;8;i+) BIT_LED=display_bit; display_bit=display_bit>>1; SEGMENT=0x00; while(1) display_bit=0x80; for(i=0;i<6;i+) SEGMENT=get_code(display_buffer7-i); BIT_LED=display_bit; display_bit=display_bit/2; Delay(20);i=0;display_bit=0x80; if(!turn_right) display_buffer7=display_buffer7+1; if(displ

40、ay_buffer7>=0x0a) display_buffer7=0; display_buffer6=display_buffer6+1; if(display_buffer6>=0x06)display_buffer7=display_buffer6=0x00; for(j=50;j>0;j-) SEGMENT=get_code(display_buffer7); BIT_LED=0x80; SEGMENT=get_code(display_buffer6); BIT_LED=0x40; /s4调节秒钟 if(!brake) display_buffer5=displa

41、y_buffer5+1; if(display_buffer5>=0x0a) display_buffer5=0; display_buffer4=display_buffer4+1; if(display_buffer4>=0x06)display_buffer5=display_buffer4=0x00; for(j=50;j>0;j-) SEGMENT=get_code(display_buffer5); BIT_LED=0x20; SEGMENT=get_code(display_buffer4); BIT_LED=0x10; /s3调节分钟 if(!turn_lef

42、t) display_buffer3=display_buffer3+1; if(display_buffer2=0x02) if(display_buffer3=0x04)display_buffer3=display_buffer2=0x00; if(display_buffer3=0x0a) display_buffer3=0; display_buffer2=display_buffer2+1; for(j=50;j>0;j-) SEGMENT=get_code(display_buffer3); BIT_LED=0x08; SEGMENT=get_code(display_bu

43、ffer2); BIT_LED=0x04; if(!normal) Delay(300); set_time(); read_time(); break; /s2调节小时 3.3 速度录放模块/*/ /* 显示车速 */ /* */ /*/ void normal_display() while(1)int i,cs=0; BIT_LED=0; display_bit=0X08;i=0;get_speed(); while(i<3) i+; cs+; display_bit=display_bit>>1; BIT_LED=display_bit; SEGMENT=get_co

44、de(display_bufferi-1); Delay(8); if(i=3) i=0;display_bit=0x08; if(cs=200) break; if(!turn_right|!brake|!change|!turn_left) break; if(!turn_right|!brake|!turn_left)break; /跳出速度的程序else if(!change) /切换到时间或温度的程序 while(1) if(change=1)flagg=flagg+1;break;if(flagg=3)break;/*/ /* 获取速度 */ /* */ /*/ void get_

45、speed() unsigned char k1,k2,k3; int ff; TMOD=0x62; PT1=1; PT0=0; kkk=0; m=1; TL1=0xff; TH1=0xf6; TL0=0x9a; TH0=0xff;/0.1ms溢出一次 TR1=EA=ET1=1; while(t11<2) TR1=ET1=0; m=0; t11=0; ff=12411/(kkk); k1=(ff/100); k2=(ff%100)/10; k3=(ff%100)%10; display_buffer2=k1; /速度的百位 display_buffer1=k2; /速度的十位 displ

46、ay_buffer0=k3; /速度的个位3.4 速度录放模块/*/ /* 显示车速 */ /* */ /*/ void normal_display() while(1)int i,cs=0; BIT_LED=0; display_bit=0X08;i=0;get_speed(); while(i<3) i+; cs+; display_bit=display_bit>>1; BIT_LED=display_bit; SEGMENT=get_code(display_bufferi-1); Delay(8); if(i=3) i=0;display_bit=0x08; if(cs=200) break; if(!turn_right|!brake|!change|!turn_left) break; if(!turn_right|!brake|!turn_left)break; /跳出速度的程序else if(!change) /切换到时间或温度的程序 while(1) if(change=1)flagg=flagg+1;break;if(flagg=3)break;

温馨提示

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

评论

0/150

提交评论