自行车里程速度计的设计剖析_第1页
自行车里程速度计的设计剖析_第2页
自行车里程速度计的设计剖析_第3页
自行车里程速度计的设计剖析_第4页
自行车里程速度计的设计剖析_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、1、弓I言32、AT89C52 单片机42. 1 AT89C52单片机简介42.2 AT89C52的管脚及其含义43、TC4024 84、24C01 芯片94. 1 24C01 简介94. 2 24C01 的特性:105、硬件电路的设计115.1系统硬件电路115.2系统的工作原理126、软件设计136. 1系统内存的规划136. 2系统的主要程序设计137、系统调试167.1硬件调试167.2软件调试16参考文献 181引言 传感器,英文名字为Sensor或Transducer,亦称换能器、 变换器。在科技迅速发展的今天,传感器越来倍受重视。在日常生活、 航天、航空,常规武器、交通运输,机械

2、制造、化工、生物医学工程、 自动化检测工程及计量等各项领域都被广泛应用。目前,传感器己 向新材料开发,集成化、智能化、数字化、新工艺,高精度化及高稳 定、高可靠化等技术发展。特别是霍尔传感器,鉴于它的价廉、易于 使用,使它广泛运用于里程计、速度计等。单片微型计算机简称 单片机,又称微控制器,特别适用于控制领域。通常单片机由单块集 成电路构成,内部包含有计算机的基木部件:CPU (中央处理器),存 储器和I/O接口电路等。因此,单片机只需要与适当的软件及外部设 备相结合,便可以成为一个单片机控制系统。目前,场上销售的单 片机有4位、8、16位、32位,并且单片机朝着高性能多种方向发展, 尤其是8

3、位单片机以经成为当前单片机的主流,主要体现在CPU功能 增强、内部资源增多、引脚的功能化、低电压和低功好耗化上。 单 片机因为其体积小、功能强,可靠性高,灵活方便等优点,所以可以 用于各个领域,对各行各业的技术改造和产品更新换代起到重要的推 动作用。 本人经过学习,用AT89C52设计了一个自行车里程/速度 计。本设计可轮流显示自行车行使的里程和速度,采用TC4024芯片 作为计数器以及2C401存储数据,3个单级共阴数码管作为显示系统。 木系统具有超速信响提醒功能,里程数据自动记忆,也可应用于电动 自行车、摩托车、汽车等机动车仪表上。2 AT89C52单片机2. 1 AT89C52单片机简介

4、木设计选用AT89C52单片机,AT89C52是一种低功耗、高性能CMOS 8位微控制器。使用Atmel公司高密度非易失性存储器技术制造, 可与工业AT89C51产品指令和引脚完全兼容。2.2 AT89C52的管脚及其含义AT89C52的管脚及各管脚含义如下:图2. 289C52管脚图各引脚功能说明:VCC电源电压;GND接地;P0 口一一P0 口是一组8位漏极开路型双向I/O 口,也即地址/数据总 线复用口。作为输岀口用时,每位能吸收电流的方式驱动8个TTL逻 辑门电路,对端口 P0写“1”时,可作为高阻抗输入端用; 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8位)和数据

5、总线复用,在访问期间激活内部上拉电阻;在FLASH编程时,P0 口接收指令字节,而在程序校验时,输出指令 字节,校验时,要求外接上拉电阻;P1 口P1 口是一个带内部上拉电阻的8位双向I/O 口,P1的输出 缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“ 1 ”, 通过内部的上拉电阻把端口拉到高电平,此时可作输出口。作输入口 使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出 一个电流;与AT89C51不同之处是,P1. 0和Pl. 1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(Pl. 1/T2EX);FLASH编程和程序校验期间,P1接收低8位

6、地址;P1.0和P1. 1的第二功能:P1.0 T2 (定时/计数器2外部计数脉冲输入),时钟输出;Pl. 1 T2EX (定时/计数2捕获/重装载触发和方向控制);P2 口P2是一个带内部上拉电阻的8位双向I/O 口,P2的输出缓 冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口 P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口, 作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低 时会输出一个电流;在访问外部程序存储器或16位地址的外部数据存储器时,P2 口送出 高8位地址数据。在访问8位地址的外部数据存储器时,P2 口输出 P2锁存器的内容;FLASH编

7、程或校验时,P2亦接收高位地址和一些控制信号;P3 口P3 口是一组带有内部上拉电阻的8位双向I/O 口。P3 口输 出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3 口 写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时, 被外部拉低的P3 口将用上拉电阻输岀电流;P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能:P3.0 RXD伸行输入口)P3. 1 TXD(串行输出口)P3. 2 INTO(外中断 0)P3. 3 INT1(外中断 1)P3.4 T0 (定时/计数器0)P3.5 T1 (定时/计数器1)P3.6 WR(外部数据存储器写选通)P3.7 R

8、D (外部数据存储器读选通)此外,P3 口还接收一些用于FLASH闪存编程和程序校验的控制信号;RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以 上高电平将是单片机复位;ALE/PROG当访问外部程存储器或数据存储器时,ALE (地址锁存 允许)输岀脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以 时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或 用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE脉冲;对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG);EA端为高电平(接V“端),CPU则执行内部程序存储器的指令。3 TC4024本

9、程序采用TC4024芯片,它是一个7位的计数器,计数器具有 分频的作用,它包含有14个管脚,其7脚接地,14脚接+5V, 1脚接 AT89C52的INTO,即12脚,在系统中此芯片起到了二分频的作用。4 24C01芯片4.1 24C01 简介24C01是一个1K位串行CMOS EEPROM,内部含有128个8位字 节,CATALYST的先进CMOS技术实际上减少了器件的功耗,24C01是 一个8位字节页写缓冲器,该器件通过1光总线接口进行操作,即此 芯片采用I'C协议进行读写数据。有一个专门的写保护功能。24C01是I'C接口的,但标准51是不带I'C接口的,串口方式0

10、 是不行的,需要用10模拟,所以随便接两个10都可以,而且都要 接上拉电阻,大概几K就行了,因为不是总线方式,所以不能用MOV 指令,也不能用SBUF,要判断是否为满,可以在程序里设个变量。在这里要注意E:P芯片的寿命(一般是读写100万次,足够了)。 存储数据的时候,可以对操作数和存储的数据进行比较,不相等则存 储,这样可以增加使用寿命,比有些每隔1秒钟进行存储的会好多了。 以下是24C01的管脚图:A0A1A2VSSYCCVPSCLSDA图4.1管脚图表4. 1 24C01的管脚描述管脚名称功能AO、 Al、 A2器件地址选择SDA串行数据/地址SCL串行时钟WP写保护VCC+1. 8V6

11、. 0V工作电压VSS接地4.2 24C01的特性:24C01芯片具有以下特性:1. 与4OOKHZ的1光总线兼容;2. +1.8-6. OVT作电压范围;3. 低功耗CMOS技术;4. 写保护功能:当WP为高电平时进入写保护状态;5. 页写缓冲器;6. 自定时擦写周期;7. 1, 000, 000编程擦除/周期;8. 可保存数据100年;9. 8 脚 DIP、SOIC、TSSOP 封装;10温度范围:商业级、工业级和汽车级。5硬件电路的设计5.1系统硬件电路自行车里程/速度计能自动显示自行车行驶的总里程数及行车速 度,具有超速信响提醒功能,里程数据自动记忆,也可应用于电动自 行车、摩托车、汽

12、车等机动车仪表上。其硬件电路原理图如下图。图5.1系统原理图5.2系统的工作原理本设计能实时地将所测的速度与累计里程数显示出来,主要是将24C01传感器输入到单片机的脉冲信号,将频率实时地测量出来,然后通过单片机计算出速度和里程,再将所得的数据存储到TC4024芯片中,通过AT89C52单片机计算出来的速度和里程的数据,必须通过BCD码的转换才能输出给数码管。最后由共阴数码管显示所测速度与 里程。自行车里程/速度计采用AT89C52单片机作控制,速度及里程传感器 采用霍尔元件,其电器原理图如上图所示。P0 口和P2 口用于七段LED 显示器的段码及扫描输出,在显示里程时,第三位小数点用17脚P

13、3. 7 口控制点亮。P1.0和P1. 1 口分别用于显示里程状态和速度状态。Pl. 2、Pl. 3、P1.6和P1. 7 口分别用于设置轮圈的大小。P3.0 口 的开关用于确定显示的方式,当开关闭合时,显示速度;打开时显示 里程。第12脚外中断0用于对轮子圈数的计数输入,轮子每转一圈, 霍尔传感器输出一个地电平脉冲。第13脚外中断1用于控制定时器 T1的启停,当输入为0时关闭定时器。此控制信号是将轮子圈数的 计数脉冲经二分频后形成,这样,每次定时器T1的开启时间刚好为 转一圈的时间。根据轮子的周长就可以计算岀自行车的速度。P1.4 和P1. 5 口用于EEPROM存储器24C01的存取控制。

14、11脚输出用于速 度超速时的报警。6软件设计6. 1系统内存的规划由于木系统处理功能较多,因而一部分内存单元用于特定的用 处。其主要内存单元用处如下:50H:EEPR0M器件寻址字节存放单元;51H:EEPR0M传送字节数存放单元;30H:EEPROM发送数据缓冲单元;40H: EEPROM读出数据存放单元;OAOH: EEPROM寻址字节字节写;0A1H: EEPROM寻址字节字节读;62 H:DPTR计数器扩展高8位;6C H:定时器T1计数器扩展高8位;6D H:定时器T1计数器扩展高816位;60 H、61 H、62 H:里程计数单元;68 H、69 H、6A H、6B H:存放自行车

15、每圈时间数;70 H、71 H、72 H、73 H:显示BCD码数据存放用;11 H15 H:存放被除数;16 H19 H:存放除数。6. 2系统的主要程序设计1. 初始化程序在本系统初始化程序中,主要完成以下工作:将T1设为外部 控制定时器方式;外中断0及外中断1设为边沿触发方式;将部 分内存单元清零;设置轮子周长值;开中断及定时器;将EEPROM 中的数据调入内存等。2. 轮圈设置出错处理程序Pl. 2、Pl. 3、P1.6、P1.7端口的开关用于设定轮子的周长, 当没有设定时(至少让一个开关闭合),能从P3. 1 口输出一个周 期为0. 5S的方波信号,用作发光管闪烁及信响器提醒。3.

16、里程计数程序(外中断0服务程序)外中断0服务程序用于对12脚输入的圈脉冲进行计数,为十 六进制计数器。60H为低位,62H为高位。每计数一次后,对里程 数据进行一次存储操作。4. 外中断1服务程序外中断1服务程序用于处理轮子转动一圈后计时数据。当标 志位(00H)为1时,说明计数器溢出,放入最大时间值(为#0FFH); 当标志位为0时,将计数单元(TL1、TH1、6CH、6DH)的值放入 68H6BH 单元。5. EEPROM存取程序木系统使用归一化1光串口存取子程序,使用一条数据线和时 钟线,采用ATMEL公司的24C01串口存储器,应用简单方便。6. 显示子程序当显示里程时,先要将圈数计数

17、器中的数据进行运算,求出总里程。当要显示速度时,要将轮子的这周长和转一圈的时间数相除,然后换算成Km/h单位。最后放入70H-73H,进行数据显示7 调试7.1硬件调试硬件的焊接是一个比较繁琐的过程,线路较多,在焊接时要 特别的细心。在插入芯片时要特别注意不能把芯片插反,否则就 会把芯片烧掉;也要注意极性电容的方向,长的脚为正,短的为负,不能把负的接+5V, 正的接地;在焊接三极管时也要注意其三个管脚的排布,还有为 保护三极管不被烧换,所以3个三极管要各自接一个限流电阻(这 里为4. 7K)o7. 2软件调试软件调试是调试的重点,同时也是出错最多的地方;在整个软件 调试调试过程中我采取先部分后

18、整体的调试方法。在整个程序的编写调试过程中我首先调试的是数码管显示系统, 为此我编写了以下一段程序用于数码管显示调试,要求数码管显示0、 1、2oORG0000HMAIN:MOVP2, #OFFHMOVP0, OCOHMOVP2, #OFEHACALLDELAY1MOVP2,hOFFHP0,0F9HMOVP2,#OFDHACALLDELAY1MOVP2,#OFFHMOVP0,0A4HMOVP2,hOFBHDJNZRETENDMOVAJMPDELAY1: MOVAGAIN:MOVDELAY:DJNZP2, #OFFHMAINR6, #02HR7, #8FHR7, DELAYR6, AGAIN参考

19、文献1 李玉峰、倪虹霞.MCS-51系列单片机原理与接口技术.第一版.北京:人民邮电出版社.20042 周兴华.手把手教你学单片机.第一版.北京:北京航空航 天大学出版社.20053 曾一江.单片微机原理与接口技术.第一版.北京:科学出 版社.20064 张俊谟.单片机中级教程一原理与应用.第二版.北京:北京航空航天大学出版社.2006.P1-115 张友德、赵志英、涂时亮.单片机微型机原理、应用与实验.第五版.上海:复旦大学出版社.2006.P24-276 吕泉.现代传感器原理及应用.第一版.北京:清华大学出 版社.2006.P1-57 张毅刚、彭喜元.单片机原理与应用设计.第一版.哈尔 滨

20、:哈尔滨工业大学.8 谢自美.电子线路设计.实验测试M.武汉:华中科技大学 出版社,20009 曲家骇,王季秩,伺服控制系统中的传感器10 郭宽民.单片机外围器件实用手册,数据传输接口器件分册.北京.北京航空航天大学出版社.2001: 189-19511 王贵悦,新编传感器实用手册.水利电力出版社.2002: 67-8912 自行车电子里程表的初步设计刁文兴南京工业职业技 术学院后勤总公司江苏南京13 数字式汽车里程表的设计诸德宏,潘天红,朱湘临江苏大学电气信息工程学院,江苏镇江14 电子车速里程表的单片机实现方案王锁弘,威海双丰 电子传感有限公司山东威海15 张福学。传感器使用电路150例.

21、中国技术出版社MJ.1992 年16 Embedded Microcontrollers and Processor Design, 嵌入式微控制器与处理器设计,Greg Osborn,机械匸业岀 版社17 Altium Designer (Protel),机械工业出版社Programming 8-bit PIC Microcontrollers in C with Interactive Hardware Simulation, 8 位单片机 C 语言编 程:基J' PIC16 , Martin P. Bates,人民邮电出版社附录 源程丿芋:以下是控制系统完整源程序;SPEED/M

22、ILE OR IKE PROGRAMMTDMRDSLAWSLARDPHHTH1HTH1HHEQIQIEQIEQI30H;EEPROM发送数据缓冲单元40H;EEPROM读出数据存放单元OAOH;EEPROM寻址字节写0A1H;EEPROM寻址字肖读62H;DPTR计数扩展高8位6CH;泄时器T1扩展髙8位6DH;泄时器T1扩展髙8-16位;60H, 61H, 62H作里程汁数单元,6CH, 6DH作T1计数扩充单元,68H, 69H, 6AH, 6BH 存放自行车每圈时间数,70H, 71H, 72H, 73H作显示BCD码存放数用,11H-15H存放被除数,16H-19H存放除数;定义VSD

23、AEQUPl. 5;EEPROM数据传送口VSCLEQUPl. 4;EEPROM时钟传送口SLAEQU50H;EEPROM器件寻址字廿元NUMBYTEQU51H;EEPROM传送字节数单元PRO GRAM INPUTORG0000H;程序执行开始地址LJMPSTART;跳至STARTORG0003H;外中断0中断程序入口LJMPINTEXO;跳至INTEXO中断服务程序ORGOOOBH;泄时器TO中断程序入口RETI;中断返回ORG0013H;外中断1中断入口LJMPINTEX1;跳至INTEX1中断服务程序ORGOO1BH;泄时器T1中断程序入口LJMPINTT1;跳至INTT1中断服务程序

24、ORG0023H;串口中断入口地址RETI;中断返回ORG002BH;泄时器T2中断入口地址RETI;中断返回;PROGRAM CLEAR ;上电初始化程序CLEARMEN:MOV TMOD, #90H;T1为16位外部控制左时器MOV SP, #75H:堆栈在75H开始SETBPXO;外中断0优先级为1SETBITO外中断0用边沿触发SETBIT1外中断1用边沿触发MOV20H, A淸内存中特左单元MOV6CH, AMOV6DH, AMOV7OH, AMOV71H, AMOV72H, AMOV73H, AMOV60H, AMOV61H, AMOV62比AMOV63比A淸内存中特左单元DECA

25、A 为#OFFHMOV68H, A内存這数据SOFFHMOV69H, A;内存置数据#OFFHMOV6AH, A;内存置数据#OFFHMOV6BH, A;内存宜数据#OFFHMOVPl, A;P1 口置 1CLEAR1:JBPl. 2, KEY1;根据 P1. 2, P1. 3, P1. 6, P1. 7 设置状态f在21地址单元赋自行车周长值MOV21H, #OFH922寸自行车周长值LJMPCLEAR2;转 CLEAR2KEY1:JBPl. 3, KEY2MOV21H, #12Hf24寸自行车周长值LJMPCLEAR2;CLEAR2KEY2:JBPl. 6, KEY3MOV21H, #14

26、H26寸自行车周长值LJMPCLEAR2f转 CLEAR2KEY3:JBPl. 7, ERR四个开关都没合上,转出错处理MOV21H, #19H28寸自行车周长值CLEAR2:SETBTRI9开定时器T1SETBEA开中断允许SETBEXO开外中断0SETBET1开定时中断T1SETBP3. 1关报警器LCALLVIICREAD;将EEPROM中原里程数据调入内存RET;子程序返回ERR:CPLP3. 1;轮周长设置出错,LED灯闪提醒ALLDL5S延时LJMPCLEAR1 ;重新初始化,等待轮周长设置开关合上;PROGRAM START ;START:START1:LCALLCLEARMEN

27、;上电初始化JBP3.0, DISPLAYS ; P3.0=b 显示里程LCALL DISPLAW;显示速度START2:SJMPSTART 1;转 START 1 循环INTEXO PROGRAMINTEXO:PUSHACCPUSHPSWINC60HCLRACJNEA, 60H,INC61HCJNEA, 61H,INC62HINTEXOOUT:LCALLVIICWRITESETBEXIPOPPSWPOPACCRETI里程计数程序,用外中断0实现,计数用60H-62H内存单元。;累加器堆栈保护;状态字堆栈保护;圈加1;淸AINTEXOOUT ;讣数没溢出转 INTEXOOUT ;溢岀进位(61

28、H加1)INTEXOOUT ;汁数没溢出转 INTEXOOUT;溢出进位(62H加1);里程数据存入EEPROM;开外中断1;状态字恢复;累加器恢复;中断返回INTEX1 PROGRAM每转1圈时间计数处理程序,每圈时间放在68H-6BH单元中。INTEX1:PUSHACC;堆栈保护PUSHPSWfCLREXI;关外中断1JNB00比 INTEXU;溢出标志为0转INTEX11MOVTL1, #OFFH;溢岀时计时单元赋凯FFH (显示速度为零)MOVTH1, #OFFHMOV6CH, #OFFHMOV6DH, #OFFHINTEX11:MOV68H, TL1;将时间计数值移入暂存单元68H-

29、6BHMOV69H, TH1rMOV6AH, 6CHrMOV6BH, 6DHfCLRA;淸AMOVTL1,AMOVTH1,AMOV6CH,AMOV6DH,ACLROOHPOPPSWPOPACCRETI计时单元置0淸溢出标志 堆栈恢复;中断返回INTT1 PROGRAM;T1计数器中断服务程序o (计数器T1INTT1:PUSHACCPUSHPSWINC6CHMOVA, 6CHJNZINTT11INC6DHMOVA, 6DHJNZINTT11SETBOOHINTT11:POPPSWPOPACCRETI;DISPLAY S;里程显示控制程序DISPLAYS:SETBP1.0CLRPl. 1SETB

30、P3.7LCALLsssLCALLDISPLAYLJMPSTART1;DISPLAYV ;速度显示控制程序DISPLAYV:CLRP1.0由外中断1输入控制,当为髙电平时计时开始) ;堆栈保护;6CH计时单元加1;移入A;不等于0转INTT11;进位,6DH单元加1;移入A;不等于0转INTT11;计时器溢出,置溢出标志;恢复堆栈;中断返回;点亮LED1 (显示里程状态);关闭速度指示灯;显示小数点(最小显示为0.1公里);将圈数转为公里数;显示公里数据;跳回 START 1;关闭LED1 (里程)灯SETBPl. 1;点亮LED2(显示时速状态)CLRP3. 7;关小数点显示LCALLWV;

31、每圈时间换算为公里/小时程序MOVA, 71H;将十位数(BCD码)值移入ASUBBA, #04H;与预建报警值比较JNCWARING;时速超过40时报警SETBP3. 1;关报警灯VI:LCALLDISPLAY;显亮一次(为了改善闪烁)RET;子程序返回WARING:CLRP3. 1;报警灯LED3点亮(并呜叫)AJMPVI;转VI退出;VIIC WRITE;9归一化EEPROM存入程序(12M时钟),存入数在50H起单元VIICWRITE:ACALLW0V9MOVSLA, #SLAWMOVNUMBYT, #09HLCALLWRNBYTRETWM0V9:MOV5FH, #50HMOVRO,

32、#MTDMOVRl, #5FHMOVR2, #09HWM0V:MOVA, R1MOVR0, AINCROINCR1DJNZR2, WMOVRET;VIICRE AD9 9 f f 9 9 9 f V;归一化EEPROM读出程序(12M时钟),读出数放入60H-67H单元VIICREAD:MOV MTD, #50HMOVSLA, #SLAWMOVNUMBYT, #01HLCALLWRNBYTMOVSLA, #SLARMOVNUMBYT, #08HLCALLRDNBYTACALLRM0V8RETRM0V8:MOVRO, #MRDMOVRl, #60HMOVR2, #08HRMOV:MOVA, R0

33、MOVR1, AINCROINCR1DJNZR2, RMOVRET;VIICPROGRAMV 9I2C串行归一化存储子程序STA:SETBVSDASETBNOPNOPNOPNOPVSCLCLRNOPVSDACLRNOPNOPNOPNOPVSDACLRRETVSCLSTOP:CLRVSDASETBNOPNOPNOPNOPVSCLSETBNOPNOPNOPNOPVSDACLRVSDACLRRETVSCLMACK:CLRVSDASETBNOPNOPNOPNOPVSCLCLRVSCLSETBRETVSDAMNACK:SETBVSDASETBNOPNOPNOPNOPVSCLCLRVSCLCLRRETVS

34、DACACK:SETBVSDASETBVSCLCLRFOMOVC, VSDAJNCCENDSETBFOCEND:CLRRETVSCLWRBYT:MOVRO, #08HWLP:RLCAJCWR1AJMPWROWLP1:DJNZRETRO, WLPWR1:SETBVSDASETBNOPNOPNOPNOPVSCLCLRVSCLCLRVSDAAJMPWLP1WRO:CLRVSDASETBNOPVSCLNOPNOPNOPCLRAJMPVSCLWLP1RDBYT:MOVRO, #08HRLP:SETBVSDASETBVSCLMOVC, VSDAMOVA, R2RLCAMOVR2, ACLRVSCLDJNZ

35、RETRO, RLPWRNBYT:MOVR3, NUMBYTLCALLSTAMOVA, SLALCALLWRBYTLCALLCACKJBFO, WRNBYTMOVRl, #MTDWRDA:MOVA, R1LCALLWRBYTLCALLCACKJBFO, WRNBYTINCR1DJNZR3, WRDALCALLRETSTOPRDNBYT:MOVR3, NUMBYTLCALLSTAMOVA, SLALCALLWRBYTLCALLCACKJBFO, RDNBYTRDN:MOVRl, #MRDRDN1:LCALLRDBYTMOVR1, ADJNZR3, ACKLCALLMNACKLCALLRETSTO

36、PACK:LCALLMACKINCR1SJMPRDN1;DISPLAYPROGRAM;显示程序。显示BCD码在70H-73H单元内,采用共阴LED数码管DISPLAY:MOVRl, #70H;显示单元首址MOVR2, #OFEH;扫描字PLAY:MOVA, R2;扫描字入AMOVP2, A;放到端口MOVA, R1;取显示数据ANL扎#OFH;去掉髙四位(为0)MOVDPTR, STAB;取段码表首址MOVCA, SA+DPTR;MOVPO,A;段码输出LCALLDL1MS;点亮1亳秒INCR1;指向下一显示数据地址MOVA, R2;取扫描字JNBACC.3, ENDOUT ;已扫描到第四位,

37、转ENDOUT退出RLA循环左移MOVR2, A放回R2AJMPPLAY转PLAY循环ENDOUT:SETBP2. 0;关扫描SETBP2. 1关扫描SETBP2.2关扫描SETBP2.3关扫描RET扫描结束;共阴段码表(可显示0-F)TAB:DB3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07HDB7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71HDBOOH;SSS PROGRAM ;里程处理程序,将自行车圈数据换算成公里数SSS:MOV19比#64H除数最高位赋值MOV18H,#00H除数赋值MOV17比#00H除数赋值MOV16H,#0

38、0H除数赋值MOVUH,#00H被除数赋值MOV12H,#00H被除数赋值MOV13H, 62H;被除数赋值MOV14H, 61H;被除数赋值MOV15H, 60H;被除数赋值LCALLDIVST;调除法程序LCALLBCDST;调二进制转BCD码程序MOVA, 25H;结果处理,将25H数移入AANLA, #OFH;将高四位置为0MOV70H, A;放入70H单元MOVA, 25H;25H数移入ASWAPA;高低四位交换ANLA, #OFH;将髙四位置为0MOV71H, A;放入71H单元MOVA, 24H;24H数移入AANLA, #OFH;将高四位置为0MOV72H, A;放入72H单元MOVA, 24H;24H数移入ASWAPA;高低四位交换ANLA, #OFH;将髙四位宜为

温馨提示

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

评论

0/150

提交评论