超声波测距汇编程序

上传人:桔**** 文档编号:497958373 上传时间:2022-09-22 格式:DOCX 页数:22 大小:101.21KB
返回 下载 相关 举报
超声波测距汇编程序_第1页
第1页 / 共22页
超声波测距汇编程序_第2页
第2页 / 共22页
超声波测距汇编程序_第3页
第3页 / 共22页
超声波测距汇编程序_第4页
第4页 / 共22页
超声波测距汇编程序_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《超声波测距汇编程序》由会员分享,可在线阅读,更多相关《超声波测距汇编程序(22页珍藏版)》请在金锄头文库上搜索。

1、超声波测距仪的软件设计1 超声波测距仪的软件规划超声波测距仪的程序主要包括以下功能模块:(1) DS18B20 温度传感器接口模块,分为初始化子程序、写入子程序及读取子程序等部分;(2) 基于MAX7219的显示模块,分为MAX7219初始化子程序、写入子程序及显示子程序等部分;(3) 温度补偿与距离计算模块,分为超声波发射控制程序、接收处理子程序、温度补偿子程序及 距离计算子程序等部分;(4) 主模块,分为系统的初始化、按键处理及各子程序的调度管理等部分。系统流程图4-1 形象 地描述了各模块功能及相互之间的关系。图 4-1 系统流程图2DS18B20 的接口程序设计DS18B20的一线工作

2、协议流程是,初始化-ROM操作指令一存储器操作指令一数据传输。其工 作时序包括:初始化时序、写时序和读时序。每种工作时序都有相应的要求,这在进行 DS18B20 接口程序设计时必须足够重视。DS18B20初始化的实质是使DS18B20复位,主要是通过判断存在脉冲的形式来实现的。首先, 主机发复位脉冲,即宽度范围为480usWtW960us的负脉冲,拉高1590us以延时等待,然后通 过输入/输出线读出存在脉冲,为低则说明存在,复位成功; 否则说明不存在,复位失败,必须对 DS18B20 重新初始化。;*; DS18B20 初始化(复位)子程序;如果存在,则EXIST=1,否则=0; *DS18

3、B20_RST:CLRWDIOMOVR7, #32LCALLDELAY15USSETBWDIOMOVR7, #4LCALLDELAY15USCLREXISTJBWDOP, DS18B20_RST_0SETBEXISTMOVR7, #28LCALLDELAY15USDS18B20_RST_0:RST字节写的时序是拉低输入/输出线至少15us以作为起始信号,按从低位到高位顺序取出预写字 节中的1位数据,写入输入/输出线,延时等待15us后将输入/输出线拉高作为停止信号,以等待 下一位的写入。字节写 DS18B20 的程序设计只要严格按照上述时序即可,程序如下。;*;DS18B20 写字节子程序;待

4、写字节数据在A中; *DS18B20_WRITE:CLRCMOVR1,#8DS18B20_WR_1:CLRWDIOMOVR7,#1LCALLDELAY15USRRCAMOVWDIO,CLCALL DELAY15USMOV R7, #1LCALL DELAY15US SETBWDIONOPDJNZR1,DS18B20_WR_1SETBWDIORET字读 DS18B20 的程序设计思想结合程序代码进行阐述,以下为字读 DS18B20 的接口程序 ;*;DS18B20连续2字节子程序;读出值储存在全局变量: TEMP , TEMP+1; *DS18B20_READ:CLRCMOVR1,#2MOVR0

5、,#TEMPDS18B20_RD_1:MOVR2,#8DS18B20_RD_2:SETBWDIONOPNOPCLRWDIONOPNOPSETBWDIOMOVR7,#1LCALLDELAY15USMOVC,WDIORRCADJNZR2, DS18B20_RD_2MOVR0,AINCR0DJNZR1,DE18B20_RD_1RET在上述程序中可以看出,16位数据同样也是从低位到高位被逐一读出并存储的。而且,由于读出的温度值是补码形式,在使用前必须进行补码转换。;启动 DS18B20 转换子程序;默认12位精度的转换时间为750ms,即要等到750ms后才能读到新温度值; * DS18B20_STA

6、RT:LCALL DS18B20_RSTJNB EXIST, DS18B20_ST_0MOVA, #0CCHLCALLDS18B20_WRITEMOVA, #44HLCALLDS18B20_WRITEDS18B20_ST_0:RET; *;读取DS18B20温度子程序; *DS18B20_GET:LCALLDS18B20_RSTMOVA,#0CCHLCALLDS18B20_WRITELCALLDS18B20_READRET对DS18B20进行温度读取操作的流程可用图4-2描述。图 4-2 温度读取操作流程图4.3 显示程序设计基于 MAX7219 的 6位数码管显示程序实际上包括以下几个部分:

7、(1)对 MAX7219 初始化部分;(2)对 MAX7219 的字写入操作部分;(3)显示子程序部分(也即写 MAX7219 的 8 字节显示 RAM 的部分)。 前两个为低层接口子程序,后一个为应用层子程序。4.3.1MAX7219 初始化对于MAX7219的初始化,实际上就是指对MAX7219的扫描限制寄存器(扫描数码管个数)、亮 度寄存器、译码模式寄存器及工作寄存器进行正确设置。在进行程序前,必须清楚一点,那就是 MAX7219采用16位数据包的形式,也就是说对MAX7219写入时是以16位数作为一个整体进行的, 也即两个字节,高字节为寄存器地址或显示RAM地址,低字节为命令或数据。地

8、址字节的高4位为 无关位,通常全取为 1,由此得到各功能寄存器地址为:空操作寄存器:0F0H第1位数码管显示RAM:0F1H第 2 位数码管显示 RAM:0F2H第 3 位数码管显示 RAM:0F3H第 4 位数码管显示 RAM:0F4H第 5 位数码管显示 RAM:0F5H第 6 位数码管显示 RAM:0F6H第 7 位数码管显示 RAM:0F7H第 8 位数码管显示 RAM:0F8H译码模式寄存器:0F9H亮度调节寄存器:0FAH扫描限制寄存器:0FBH关断模式寄存器:0FCH显示测试寄存器:0FFH;*7;MAX7219 初始化程序;*7INIT_7219:MOVR3,#0CHMOVR4

9、,#0LCALLWRITE7219LCALLDELAY1MSLCALLDELAY1MSLCALLDELAY1MSMOVR3,#0BHMOVR4,#07LCALLWRITE7219MOVR3,#0AHMOVR4,#0DHLCALLWRITE7219MOVR3,#09HMOVR4,#0FFHLCALLWRI TE7219MOVR3,#0CHMOVRETR4,#01H4.3.2字写 MAX7219 程序字写MAX7219也就是将16位数据包写入MAX7219,其程序设计只要遵循MAX7219的时序要求 即可,简要描述为:在时钟的上升沿数据被锁入片内16位移位寄存器;16位数据的输出顺序必须 是从高到

10、低。对于微处理器来说,一般均自然满足MAX7219对串行时钟不能高于10MHz的要求。16 位写入完成后,必须通过12脚(LOAD)正跳变(即上升沿)将数据锁入,从而使新数据(命令) 有效。;*7;MAX7219有关引脚定义;*CLK7219EQUP2.0DIN7219EQUP2.2LOAD7219EQUP2.1;*;MAX7219写入程序;入口参数:R3寄存器地址,R4为命令数据;*WRITE7219:MOVDIN7219, CMOVR2,#8NOPMOVA,R3NOPSETBLOAD7219NOPW7219_1: RLCACLRCLK7219MOV DIN7219, CNOPNOPNOPN

11、OPNOPNOPSETBCLK7219CLRCLK7219DJNZR2,W7219_2NOPCLRLOAD7219NOPNOPNOPNOPSETB CLK7219NOPDJNZ R2,W7219_1NOPMOV A, R4SETBLOAD7219MOV R2, #8RETW7219 2: RLCA4.3.3 显示子程序显示子程序的作用是将非压缩BCD码形式的显示代码写入对应的数码管显示RAM寄存器,常用 的09和AF的显示代码对应为00H09H和OAHOFH。如果在对应位上显示小数点,只要将对 应的显示代码的最高位置为 1 即可。例如,要显示“0.”,其显示代码应为 80H。;*7;MAX7219的显示RAM首地址定义;*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号