毕业设计(论文)-自行车里程速度计的设计.doc_第1页
毕业设计(论文)-自行车里程速度计的设计.doc_第2页
毕业设计(论文)-自行车里程速度计的设计.doc_第3页
毕业设计(论文)-自行车里程速度计的设计.doc_第4页
毕业设计(论文)-自行车里程速度计的设计.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

自行车里程速度计的设计1自行车里程速度计的设计摘要摘要:本文介绍了用89C52单片机设计自行车里程速度计,运用单片机的运算和控制功能,并采用数码管实时显示所测速度和里程的速度里程计设计方案,用分频器TC4024实现二分频,用来探讨24C01传感器的用途,通过实用电路的设计来掌握速度及里程传感器的使用方法及一些性能参数。本系统含了电子电路技术,以及常用的AT89C52单片机工作原理,通过本系统的设计,把它们俩者有机结合。关键词关键词:AT89C52数码管TC402424C01传感器TheOdometerSpeedometersDesignOfTheBikeAbstract:ThisarticleintroducedusedtheMicroComputerUnitoftheAT89C52designTheOdometerSpeedometersOfTheBikeitutilizesMicroComputerUnitsoperationandcontrolfunctionanditusesthenixietuberealtimedisplaytomeasurethespeedandthecoursespeedhodometerdesignproposalitrealizestwofrequencydivisionswiththefrequencydividerofTC4024itusesfortodiscussthe24C01sensorsusethroughthepracticalelectriccircuitsdesignitgraspstheodometerspeedometersapplicationandsomeperanceparameter。ThissystemcontainstheelectroniccircuittechnologyaswellasthecommonlyusedAT89C52MicroComputerUnitsworkprinciplethroughthissystemsdesignwhichpairsthemorganicunion。Keywords:AT89C52NixietubeTC402424C01sensor自行车里程速度计的设计2目录1绪论.32AT89C52单片机.42.1AT89C52单片机简介.42.2AT89C52的管脚及其含义.43TC4024.6424C01芯片.64.124C01简介.64.224C01的特性:.75硬件电路的设计.85.1系统硬件电路.85.2系统的工作原理.86软件设计.96.1系统内存的规划.96.2系统的主要程序设计.97系统调试.117.1硬件调试.117.2软件调试.128结论.14致谢.15附录:系统完整源程序.17自行车里程速度计的设计311绪论传感器,英文名字为Sensor或Transducer,亦称换能器、变换器。在科技迅速发展的今天,传感器越来倍受重视。在日常生活、航天、航空,常规武器、交通运输,机械制造、化工、生物医学工程、自动化检测工程及计量等各项领域都被广泛应用6。目前,传感器已向新材料开发,集成化、智能化、数字化、新工艺,高精度化及高稳定、高可靠化等技术发展。特别是霍尔传感器,鉴于它的价廉、易于使用,使它广泛运用于里程计、速度计等6。单片微型计算机简称单片机,又称微控制器,特别适用于控制领域。通常单片机由单块集成电路构成,内部包含有计算机的基本部件:CPU(中央处理器),存储器和IO接口电路等。因此,单片机只需要与适当的软件及外部设备相结合,便可以成为一个单片机控制系统4。目前,场上销售的单片机有4位、8、16位、32位,并且单片机朝着高性能多种方向发展,尤其是8位单片机以经成为当前单片机的主流,主要体现在CPU功能增强、内部资源增多、引脚的功能化、低电压和低功好耗化上4。单片机因为其体积小、功能强,可靠性高,灵活方便等优点,所以可以用于各个领域,对各行各业的技术改造和产品更新换代起到重要的推动作用。本人经过学习,用AT89C52设计了一个自行车里程速度计。本设计可轮流显示自行车行使的里程和速度采用TC4024芯片作为计数器以及2C401存储数据,3个单级共阴数码管作为显示系统。本系统具有超速信响提醒功能,里程数据自动记忆,也可应用于电动自行车、摩托车、汽车等机动车仪表上。.自行车里程速度计的设计42AT89C52单片机2.12.1AT89C52单片机简介本设计选用AT89C52单片机,AT89C52是一种低功耗、高性能CMOS8位微控制器。使用Atmel公司高密度非易失性存储器技术制造,可与工业AT89C51产品指令和引脚完全兼容。2.22.2AT89C52的管脚及其含义5AT89C52的管脚及各管脚含义如下:图2.289C52管脚图各引脚功能说明:VCC电源电压;GND接地;P0口P0口是一组8位漏极开路型双向IO口,也即地址数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用;自行车里程速度计的设计5在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻;在FLASH编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻;P1口P1口是一个带内部上拉电阻的8位双向IO口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输出口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流;与AT89C51不同之处是,P1.0和P1.1还可分别作为定时计数器2的外部计数输入(P1.0T2)和输入(P1.1T2EX);FLASH编程和程序校验期间,P1接收低8位地址;P1.0和P1.1的第二功能:P1.0T2(定时计数器2外部计数脉冲输入),时钟输出;P1.1T2EX(定时计数2捕获重装载触发和方向控制);P2口P2是一个带内部上拉电阻的8位双向IO口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流;在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口输出P2锁存器的内容;FLASH编程或校验时,P2亦接收高位地址和一些控制信号;P3口P3口是一组带有内部上拉电阻的8位双向IO口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流;P3口除了作为一般的IO口线外,更重要的用途是它的第二功能:P3.0RXD(串行输入口)自行车里程速度计的设计6P3.1TXD(串行输出口)P3.2INTO(外中断0)P3.3INT1(外中断1)P3.4TO(定时计数器0)P3.5T1(定时计数器1)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号;RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位;ALEPROG当访问外部程存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的16输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲;对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG);EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。3TC4024本程序采用TC4024芯片,它是一个7位的计数器,计数器具有分频的作用,它包含有14个管脚,其7脚接地,14脚接+5V,1脚接AT89C52的INT0,即12脚在系统中此芯片起到了二分频的作用。424C01芯片4.14.124C01简介24C01是一个1K位串行CMOSEEPROM,内部含有128个8位字节,CATALYST的先进CMOS技术实际上减少了器件的功耗,24C01是一个8位字节页写缓冲器,该器件通过I2C总线接口进行操作,即此芯片采用I2C协议进行自行车里程速度计的设计7读写数据。有一个专门的写保护功能。24C01是I2C接口的,但标准51是不带I2C接口的,串口方式0是不行的,需要用IO模拟,所以随便接两个IO都可以,而且都要接上拉电阻,大概几K就行了,因为不是总线方式,所以不能用MOV指令,也不能用SBUF,要判断是否为满,可以在程序里设个变量。在这里要注意E2P芯片的寿命(一般是读写100万次,足够了)。存储数据的时候,可以对操作数和存储的数据进行比较,不相等则存储,这样可以增加使用寿命,比有些每隔1秒钟进行存储的会好多了。以下是24C01的管脚图:图4.1管脚图表3.124C01的管脚描述管脚名称功能A0、A1、A2器件地址选择SDA串行数据地址SCL串行时钟WP写保护VCC+1.8V6.0V工作电压VSS接地4.24.224C01的特性:24C01芯片具有以下特性:1.与400KHZ的I2C总线兼容;自行车里程速度计的设计82.+1.8-6.0V工作电压范围;3.低功耗CMOS技术;4.写保护功能:当WP为高电平时进入写保护状态;5.页写缓冲器;6.自定时擦写周期;7.1,000,000编程擦除周期;8.可保存数据100年;9.8脚DIP、SOIC、TSSOP封装;10温度范围:商业级、工业级和汽车级。5硬件电路的设计5.15.1系统硬件电路自行车里程速度计能自动显示自行车行驶的总里程数及行车速度,具有超速信响提醒功能,里程数据自动记忆,也可应用于电动自行车、摩托车、汽车等机动车仪表上。其硬件电路原理图如图5.1。图5.1系统原理图自行车里程速度计的设计95.25.2系统的工作原理本设计能实时地将所测的速度与累计里程数显示出来主要是将24C01传感器输入到单片机的脉冲信号,将频率实时地测量出来,然后通过单片机计算出速度和里程再将所得的数据存储到TC4024芯片中,通过AT89C52单片机计算出来的速度和里程的数据,必须通过BCD码的转换才能输出给数码管。最后由共阴数码管显示所测速度与里程。自行车里程速度计采用AT89C52单片机作控制,速度及里程传感器采用霍尔元件,其电器原理图如图5.1所示。P0口和P2口用于七段LED显示器的段码及扫描输出,在显示里程时,第三位小数点用17脚P3.7口控制点亮。P1.0和P1.1口分别用于显示里程状态和速度状态。P1.2、P1.3、P1.6和P1.7口分别用于设置轮圈的大小。P3.0口的开关用于确定显示的方式,当开关闭合时,显示速度;打开时显示里程。第12脚外中断0用于对轮子圈数的计数输入,轮子每转一圈,霍尔传感器输出一个地电平脉冲。第13脚外中断1用于控制定时器T1的启停,当输入为0时关闭定时器。此控制信号是将轮子圈数的计数脉冲经二分频后形成(见图5.1),这样,每次定时器T1的开启时间刚好为转一圈的时间。根据轮子的周长就可以计算出自行车的速度。P1.4和P1.5口用于EEPROM存储器24C01的存取控制。11脚输出用于速度超速时的报警。6软件设计6.16.1系统内存的规划由于本系统处理功能较多,因而一部分内存单元用于特定的用处。其主要内存单元用处如下:50H:EEPROM器件寻址字节存放单元;51H:EEPROM传送字节数存放单元;30H:EEPROM发送数据缓冲单元;40H:EEPROM读出数据存放单元;0A0H:EEPROM寻址字节字节写;自行车里程速度计的设计100A1H:EEPROM寻址字节字节读;62H:DPTR计数器扩展高8位;6CH:定时器T1计数器扩展高8位;6DH:定时器T1计数器扩展高816位;60H、61H、62H:里程计数单元;68H、69H、6AH、6BH:存放自行车每圈时间数;70H、71H、72H、73H:显示BCD码数据存放用;11H15H:存放被除数;16H19H:存放除数。6.26.2系统的主要程序设计1.初始化程序在本系统初始化程序中,主要完成以下工作:将T1设为外部控制定时器方式;外中断0及外中断1设为边沿触发方式;将部分内存单元清零;设置轮子周长值;开中断及定时器;将EEPROM中的数据调入内存等。2.轮圈设置出错处理程序P1.2、P1.3、P1.6、P1.7端口的开关用于设定轮子的周长,当没有设定时(至少让一个开关闭合),能从P3.1口输出一个周期为0.5S的方波信号,用作发光管闪烁及信响器提醒。3.主程序主程序根据P3.0的开关状态选择里程或速度显示,其流程图如图6.2所示。自行车里程速度计的设计11图6.2主程序流程图4.里程计数程序(外中断0服务程序)外中断0服务程序用于对12脚输入的圈脉冲进行计数,为十六进制计数器。60H为低位,62H为高位。每计数一次后,对里程数据进行一次存储操作。5.外中断1服务程序外中断1服务程序用于处理轮子转动一圈后计时数据。当标志位(00H)为1时,说明计数器溢出,放入最大时间值(为#0FFH)当标志位为0时,将计数单元(TL1、TH1、6CH、6DH)的值放入68H6BH单元。6.EEPROM存取程序本系统使用归一化I2C串口存取子程序,使用一条数据线和时钟线,采用ATMEL公司的24C01串口存储器,应用简单方便。7.显示子程序自行车里程速度计的设计12当显示里程时,先要将圈数计数器中的数据进行运算,求出总里程。当要显示速度时,要将轮子的这周长和转一圈的时间数相除,然后换算成Kmh单位。最后放入70H73H进行数据显示。7系统调试要完成一个产品的设计,有很多纷繁复杂的步骤和过程,其中最为重要和最为关键的就是系统调试。调试的步骤和方法有很多。本人也看过不少,在这次系统调试的中调试的过程我充分的发挥了仿真器的作用。7.1硬件调试硬件的焊接是一个比较繁琐的过程,繁琐的地方在于3个单联数码管的连接,线路较多,在焊接时要特别的细心,在焊接完成并烧入程序之后通电发现数码管不亮,检查了好几遍,电路无焊没有错误,于是我就怀疑可能是数码管的问题,拿去贝尔(学院的社团)测试没问题,数码管并没有烧坏。在插入芯片时要特别注意不能把芯片插反,否则就会把芯片烧掉;也要注意极性电容的方向,长的脚为正,短的为负,不能把负的接+5V,正的接地;在焊接三极管时也要注意其三个管脚的排布,还有为保护三极管不被烧换,所以3个三极管要各自接一个限流电阻(这里为4.7K)。7.2软件调试软件调试是调试的重点,同时也是出错最多的地方;在整个软件调试调试过程中我采取先部分后整体的调试方法。在整个程序的编写调试过程中我首先调试的是数码管显示系统,为此我编写了以下一段程序用于数码管显示调试,要求数码管显示0、1、2。ORG0000HMAIN:MOVP2#0FFHMOVP00C0H自行车里程速度计的设计13MOVP2#0FEHACALLDELAY1MOVP2#0FFHMOVP00F9HMOVP2#0FDHACALLDELAY1MOVP2#0FFHMOVP00A4HMOVP2#OFBHMOVP2#0FFHAJMPMAINDELAY1:MOVR6#02HAGAIN:MOVR7#8FHDELAY:DJNZR7DELAYDJNZR6AGAINRETEND结果数码管正确显示了0、1、2这三个数,显示系统调试成功。软件测试要注意一下几点:1.在编写I2C串行归一化存储子程序时本来出了点错,后经过多次调试才运行正确。2.里程速度控制程序是系统程序的重点,所以它当然也是软件调试的重点。3.显示系统最好先调试。4.用韦幅软件进行仿真时要充分利用其逐步调试功能。自行车里程速度计的设计148结论本设计能自动显示自行车行驶的总里程数及行车速度,具有超速信响报警提醒以及里程数据自动记忆的功能,也可应用于电动自行车、摩托车、汽车等机动车的仪表上。由于本系统采用的是动态扫描LED显示且共阴数码管的驱动电流不是很大,所以数码管的显示不是特别亮。但可以通过更换小点的电阻增大其驱动电流(最大驱动电流不能超过20毫安)使数码管变得更亮。自行车里程速度计的设计15致谢首先,我要感谢宋复成老师在本次毕业设计中,宋老师不厌其烦的指导我,在整个毕业设计制作过程中,使得我在单片机方面的技能得到了进一步提高。宋老师给予了全程的帮作、鼓励与指导,在此我表示衷心的感谢!同时感谢王玉芝老师在各方面给予的帮助,使我能够有一个良好的环境,在做此课程设计时王老师还为我免费提供仿真器等器材,为我更好的完成本系统的设计提供了先决条件。自行车里程速度计的设计16另外,我还要感谢我的父母,没有他们的支持,我是无法完成这个系统设计的,他们给予我的,我将来一定会努力回报他们的。最后,我还要感谢我身边的同学、朋友,他们也给了我很大的帮助。参考文献1李玉峰、倪虹霞.MCS-51系列单片机原理与接口技术.第一版.北京:人民邮电出版社.20042周兴华.手把手教你学单片机.第一版.北京:北京航空航天大学出版社.20053曾一江.单片微机原理与接口技术.第一版.北京:科学出版社.自行车里程速度计的设计1720064张俊谟.单片机中级教程原理与应用.第二版.北京:北京航空航天大学出版社.2006.P1-115张友德、赵志英、涂时亮.单片机微型机原理、应用与实验.第五版.上海:复旦大学出版社.2006.P24-276吕泉.现代传感器原理及应用.第一版.北京:清华大学出版社.2006.P1-57张毅刚、彭喜元.单片机原理与应用设计.第一版.哈尔滨:哈尔滨工业大学.8谢自美.电子线路设计.实验.测试M.武汉:华中科技大学出版社,20009曲家骇,王季秩,伺服控制系统中的传感器10邬宽民.单片机外围器件实用手册,数据传输接口器件分册.北京.北京航空航天大学出版社.2001:189-19511王贵悦,新编传感器实用手册.水利电力出版社.2002:67-8912自行车电子里程表的初步设计刁文兴南京工业职业技术学院后勤总公司江苏南京13数字式汽车里程表的设计诸德宏潘天红朱湘临江苏大学电气信息工程学院江苏镇江14电子车速里程表的单片机实现方案王锁弘,威海双丰电子传感有限公司山东威海15张福学。传感器使用电路150例.中国技术出版社M.1992年16EmbeddedMicrocontrollersandProcessorDesign,嵌入式微控制器与处理器设计,GregOsborn,机械工业出版社17AltiumDesigner(Protel)机械工业出版社18Programming8-bitPICMicrocontrollersinCwithInteractiveHardwareSimulation8位单片机C语言编程:基于PIC16MartinP.Bates人民邮电出版社自行车里程速度计的设计18附录:系统完整源程序以下是控制系统完整源程序SPEEDMILEORIKEPROGRAM60H,61H,62H作里程计数单元,6CH,6DH作T1计数扩充单元,68H,69H,6AH,6BH存放自行车每圈时间数,70H,71H,72H,73H作显示BCD码存放数用,11H15H存放被除数,16H-19H存放除数定义VSDAEQUP1.5EEPROM数据传送口VSCLEQUP1.4EEPROM时钟传送口SLAEQU50HEEPROM器件寻址字节存放单元NUMBYTEQU51HEEPROM传送字节数存放单元MTDEQU30HEEPROM发送数据缓冲单元MRDEQU40HEEPROM读出数据存放单元SLAWEQU0A0HEEPROM寻址字节写SLAREQU0A1HEEPROM寻址字节读自行车里程速度计的设计19DPHHEQU62HDPTR计数扩展高8位TH1HEQU6CH定时器T1扩展高8位TH1HHEQU6DH定时器T1扩展高8-16位PROGRAMORG0000H程序执行开始地址LJMPSTART跳至STARTORG0003H外中断0中断程序入口LJMPINTEX0跳至INTEX0中断服务程序ORG000BH定时器T0中断程序入口RETI中断返回ORG0013H外中断1中断入口LJMPINTEX1跳至INTEX1中断服务程序ORG001BH定时器T1中断程序入口LJMPINTT1跳至INTT1中断服务程序ORG0023H串口中断入口地址RETI中断返回ORG002BH定时器T2中断入口地址RETI中断返回PROGRAMCLEAR自行车里程速度计的设计20上电初始化程序CLEARMEN:MOVTMOD#90HT1为16位外部控制定时器MOVSP#75H堆栈在75H开始SETBPX0外中断0优先级为1SETBIT0外中断0用边沿触发SETBIT1外中断1用边沿触发MOV20HA清内存中特定单元MOV6CHAMOV6DHAMOV70HAMOV71HAMOV72HAMOV73HAMOV60HAMOV61HAMOV62HAMOV63HA清内存中特定单元DECAA为#0FFHMOV68HA内存置数据#0FFHMOV69HA内存置数据#0FFHMOV6AHA内存置数据#0FFHMOV6BHA内存置数据#0FFH自行车里程速度计的设计21MOVP1AP1口置1CLEAR1:JBP1.2KEY1根据P1.2P1.3P1.6P1.7设置状态在21地址单元赋自行车周长值MOV21H#0FH22寸自行车周长值LJMPCLEAR2转CLEAR2KEY1:JBP1.3KEY2MOV21H#12H24寸自行车周长值LJMPCLEAR2CLEAR2KEY2:JBP1.6KEY3MOV21H#14H26寸自行车周长值LJMPCLEAR2转CLEAR2KEY3:JBP1.7ERR四个开关都没合上,转出错处理MOV21H#19H28寸自行车周长值CLEAR2:SETBTR1开定时器T1SETBEA开中断允许SETBEX0开外中断0SETBET1开定时中断T1SETBP3.1关报警器LCALLVIICREAD将EEPROM中原里程数据调入内存RET子程序返回ERR:CPLP3.1轮周长设置出错,LED灯闪提醒ALLDL5S延时自行车里程速度计的设计22LJMPCLEAR1重新初始化,等待轮周长设置开关合上PROGRAMSTARTSTART:LCALLCLEARMEN上电初始化START1:JBP3.0DISPLAYSP3.0=1,显示里程LCALLDISPLAYV显示速度START2:SJMPSTART1转START1循环INTEX0PROGRAM里程计数程序,用外中断0实现,计数用60H-62H内存单元。INTEX0:PUSHACC累加器堆栈保护PUSHPSW状态字堆栈保护INC60H圈加1CLRA清ACJNEA60HINTEX0OUT计数没溢出转INTEX0OUTINC61H溢出进位(61H加1)CJNEA61HINTEX0OUT计数没溢出转INTEX0OUTINC62H溢出进位(62H加1)INTEX0OUT:LCALLVIICWRITE里程数据存入EEPROMSETBEX1开外中断1POPPSW状态字恢复自行车里程速度计的设计23POPACC累加器恢复RETI中断返回INTEX1PROGRAM每转1圈时间计数处理程序,每圈时间放在68H-6BH单元中。INTEX1:PUSHACC堆栈保护PUSHPSWCLREX1关外中断1JNB00HINTEX11溢出标志为0转INTEX11MOVTL1#0FFH溢出时计时单元赋#0FFH(显示速度为零)MOVTH1#0FFHMOV6CH#0FFHMOV6DH#0FFHINTEX11:MOV68HTL1将时间计数值移入暂存单元68H-6BHMOV69HTH1MOV6AH6CHMOV6BH6DHCLRA清AMOVTL1A计时单元置0MOVTH1AMOV6CHAMOV6DHA自行车里程速度计的设计24CLR00H清溢出标志POPPSW堆栈恢复POPACCRETI中断返回INTT1PROGRAMT1计数器中断服务程序。(计数器T1由外中断1输入控制,当为高电平时计时开始)INTT1:PUSHACC堆栈保护PUSHPSWINC6CH6CH计时单元加1MOVA6CH移入AJNZINTT11不等于0转INTT11INC6DH进位,6DH单元加1MOVA6DH移入AJNZINTT11不等于0转INTT11SETB00H计时器溢出,置溢出标志INTT11:POPPSW恢复堆栈POPACCRETI中断返回DISPLAYS自行车里程速度计的设计25里程显示控制程序DISPLAYS:SETBP1.0点亮LED1(显示里程状态)CLRP1.1关闭速度指示灯SETBP3.7显示小数点(最小显示为0.1公里)LCALLSSS将圈数转为公里数LCALLDISPLAY显示公里数据LJMPSTART1跳回START1DISPLAYV速度显示控制程序DISPLAYV:CLRP1.0关闭LED1(里程)灯SETBP1.1点亮LED2(显示时速状态)CLRP3.7关小数点显示LCALLVVV每圈时间换算为公里小时程序MOVA71H将十位数(BCD码)值移入ASUBBA#04H与预定报警值比较JNCWARING时速超过40时报警SETBP3.1关报警灯V1:LCALLDISPLAY显亮一次(为了改善闪烁)RET子程序返回WARING:CLRP3.1报警灯LED3点亮(并呜叫)自行车里程速度计的设计26AJMPV1转V1退出VIICWRITE归一化EEPROM存入程序(12M时钟),存入数在50H起单元VIICWRITE:ACALLWMOV9MOVSLA#SLAWMOVNUMBYT#09HLCALLWRNBYTRETWMOV9:MOV5FH#50HMOVR0#MTDMOVR1#5FHMOVR2#09HWMOV:MOVAR1MOVR0AINCR0INCR1DJNZR2WMOVRETVIICREAD归一化EEPROM读出程序(12M时钟),读出数放入60H-67H单元自行车里程速度计的设计27VIICREAD:MOVMTD#50HMOVSLA#SLAWMOVNUMBYT#01HLCALLWRNBYTMOVSLA#SLARMOVNUMBYT#08HLCALLRDNBYTACALLRMOV8RETRMOV8:MOVR0#MRDMOVR1#60HMOVR2#08HRMOV:MOVAR0MOVR1AINCR0INCR1DJNZR2RMOVRETVIICPROGRAMI2C串行归一化存储子程序STA:SETBVSDASETBVSCL自行车里程速度计的设计28NOPNOPNOPNOPCLRVSDANOPCLRVSDANOPNOPNOPNOPCLRVSCLRETSTOP:CLRVSDASETBVSCLNOPNOPNOPNOPSETBVSDANOPNOPNOPNOPCLRVSDACLRVSCLRETMACK:CLRVSDASETBVSCLNOP自行车里程速度计的设计29NOPNOPNOPCLRVSCLSETBVSDARETMNACK:SETBVSDASETBVSCLNOPNOPNOPNOPCLRVSCLCLRVSDARETCACK:SETBVSDASETBVSCLCLRF0MOVCVSDAJNCCENDSETBF0CEND:CLRVSCLRETWRBYT:MOVR0#08HWLP:RLCAJCWR1AJMPWR0WLP1:DJNZR0WLP自行车里程速度计的设计30RETWR1:SETBVSDASETBVSCLNOPNOPNOPNOPCLRVSCLCLRVSDAAJMPWLP1WR0:CLRVSDASETBVSCLNOPNOPNOPNOPCLRVSCLAJMPWLP1RDBYT:MOVR0#08HRLP:SETBVSDASETBVSCLMOVCVSDAMOVAR2RLCAMOVR2ACLRVSCLDJNZR0RLPRET自行车里程速度计的设计31WRNBYT:MOVR3NUMBYTLCALLSTAMOVASLALCALLWRBYTLCALLCACKJBF0WRNBYTMOVR1#MTDWRDA:MOVAR1LCALLWRBYTLCALLCACKJBF0WRNBYTINCR1DJNZR3WRDALCALLSTOPRETRDNBYT:MOVR3NUMBYTLCALLSTAMOVASLALCALLWRBYTLCALLCACKJBF0RDNBYTRDN:MOVR1#MRDRDN1:LCALLRDBYTMOVR1ADJNZR3ACKLCALLMNACK自行车里程速度计的设计32LCALLSTOPRETACK:LCALLMACKINCR1SJMPRDN1DISPLAYPROGRAM显示程序。显示BCD码在70H-73H单元内,采用共阴LED数码管DISPLAY:MOVR1#70H显示单元首址MOVR2#0FEH扫描字PLAY:MOVAR2扫描字入AMOVP2A放到端口MOVAR1取显示数据ANLA#0FH去掉高四位(为0)MOVDPTR#TAB取段码表首址MOVCAA+DPTR查显示数据对应段码MOVP0A段码输出LCALLDL1MS点亮1毫秒INCR1指向下一显示数据地址MOVAR2取扫描字JNBACC.3ENDOUT已扫描到第四位,转ENDOUT退出自行车里程速度计的设计33RLA循环左移MOVR2A放回R2AJMPPLAY转PLAY循环ENDOUT:SETBP2.0关扫描SETBP2.1关扫描SETBP2.2关扫描SETBP2.3关扫描RET扫描结束共阴段码表(可显示0-F)TAB:DB3FH06H5BH4FH66H6DH7DH07HDB7FH6FH77H7CH39H5EH79H71HDB00HSSSPROGRAM里程处理程序,将自行车圈数据换算成公里数SSS:MOV19H#64H除数最高位赋值MOV18H#00H除数赋值MOV17H#00H除数赋值MOV16H#00H除数赋值MOV11H#00H被除数赋值MOV12H#00H被除数赋值MOV13H62H被除数赋值自行车里程速度计的设计34MOV14H61H被

温馨提示

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

评论

0/150

提交评论