毕业设计(论文)-MCU控制的倒车雷达报警系统.doc_第1页
毕业设计(论文)-MCU控制的倒车雷达报警系统.doc_第2页
毕业设计(论文)-MCU控制的倒车雷达报警系统.doc_第3页
毕业设计(论文)-MCU控制的倒车雷达报警系统.doc_第4页
毕业设计(论文)-MCU控制的倒车雷达报警系统.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

西南民族大学2012年毕业论-MCU控制的倒车雷达报警系统2012毕业论文MCU控制的倒车雷达报警系统 指导教师:小组成员: 目录1、引言32、倒车雷达的意义33、倒车雷达的基本原理33.1、硬件原理33.1.1、电路图和PCB33.1.2、超声波模块33.1.3、1602简介33.1.4、89S52简介33.2、软件部分33.2.1、DS1302程序33.2.2、keyscan程序33.2.3、LCD1602程序33.2.4、时钟超声波测距程序3 1、引言自2002年以来,家用轿车成为继购房之后的又一大消费热点。据新华社报道,自2003年4月份以来中国轿车产量高达16.69万辆,同比增长83%;中国国家汽车行业“十五”规划研究组预测,2005年和2010年,全国轿车保有量将分别达到843-869万辆和1423-1542万辆,轿车需求量为110-121万辆和193-220万辆;国际汽车制造商协会(DICA)也在最近预测,中国今年将成为第三大汽车市场,同时也证明中国将成为全球汽车配套服务产业的第四大市场,汽车用品及服务行业正赶上历史上从未有过的空前繁荣期。另据有关专业机构统计,目前有车一族用于每辆新购汽车的平均装潢费用4500元。现在汽车越来越多,因倒车事故引发的纠纷越来越多。以上的事实及数字读起来索然无味,但却实实在在的告诉我们一种消费的趋势正在形成,一片近乎空白的市场已凸现眼前。现在汽车出厂大多都不配倒车雷达,有安装倒车雷达的车也是和倒车雷达厂家合作生产,基于此,我们打算利用自己在学校所学的知识,自主开发设计一种小型倒车雷达系统。提升大家在驾驶过程中的安全性。2、倒车雷达的意义由于倒车过程中产生视觉盲区,无法看清车后的障碍物,司机在倒车时很容易刮伤汽车,甚至发生事故。为了减少因此带来的损失,需要一种专门的辅助装置帮助司机安全倒车。倒车雷达是汽车泊车安全辅助装置,当汽车离障碍物一定的距离内,雷达系统就会产生警报,同时如果汽车脱离安全区,雷达系统也会发出警报,从而解除了驾驶员泊车和起动车辆时前后左右探视所引起的困扰,并帮助驾驶员扫除了视野死角和视线模糊的缺陷,提高驾驶员的安全性。3、倒车雷达的基本原理3.1、硬件原理3.1.1、电路图和PCB 见下页 3.1.2、超声波模块1、产品特点:HC-SR04 超声波测距模块可提供 2cm-400cm 的非接触式距离感测功能, 测距精度可达高到 3mm;模块包括超声波发射器、接收器与控制电路。基本工作原理:(1)采用 IO 口 TRIG 触发测距,给至少 10us 的高电平信号; (2)模块自动发送 8 个40khz 的方波,自动检测是否有信号返回; (3)有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S)/2。实物如图*所示,其中VCC 供5V 电源,GND 为地 线,TRIG 触发控制 信号输入,ECHO 回 响 信 号 输 出 等 四 支 线。系统原理图如图*所示。 图* 系统原理图3、电气参数:电气参数HC-SR04 超声波模块工作电压DC 5 V工作电流15mA工作频率40Hz最远射程4m最近射程2cm测量角度15 度输入触发信号10uS 的 TTL 脉冲输出回响信号输出 TTL 电平信号,与射程成比例规格尺寸45*20*15mm4、超声波时序图:图二、 超声波时序图 以上时序图表明你只需要提供一个 10uS 以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式uS/58=厘米或者uS/148=英寸;或是:距离=高电平时间*声速(340M/S)/2;建议测量周期为 60ms以上,以防止发射信号对回响信号的影响。注:1、此模块不宜带电连接,若要带电连接,则先让模块的 GND 端先连接,否则会影响模块的正常工作。2、测距时,被测物体的面积不少于 0.5平方米且平面尽量要求平整,否则影响测量的结果.3.1.3、1602简介3.1.3.1、LCD液晶显示器简介显示器是人与机器沟通的重要界面,早期以显像管(CRT/Cathode Ray Tube)显示器为主,但随着科技不断进步,各种显示技术如雨后春笋般诞生,近来由于液晶(LCD)显示器具有轻薄短小、耗电量低、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,在近年来价格不断下跌的吸引下,逐渐取代CRT之主流地位,显示器明日之星架势十足。液晶是一种既具有液体的流动性又具有光学特性的有机化合物,它的透明程度和呈现的颜色受外加电场的影响,利用这特点便可做成字符显示器。液晶显示器(LCD)英文全称为Liquid Crystal Display,它一种是采用了液晶控制透光度技术来实现色彩的显示器。和CRT显示器相比,LCD的优点是很明显的。由于通过控制是否透光来控制亮和暗,当色彩不变时,液晶也保持不变,这样就无须考虑刷新率的问题。显示接口用来显示系统的状态,命令或采集的电压数据。本系统显示部分用的是LCD液晶模块,采用一个161的字符型液晶显示模块。 点阵图形式液晶由 M 行N 列个显示单元组成,假设 LCD 显示屏有64行,每行有 128列,每 8列对应 1 个字节的 8 个位,即每行由 16 字节,共 168=128个点组成,屏上 6416 个显示单元和显示 RAM 区 1024 个字节相对应,每一字节的内容和屏上相应位置的亮暗对应。一个字符由 68 或 88点阵组成,即要找到和屏上某几个位置对应的显示 RAM区的 8 个字节,并且要使每个字节的不同的位为1,其它的为0,为1的点亮,为0的点暗,这样一来就组成某个字符。但对于内带字符发生器的控制器来说,显示字符就比较简单了,可让控制器工作在文本方式,根据在LCD 上开始显示的行列号及每行的列数找出显示 RAM对应的地址,设立光标,在此送上该字符对应的代码即可。3.1.3.2液晶模块简介LCD1602的结构及功能:LCD1602液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系,可以查看参考文献(30)中的表4.CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM但愿,LCD1602液晶模块的引脚图如图4-3所示。LCD1602引脚介绍:Vss(1脚):一般接地。Vdd(2脚):接电源。Vee(3脚):液晶显示器对比度调整端,接电源时对比度最弱,接地时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。RS(4脚):RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。R/W(5脚):R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。E(6脚):E(或EN)端为使能(enable)端,下降沿使能。DB0(7脚):底4位三态、 双向数据总线 0位(最低位)。DB1(8脚):底4位三态、 双向数据总线 1位。DB2(9脚):底4位三态、 双向数据总线 2位。DB3(10脚):底4位三态、 双向数据总线 3位。DB4(11脚):高4位三态、 双向数据总线 4位。DB5(12脚):高4位三态、 双向数据总线 5位。DB6(13脚):高4位三态、 双向数据总线 6位。DB7(14脚):高4位三态、 双向数据总线 7位(最高位)(也是busy flang)。寄存器选择控制如表4-1。表4-1寄存器选择控制RSR/W操作说明00写入指令寄存器(清除屏等)01读busy flag(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据3.1.3.3、液晶显示部分与89S52的接口如图3-2所示。用89C51的P2口作为数据线,用P3.2、P3.1、P3.0分别作为LCD的E、R/W、RS。其中E是下降沿触发的片选信号,R/W是读写信号,RS是寄存器选择信号本模块设计要点如下:显示模块初始化:首先清屏,再设置接口数据位为8位,显示行数为1行,字型为57点阵,然后设置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位。向LCD的显示缓冲区中送字符,程序中采用2个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示.首先取一个要显示的字符或数据送到LCD的显示缓冲区,程序延时2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。图3-2 液晶与89S52的接口3.1.4、89S52简介3.1.4.1、89S52单片机的介绍89S52单片机最初是由Intel 公司开发设计的,但后来Intel 公司把51 核的设计方案卖给了几家大的电子设计生产商,譬如 SST、Philip、Atmel 等大公司。如是市面上出现了各式各样的但均以51 为内核的单片机,倒是Intel 公司自己的单片机却显得逊色了。这些各大电子生产商推出的单片机都兼容51 指令、并在51 的基础上扩展一些功能而内部结构是与51 一致的。89S52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。89S52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。【3】 89S52单片机的基本组成框图见图4-1。【3】图4-1 89S52单片机结由图4-1可见,89S52单片机主要由以下几部分组成:cpu系统 8位cpu,含布尔处理器; 时钟电路; 总线控制逻辑。存储器系统 4K字节的程序存储器(ROM/EPROM/Flash,可外扩至64KB); 128字节的数据存储器(RAM,可再外扩64KB); 特殊功能寄存器SFR。I/O口和其他功能单元 4个并行I/O口; 2个16位定时计数器; 1个全双工异步串行口;中断系统(5个中断源,2个优先级)。3.1.4.2、89S52单片机主要特性1. 一个8 位的微处理器(CPU)。2. 片内数据存储器RAM(128B),用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据等,SST89 系列单片机最多提供1K 的RAM。3. 片内程序存储器ROM(4KB),用以存放程序、一些原始数据和表格。但也有一些单片机内部不带ROM/EPROM,如8031,8032,80C31 等。目前单片机的发展趋势是将RAM 和ROM 都集成在单片机里面,这样既方便了用户进行设计又提高了系统的抗干扰性。SST 公司推出的89 系列单片机分别集成了16K、32K、64K Flash 存储器,可供用户根据需要选用。4. 四个8 位并行IO 接口P0P3,每个口既可以用作输入,也可以用作输出。5. 两个定时器计数器,每个定时器计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。为方便设计串行通信,目前的52 系列单片机都会提供3 个16 位定时器/计数器。6. 五个中断源的中断控制系统。现在新推出的单片机都不只5 个中断源,例如SST89E58RD 就有9 个中断源。7. 一个全双工UART(通用异步接收发送器)的串行IO 口,用于实现单片机之间或单机与微机之间的串行通信。8. 片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率为12MHz。SST89V58RD 最高允许振荡频率达40MHz,因而大大的提高了指令的执行速度。【3】3.1.4.3、89S52单片机管脚图 图4-2 89S52单片机管脚图部分引脚说明:时钟电路引脚XTAL1 和XTAL2:XTAL2(18 脚):接外部晶体和微调电容的一端;在8051 片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时钟电路时,该引脚输入外部时钟脉冲。要检查8051/8031 的振荡电路是否正常工作,可用示波器查看XTAL2 端是否有脉冲信号输出。XTAL1(19 脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地。控制信号引脚RST,ALE,PSEN 和EA:RST/VPD(9 脚):RST 是复位信号输入端,高电平有效。当此输入端保持备用电源的输入端。当主电源Vcc 发生故障,降低到低电平规定值时,将5V 电源自动两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。RST 引脚的第二功能是VPD,即接入RST 端,为RAM 提供备用电源,以保证存储在RAM 中的信息不丢失,从而合复位后能继续正常运行。ALE/PROG(30 脚):地址锁存允许信号端。当8051 上电正常工作后,ALE 引脚不断向外输出正脉冲信号,此频率为振荡器频率fOSC 的1/6。CPU 访问片外存储器时,ALE 输出信号作为锁存低8 位地址的控制信号。平时不访问片外存储器时,ALE 端也以振荡频率的1/6 固定输出正脉冲,因而ALE 信号可以用作对外输出时钟或定时信号。如果想确定8051/8031 芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出。如有脉冲信号输出,则8051/8031 基本上是好的。ALE 端的负载驱动能力为8 个LS 型TTL(低功耗甚高速TTL)负载。此引脚的第二功能PROG 在对片内带有4KB EPROM 的8751 编程写入(固化程序)时,作为编程脉冲输入端。PSEN(29 脚):程序存储允许输出信号端。在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。此引肢接EPROM 的OE 端(见后面几章任何一个小系统硬件图)。PSEN 端有效,即允许读出EPROMROM 中的指令码。PSEN 端同样可驱动8 个LS 型TTL 负载。要检查一个8051/8031 小系统上电后CPU 能否正常到EPROMROM 中读取指令码,也可用示波器看PSEN 端有无脉冲输出。如有则说明基本上工作正常。EA/Vpp(31 脚):外部程序存储器地址允许输入端/固化编程电压输入端。当EA 引脚接高电平时,CPU只访问片内EPROM/ROM并执行内部程序存储器中的指令,但当PC(程序计数器)的值超过0FFFH(对8751/8051 为4K)时,将自动转去执行片外程序存储器内的程序。当输入信号EA 引脚接低电平(接地)时,CPU 只访问外部EPROM/ROM 并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无片内ROM 的8031 或8032,需外扩EPROM,此时必须将EA 引脚接地。此引脚的第二功能是Vpp 是对8751 片内EPROM固化编程时,作为施加较高编程电压(一般12V21V)的输入端。输入/输出端口P0/P1/P2/P3:P0口(P0.0P0.7,3932 脚):P0口是一个漏极开路的8 位准双向I/O口。作为漏极开路的输出端口,每位能驱动8 个LS 型TTL 负载。当P0 口作为输入口使用时,应先向口锁存器(地址80H)写入全1,此时P0 口的全部引脚浮空,可作为高阻抗输入。作输入口使用时要先写1,这就是准双向口的含义。在CPU 访问片外存储器时,P0口分时提供低8 位地址和8 位数据的复用总线。在此期间,P0口内部上拉电阻有效。P1口(P1.0P1.7,18 脚):P1口是一个带内部上拉电阻的8 位准双向I/O口。P1口每位能驱动4 个LS 型TTL 负载。在P1口作为输入口使用时,应先向P1口锁存地址(90H)写入全1,此时P1口引脚由内部上拉电阻拉成高电平。P2口(P2.0P2.7,2128 脚):P2口是一个带内部上拉电阻的8 位准双向I/O口。P口每位能驱动4个LS 型TTL 负载。在访问片外EPROM/RAM 时,它输出高8 位地址。P3口(P3.0P3.7,1017 脚):P3口是一个带内部上拉电阻的8 位准双向I/O口。P3口每位能驱动4个LS型TTL负载。P3口与其它I/O 端口有很大的区别,它的每个引脚都有第二功能,如下:P3.0:(RXD)串行数据接收。P3.1:(RXD)串行数据发送。P3.2:(INT0#)外部中断0输入。P3.3:(INT1#)外部中断1输入。P3.4:(T0)定时/计数器0的外部计数输入。P3.5:(T1)定时/计数器1的外部计数输入。P3.6:(WR#)外部数据存储器写选通。P3.7:(RD#)外部数据存储器读选通。3.1.4.4、89S52单片机的中断系统89S52系列单片机的中断系统有5个中断源,2个优先级,可以实现二级中断服务嵌套。由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;由中断优先级寄存器IP安排各中断源的优先级;同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。3.1.4.5、89S52单片机的定时/计数器在单片机应用系统中,常常会有定时控制需求,如定时输出、定时检测、定时扫描等;也经常要对外部事件进行计数。80C51单片机内集成有两个可编程的定时/计数器:T0和T1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,此外,T1还可以作为串行口的波特率发生器。3.2、软件部分3.2.1、DS1302程序 #include#includeDS1302.hchar Nian,Yue,Ri,XingQi,Shi,Fen,Miao;/* DS1302 的 初 始 化 */功能:上电时对时钟芯片DS1302里面的数据全部清零void DS1302_init() /DS1302 的 初 始 化,将所有参数全清零DS1302_write(0x8e,0x00); /关写保护DS1302_write(0x80,0x80); /关时间DS1302_write(0x80,0x00);DS1302_write(0x82,0x00);DS1302_write(0x84,0x00);DS1302_write(0x86,0x00);DS1302_write(0x88,0x00);DS1302_write(0x8a,0x00); DS1302_write(0x8c,0x00);DS1302_write(0x80,0x00); /开时间DS1302_write(0x8e,0x80); /开写保护/*/* DS1302 读 一 个 字 节 */unsigned char DS1302_readByte() unsigned char i; for(i=8;i0;i-) ACC=ACC1; ACC7=DS1302_IO; DS1302_SCLK=1; DS1302_SCLK=0; return(ACC);/*/* DS1302 写 一 个 字 节 */void DS1302_writeByte(unsigned char tdata) unsigned char i; ACC=tdata; for(i=8;i0;i-) DS1302_IO=ACC0; DS1302_SCLK=1; DS1302_SCLK=0; ACC=ACC1; /*/* DS1302 写 操 作 */void DS1302_write(unsigned char tadd,unsigned char tdata) DS1302_RST=0; DS1302_SCLK=0; DS1302_RST=1; DS1302_writeByte(tadd); DS1302_writeByte(tdata); DS1302_RST=0; DS1302_SCLK=1;/*/* DS1302 读 操 作 */unsigned char DS1302_read(unsigned char tadd) unsigned char tdata; DS1302_RST=0; DS1302_SCLK=0; DS1302_RST=1; DS1302_writeByte(tadd); tdata=DS1302_readByte(); DS1302_RST=0; DS1302_SCLK=1; return(tdata);/*/* DS1302 设 置 时 间 */功能:对已经调节好的时间参数写到DS1302中/*/void DS1302_set_time() /设置时间DS1302_write(0x8e,0x00); /关写保护DS1302_write(0x80,0x80); /关时间DS1302_write(0x8c,(Nian/104)|(Nian%10);DS1302_write(0x8a,(XingQi/104)|(XingQi%10);DS1302_write(0x88,(Yue/104)|(Yue%10);DS1302_write(0x86,(Ri/104)|(Ri%10);DS1302_write(0x84,(Shi/104)|(Shi%10);DS1302_write(0x82,(Fen/104)|(Fen%10); DS1302_write(0x80,(Miao/104)|(Miao%10);DS1302_write(0x8e,0x80); /开写保护/*/* DS1302 读 取 时 间 */功能:读取时钟芯片DS1302的时间参数/*/void DS1302_read_time() /读取时间Miao =DS1302_read(0x81);Fen =DS1302_read(0x83);Shi =DS1302_read(0x85);Ri =DS1302_read(0x87);Yue =DS1302_read(0x89);XingQi=DS1302_read(0x8b);Nian =DS1302_read(0x8d);/*/3.2.2、keyscan程序 #include#includekeyscan.hunsigned char functionCount=0;unsigned char NumberofDistance5=0;unsigned int gDistance=0;unsigned int Hdistance=300,Ldistance=0;void Scan10MsDelay(void) /10毫秒延时 unsigned int x,y;for(x = 10; x 0 ; x-)for(y = 110 ; y 0 ; y-);void delay_n40us(unsigned int n) /延时函数 unsigned int i;unsigned char j; for(i=n;i0;i-)for(j=0;j0;i-)for(j=0;j Hdistance | temp4);LCDDispNum(1,1,(Nian&0x0f);LCDDispNum(2,1,(Yue4);LCDDispNum(3,1,(Yue&0x0f);LCDDispNum(4,1,(Ri4);LCDDispNum(5,1,(Ri&0x0f);LCDDispChar(6,1, );LCDDispChar(7,1, );LCDDispNum(8,1,(Shi4);LCDDispNum(9,1,(Shi&0x0f);LCDDispChar(10,1,:);LCDDispNum(11,1,(Fen4);LCDDispNum(12,1,(Fen&0x0f);LCDDispChar(13,1,:);LCDDispNum(14,1,(Miao4);LCDDispNum(15,1,(Miao&0x0f);LCDDispChar(0,2,H);LCDDispNum(1,2,(Hdistance/100);LCDDispNum(2,2,(Hdistance/10%10);LCDDispNum(3,2,(Hdistance%10);LCDDispChar(4,2, );LCDDispChar(5,2,L);LCDDispNum(6,2,(Ldistance/100);LCDDispNum(7,2,(Ldistance/10%10);LCDDispNum(8,2,(Ldistance%10);LCDDispChar(9,2, );LCDDispChar(10,2,N);LCDDispChar(11,2,NumberofDistance0+48);LCDDispChar(12,2,NumberofDistance1+48);LCDDispChar(13,2,NumberofDistance2+48);LCDDispChar(14,2,.);LCDDispChar(15,2,NumberofDistance3+48); delay_ms(90); gDistance = 0;LCDWriteCommand(0x01);/清屏/-/if(Key2 = 0) /同上,判断第二个按键情况 /功能键Scan10MsDelay();if(Key2 = 0)functionCount+;if(functionCount = 1)Miao = (Miao & 0x0f) + (Miao4) * 10);/BCD码转成10进制 Fen = (Fen & 0x0f) + (Fen4) * 10);/BCD码转成10进制Shi = (Shi & 0x0f) + (Shi4) * 10);/BCD码转成10进制Ri = (Ri & 0x0f) + (Ri4) * 10);/BCD码转成10进制Yue = (Yue & 0x0f) + (Yue4) * 10);/BCD码转成10进制Nian = (Nian & 0x0f) + (Nian4) * 10);/BCD码转成10进制LCDDispNum(14,1,(Miao/10);/写的是显示光标的前一个字符LCDCursor();/显示光标else if(functionCount = 2)LCDDispNum(11,1,(Fen/10);LCDCursor();else if(functionCount = 3)LCDDispNum(8,1,(Shi/10);LCDCursor();else if(functionCount = 4)LCDDispNum(4,1,(Ri/10);LCDCursor();else if(functionCount = 5)LCDDispNum(2,1,(Yue/10);LCDCursor();else if(functionCount = 6)LCDDispNum(0,1,(Nian/10);LCDCursor();else if(functionCount = 7)LCDDispNum(2,2,(Hdistance/10%10);LCDCursor();else if(functionCount = 8)LCDDispNum(7,2,(Ldistance/10%10);LCDCursor();else if(functionCount = 9)LCDNotCursor();DS1302_set_time();/把增加的时间写入1302functionCount = 0;while(!Key2);/-/if(Key3 = 0) /同上,判断第二个按键情况 /增加键Scan10MsDelay();if(Key3 = 0)switch (functionCount)case 1:/改变秒Miao+;/秒增加if(Miao = 60)Miao = 0;LCDDispNum(15,1,(Miao%10);/显示刷新 个位LCDDispNum(14,1,(Miao/10);break;case 2:/改变分Fen+;if(Fen = 60)Fen = 0;LCDDispNum(12,1,(Fen%10);LCDDispNum(11,1,(Fen/10);break;case 3:/改变时Shi+;if(Shi = 24)Shi = 0;LCDDispNum(9,1,(Shi%10);LCDDispNum(8,1,(Shi/10);break;case 4:/改变日Ri+;if(Ri = 32)Ri = 1;LCDDispNum(5,1,(Ri%10);LCDDispNum(4,1,(Ri/10);break;case 5:/改变月Yue+;if(Yue = 13)Yue = 1;LCDDispNum(3,1,(Yue%10);LCDDispNum(2,1,(Yue/10);break;case 6:/改变年Nian+;if(Nian = 100)Nian = 0;LCDDispNum(1,1,(Nian%10);LCDDispNum(0,1,(Nian/10);break;case 7:Hdistance+;LCDDispNum(1,2,(Hdistance/100);LCDDispNum(3,2,(Hdistance%10);LCDDispNum(2,2,(Hdistance/10%10);break;case 8:Ldistance+;LCDDispNum(6,2,(Ldistance/100);LCDDispNum(8,2,(Ldistance%10);LCDDispNum(7,2,(Ldistance/

温馨提示

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

评论

0/150

提交评论