毕业设计(论文)-测温及超声波测距.doc_第1页
毕业设计(论文)-测温及超声波测距.doc_第2页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

i 毕业设计说明书毕业设计说明书 课题名称: 测测温及超声波温及超声波测测距距 学生姓名 专 业 电电子信息工程子信息工程 班 级 电电信信 0902 时 间 2011.9 2011.4 指导教师 电子信息与自动化工程系 摘 要 ii 随着现代科学技术的发展,人们逐渐了解到,超声波的穿透力很强不易损 坏物体,而且它在两万赫兹以上,不会影响到人们的正常工作,并且他的传播 速度快。由于超声波具有这样大的优点,所以人们对超声波的利用率越来也高。 从大到工业体系的探伤,小到测距和金属表面清尘,超声波几乎无处不在的伴 随我们的生活。 本设计是以 at89c51 单片机为核心的低成本、高精度、微型化数字显示超 声波测距仪。整个电路采用模块化设计,由单片机控制模块,超声波发射模块, 超声波接收模块和数据显示模块组成。软件部分由主程序、预置子程序、发射 子程序、接收子程序、显示子程序组成。各探头的信号经单片机综合分析处理, 实现超声波测距仪的各种功能。在此基础上设计了系统的总体方案,最后通过 硬件和软件实现了各个功能模块。相关部分附有硬件电路图、程序流程图。 关键词关键词:at89c51;超声波;测距;测温 iii abstract with the development of modern science and technology, people gradually understanding that the ultrasonic wave penetrating power is very strong .the ultrasonic wave is not easy to damage the object,morover it above 20khz and affect peoples nomal work. so the using of ultrasonic wave is more and more frequent. from the large scale flaw detection of the industrial system to the measuring distance and clearing of the metal surface , the ultrasonic wave is useful in our every daily life . the ultrasonic distance measurer design with digital display functional module used at89c52 mcu as the core component,of which carries the characteristics with low-cost,high-precision and microminiaturization.the whole circuit used modular design,it includes the mcu control module,ultrasonic transmit module,ultrasonic receive module and the data display module.in the software design part,it contains the main program,the presets subroutine,the launch subroutine,the receiving subroutine and the display subroutine.through the comprehensive analysis processing of the at89c51 mcu, the signal of each detector can realizing the functions of ultrasonic measure.based on these,designed the overall scheme of the system.on the finally,through the hardware and software realize the whole modules.and the relevant parts have the hardware circuit diagrams and program flow charts on the appendix. key words:at89s51;silent wave;measure distance;measure temperature 1 目目 录录 摘摘 要要ii abstractabstractiii 1 1 前言前言.2 2 2 设计思路和设计原理设计思路和设计原理.2 2.1 超声波发生器超声波发生器.2 2.2 压电式超声波发生器原压电式超声波发生器原 理理.2 2.3 超声波测距原理超声波测距原理.2 3 硬件设计硬件设计.3 3.1 发射回路发射回路3 3.2 接收回接收回 路路3 3.3 led4 3.43.4 总电路图总电路图.5 4.14.1 各芯片功能特点简介各芯片功能特点简介5 4.14.1 5151 系列单片机的功能特点系列单片机的功能特点.5 4.24.2 cx20106cx20106 简介及其调试简介及其调试.6 4.34.3 ledled hd44780hd44780.6 4.4ds18b204.4ds18b207 5 5 系统的软件编程设计系统的软件编程设计.8 5.15.1 超声波测距仪的算法设计超声波测距仪的算法设计8 5.25.2 主程序流程图主程序流程图9 5.35.3 超声波发生子程序和超声波接收中断程序超声波发生子程序和超声波接收中断程序.9 5.45.4 系统的软硬件调试系统的软硬件调试.10 6 6 程序程序18 参考文献参考文献.19 附录一:程序清单附录一:程序清单.21 2 1 1 前言前言 超声波具有指向性强,能量消耗缓慢,传播距离较远等优点,所以,在利 用传感器技术和自动控制技术相结合的测距方案中,超声波测距是目前应用最 普遍的一种,它广泛应用于防盗、倒车雷达、水位测量、建筑施工工地以及一 些工业现场。目前一般都采用波在介质传播速度和时间关系进行测量。常用的 技术主要有激光测距、微波雷达测距超声波测距三种。激光测距。这是利用激 光的单色性和相传播速度 v 易受空气中温度、湿度、压强等因素的影响,其中 干性好、方向性强等特点,以实现高精度的计量和检测,如量长度、距离、速 度 、角度等等。手持式和便携式测距仪,作用距离为数百米至数十千米。一般 应用到远距离测量。微波雷达测距是利用目标对电磁波反射来发现目标并测定 其位置。根据微波雷达的用途不同,所测定的目标可能是飞机、导弹、车辆、 建筑物、云雨等。微波测距一般应用于雷达系统,gps 定位系统。超声波测距 就是利用其反射特性,超声波发生器不断地发射出 40khz 超声波遇到障碍物后 反射回反射波,超声波接收器接收到发射波信号,并将其转换为电信号。相比 于其它定位技术超声波定位技术成本低,制作容易,非常适合于短距离测量定 位。 本课程设计利用超声波发射与接收装置,实现超声波的测距功能,从而实 现物体定位。利用该设计,可以实现盲人导航系统的研究与应用,实现障碍物 的定位测量等。 2 2 设计思想和测距原理设计思想和测距原理 2.12.1、 超声波发生器超声波发生器 为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体 上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是 用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械 方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声 波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生 器。 2.22.2、压电式超声波发生器原理压电式超声波发生器原理 压电式超声波发生器实际上是利用压电晶体的谐振来工作的。它有两个压 电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有 振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反 之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作 振动,将机械能转换为电信号,这时它就成为超声波接收器了。 2.32.3、超声波测距原理、超声波测距原理 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声 波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就 立即停止计时。超声波在空气中的传播速度为 v,根据计时器记录的时间 t,就 可以计算出发射点距障碍物的距离(s),即:s=v*t/2 。这就是所谓的时间差测 距法。如图 2-3 所示。 3 图 2-3 本测距仪便是利用了超声波传感器的这种特性,利用其发生超声波。如上 图,当遇到障碍物,超声波被反射进入超声波传感器,并产生电信号。经过单 片机处理,得出传播时间 t ,利用公式 s=v*t/2 便得出测距仪与障碍物之间的 距离 s 。其中,v 的取值在温度变化时变化 v=331+0.6*t 。331m/s 是声速在 0 度情况下的传播速度,利用 ds18b20 测得温度利用单片机算出 v。 3 3 硬件设计硬件设计 硬件设计分为三个部分: 发射回路、接收回路、led 显示系统。主要硬 件单元的功能: 3.13.1 发射回路发射回路: 发射回路的主要设计思想是将单片机端口输出的 40khz 的方波经过反相器 (所用芯片为六缓冲反相器 cd4049)波形整理后,加在超声波转换器两端使其发 射 40khz 超声波。同时这里的反相器还可以提高电路的驱动能力,保证超声波 发射探头的输出功率,并且 vcc=5v。 图 3-1 单片机 oc1 端输出的 40khz 方波信号一路经一级反向器后送到超声波 换能器的一个电极。另一路经两级反向器后送到超声波换能器的另一个电极。 用这种推挽形式将方波信号加到超声波换能器两端。可以提高超声波的发射 强度。输出端采用两个反向器并联。用以提高驱动能力。上拉电阻 r1、r2 一方面可以提高反向器输出高电平的驱动能力。另一方面可以增加超声波换 能器的阻尼效果,缩短其自由振荡的时间。 3.23.2 接收回路接收回路: 接收回路的主题设计思想是将超声波探头接收到的信号进行滤波放大后 输入单片机,超声波检测接收电路主要是由集成电路 cx20106a 组成,它是 一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红 4 外遥控常用的载波频率 38 khz 与测距的超声波频率 40 khz 较为接近,可以 利用它制作超声波检测接收电路。实验证明用 cx20106a 接收超声波(无信号 时输出高电平),具有很好的灵敏度和较强的抗干扰能力。实验电路图如图 3-2 所示。 图 3-2 3.33.3 ledled 管显示电路管显示电路:led 显示电路模块如下图 3-3 所示。 图 3-3 3.43.4 整合后的总电路图如图整合后的总电路图如图 3-43-4 所示所示: 5 图 3-4 4 4 各芯片功能特点简介各芯片功能特点简介 4.14.1 at89c51 at89c51 是一个低电压,高性能 cmos 8 位单片机带有 4k 字节的可反 复擦写的程序存储器(penrom) 。和 128 字节的存取数据存储器(ram) ,这 种器件采用 atmel 公司的高密度、不容易丢失存储技术生产,并且能够与 mcs-51 系列的单片机兼容。片内含有 8 位中央处理器和闪烁存储单元,有较 强的功能的 at89c51 单片机能够被应用到控制领域中。at89c51 提供以下的 功能标准:4k 字节闪烁存储器,128 字节随机存取数据存储器,32 个 i/o 口, 2 个 16 位定时/计数器,1 个 5 向量两级中断结构,1 个串行通信口,片内震荡 器和时钟电路。另外,at89c51 还可以进行 0hz 的静态逻辑操作,并支持两种 软件的节电模式。闲散方式停止中央处理器的工作,能够允许随机存取数据存 储器、定时/计数器、串行通信口及中断系统继续工作。掉电方式保存随机存取 数据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一 个复位。vcc:供电电压。gnd:接地。p0 口:p0 口为一个 8 位漏级开路双 向 i/o 口,每脚可吸收 8ttl 门电流。当 p1 口的管脚第一次写 1 时,被定义为 高阻输入。p0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第 八位。在 fiash 编程时,p0 口作为原码输入口,当 fiash 进行校验时,p0 输出原码,此时 p0 外部必须被拉高。 p1 口:p1 口是一个内部提供上拉电阻的 8 位双向 i/o 口,p1 口缓冲器能 接收输出 4ttl 门电流。p1 口管脚写入 1 后,被内部上拉为高,可用作输入, p1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 flash 编程和校验时,p1 口作为第八位地址接收。 p2 口:p2 口为一个内部上拉电阻的 8 位双向 i/o 口,p2 口缓冲器可接收, 输出 4 个 ttl 门电流,当 p2 口被写“1”时,其管脚被内部上拉电阻拉高,且作 为输入。并因此作为输入时,p2 口的管脚被外部拉低,将输出电流。这是由于 内部上拉的缘故。p2 口当用于外部程序存储器或 16 位地址外部数据存储器进 行存取时,p2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势, 当对外部八位地址数据存储器进行读写时,p2 口输出其特殊功能寄存器的内容。 p2 口在 flash 编程和校验时接收高八位地址信号和控制信号。 p3 口:p3 口管脚是 8 个带内部上拉电阻的双向 i/o 口,可接收输出 4 个 ttl 门电流。当 p3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作 为输入,由于外部下拉为低电平,p3 口将输出电流(ill)这是由于上拉的缘 故。p3 口也可作为 at89c51 的一些特殊功能口,如下表所示:口管脚 备选功 能 p3.0 rxd(串行输入口)p3.1 txd(串行输出口)p3.2 /int0(外部中断 0)p3.3 /int1(外部中断 1)p3.4 t0(记时器 0 外部输入)p3.5 t1(记时器 1 外部输入)p3.6 /wr(外部数据存储器写选通)p3.7 /rd(外部数据存储器读 选通)p3 口同时为闪烁编程和编程校验接收一些控制信号。 rst:复位输入。当振荡器复位器件时,要保持 rst 脚两个机器周期的高 电平时间 6 4.24.2 cx20106cx20106 简介及其调试简介及其调试 cx20106 是广泛用于彩色电视机红外线遥控接收的前置放大器。由于功能 强,性能优越,成本低,故已在各种红外线遥控系统中得到广泛的应用。 cx20106 由前置放大器、限幅放大器、带通滤波器、检波器、积分器及整 形电路构成。其中的电平自动控制电路可以保证在输入弱信号时前置 放大器有较高增益,在输入强信号时前置放大器不会过载,可以保证在一定遥 控距离(约 10m)内工作可靠。其内部设置的滤波器中心频率 f0 由其 5 脚外接 电阻调节,范围可从 30khz60khz。 cx20106 的工作过程大致如下:其中的前置放大器将外接红外光敏二极管 或三极管产生的脉冲电压进行放大,电压增益约 77-79d。然后将信号送限幅 放大器,使其变为矩形脉冲,再由滤波器进行频率选择,滤除干扰信号,由检 波器滤掉载频检出指令信号,再经整形后,由脚输出指令信号。实际上, cx20106 的功能用一句话概括,就是当接收到与 cx20106 滤波器中心频率相符 的红外光信号时,其输出端脚就输出低电平。 cx20106的主要参数如下:电源电压典型值为 5,最大 17。电 源电流 1.1-2.5ma(典型值为 1.8ma)。输出低电平 0.2。电压增益 77- 79d。输入阻抗 27。滤波器中心频率 30khz60 khz。允许功耗 0.8 4.34.3 ledhd44780 管脚及功能特管脚及功能特 液晶显示器以其微功耗、小体积、使用灵活等诸多优点在袖珍式仪表和低 功耗应用系统中得到越来越广泛的应用。液晶显示器通常可分为两大类,一类 是点阵型,另一类是字符型。点阵型液晶通常面积较大,可以显示图形;而一般 的字符型液晶只有两行,面积小,只能显示字符和一些很简单的图形,简单易 控制且成本低。目前市面上的字符型液晶绝大多数是基于 hd44780 液晶芯片的, 所以控制原理是完全相同的,为 hd44780 写的控制程序可以很方便地应用于市 面上大部分的字符型液晶。字符型 lcd 通常有 14 条引脚线(市面上也有很多 16 条引脚线的 lcd,多出来的 2 条线是电源线 vcc(15 脚)和地线 gnd(16 脚), 其控制原理与 14 脚的 lcd 完全一样),定义如下表所示: 7 4.44.4 ds18b20ds18b20 测温测温 ds18b20数字温度计是dallas公司生产的1wire,即单总线器件,具有 线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在 一根通信线,可以挂很多这样的数字温度计。ds18b20产品的特点。 (1) 、只要求一个i/o口即可实现通信。 (2) 、在ds18b20中的每个器件上都有独一无二的序列号。 (3) 、实际应用中不需要外部任何元器件即可实现测温。 (4) 、测量温度范围在55。c到125。c之间。 (5) 、数字温度计的分辨率用户可以从9位到12位选择。 (6) 、内部有温度上、下限告警设置。 ds18b20详细引脚功能描述1 gnd地信号;2 dq数据输入/输出引脚。开漏 单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;3 vdd可 选择的vdd引脚。当工作于寄生电源时,此引脚必须接地。 ds18b20的使用方法。由于ds18b20采用的是1wire总线协议方式,即在 一根数据线实现数据的双向传输,而对at89s51单片机来说,我们必须采用软 件的方法来模拟单总线的协议时序来完成对ds18b20芯片的访问。由于 ds18b20是在一根i/o线上读写数据,因此,对读写的数据位有着严格的时序要 求。ds18b20有严格的通信协议来保证各位数据传输的正确性和完整性。该协 议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主 机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主 机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主 机需启动读时序完成数据接收。数据和命令的传输都是低位在先。 5 5 系统的软件编程设计系统的软件编程设计 5.15.1 超声波测距仪的算法设计超声波测距仪的算法设计 超声波测距的原理为超声波发生器 t 在某一时刻发出一个超声波信号,当 这个超声波遇到被测物体后反射回来,就被超声波接收器 r 所接收到。这样只 要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发 生器与反射物体的距离。距离的计算公式为: = 2 =( )2 (1) 其中,d 为被测物与测距仪的距离,s 为声波的来回的路程,c 为声速,t 为声 波来回所用的时间。在启动发射电路的同时启动单片机内部的定时器 t0,利用 定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波 反射波时,接收电路输出端产生一个负跳变,在 int0 或 int1 端产生一个中断 请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差, 计算距离。 5.25.2 主程序流程图主程序流程图 8 软件分为两部分,主程序和中断服务程序,主程序完成初始化工作、各路 超声波发射和接收顺序的控制。 定时中断服务子程序完成超声波的发射,外部 中断服务子程序主要完成时间值的读取、距离计算、结果的输出等工作。 程序首先是对系统环境初始化,设置定时器 t0 工作模式为 16 位定时计数 器模式。然后调用超声波发生子程序送出一个超声波脉冲,打开外中断 0 接收 返回的超声波信号。由于采用的是 12 mhz 的晶振,每计一个数就是 1s,定 时器 t1 定时 1ms。设计时间精确到 1ms。当主程序检测到接收成功的标志位后, 将计数暂存,用 ds12b20 测得温度,算出声速则距离为: s=v*t/2 (2) 测出距离后结果将以十进制 bcd 码方式送往 led 显示约 0.5s,然后再发超 声波脉冲重复测量过程。主程序流程图如下(图 5-1) 开始 单片机初始化 外部中断子程序 33序 超声波发射子程序 33序 返回 led 显示 是否有回波? 图5-1 主程序流程图 5.35.3 超声波发生子程序和超声波接收中断程序超声波发生子程序和超声波接收中断程序 超声波发生子程序的作用是通过 p1.0 端口发送 4 个左右超声波脉冲信号 (频率约 40khz 的方波) ,脉冲宽度为 12s 左右,同时把计数器 t1 打开进行 计时。超声波发生子程序较简单,但要求程序运行准确,所以采用汇编语言编 程。 超声波测距仪主程序利用外中断 1 检测返回超声波信号,一旦接收到返回 超声波信号(即 int1 引脚出现低电平) ,立即进入中断程序。进入中断后就立 9 即关闭计时器 t1 停止计时,并将测距成功标志字赋值 1。如果当计时器溢出时 还未检测到超声波返回信号,则定时器 t1 溢出中断将外中断 1 关闭,并将测距 成功标志字赋值 2 以表示此次测距不成功7。程序流程图如下(图 5-2): 定时中断入口 定时器初始化 发射超声波 停止发射 返回 外部中断入口 关外部中断 读取时间值 计算距离 结果输出 开外部中断 返回 发射完否? 图5-2 超声波发射接受子程序 5.45.4 系统的软硬件调试系统的软硬件调试 硬件调试具体过程如下: (1).检查电路是否存在虚短的情况; (2).将电路联通后,用示波器观察发射端是否产生 40k 超声波; (3).在发射电路正常的情况下,用示波器观察接收端波形,并与发射端波 形进行比较观察; (4).调试显示部分。 硬件电路制作完成并调试好后,便可将测试程序下载到单片机试运行,检 查电路是否能够正常运行,在电路正常的情况下将超声波测距程序下载到单片 机中运行。根据实际情况可以修改超声波发射子程序每次发送的脉冲宽度和两 次测量的间隔时间,以适应不同距离的测量需要。根据所设计的电路参数和程 序,测距仪能测的范围为 20m0.3m,测距仪最大误差不超过 0.4m。系统调试 完后应对测量误差和重复一致性进行多次实验分析,不断优化系统使其达到实 10 际使用的测量要求。 程序清单程序清单 temper_l equ29h ;用于保存读出温度的低字节 temper_h equ 28h ;用于保存读出温度的高字节 dq bit p3.3 ;定义一线端口控制线 flag1 bit 50h ;位地址 50h 是字节 2ah 的最低位,用作是否 检测到 ds18b20 的标志位 vout equ p1.1 ;超声波脉冲输出口 temper_num equ 51h ;定义存放转化后的温度值 地址 en equ p2.0 ;lcd en 引脚 rs equ p2.1 ;lcd rs 引脚 org 0000h ljmp main org 0020h ;测温程序 main: mov sp,#70h lcall get_temper ;从 ds18b20 中读书温度数 据 lcall temper_cov ;转换读出温度并保存 lcall distance_cov ;测距 lcall display0 ;lcd 显示 lcall d1ms jnb p2.5,start sjmp main start: mov sp,#4fh mov 20h,#00h mov tmod,#21h ;t1 为八位自动装载模式,t0 为 16 位定时器 mov th0,#0fch ;1ms 定时 mov tl0,#17h mov th1,#0f3h ;38khz 初值 mov tl1,#0f3h mov p0,#0ffh mov p1,#0ffh mov p2,#0ffh mov p3,#0ffh mov r4,#04h ;超声波脉冲个数控制 setb et1 ;开启 t1 发送超声波 setb ea setb tr1 loop: jbc tf1 , loop1 ajmp loop loop1: cpl p1.1 11 dec r4 djnz r4 ,loop mov 21h,#00h clr tr1 loop3: setb et0 ;开启 t0 接收超声波 setb ea setb tr0 loop5: jbc tf0,loop4 jnb p3.3,loop2 ajmp loop5 loop4: inc 21h ;计时 mov th0,#0f3h mov tl0,#17h jnb p3.3,loop2 ajmp loop3 loop2: clr tr0 clr tr1 ret ;-ds18b20 的温度转换子程序,具体时序请参考资料- get_temper: setb dq bcd: lcall init_18200 ;先复位 ds18b20 jb flag1,t_c0 ; 判断 ds1820 是否存在?若 ds18b20 不存在则返回 ljmp bcd t_c0: mov a,#0cch ; 跳过 rom 匹配 lcall write_18200 mov a,#44h ; 发出温度转换命令 lcall write_18200 lcall d1ms ;这里等待 ad 转换结束,12 位的话要 延时 750m 秒 bca: lcall init_18200 ;先复位 ds18b20 jb flag1,abc ; 判断 ds1820 是否存在?若 ds18b20 不存在则返回 ljmp bca abc: lcall delay1 mov a,#0cch ; 跳过 rom 匹配 lcall write_18200 mov a,#0beh ; 发出读温度命令 lcall write_18200 lcall read_18200 ; 将读出的温度数据保存到 28h(temper_h)和 29h(temper_l)处 ret 12 ;-ds18b20 初始化- init_18200: setb dq nop clr dq mov r0,#80h ;主机发出延时 96 微秒的复位 低脉冲 tsr1: djnz r0,$ setb dq ;然后拉高数据线 nop nop nop mov r0,#25h tsr2: djnz r0,tsr2 ;延时 jnb dq,tsr3 ;等待 ds18b20 回应 ljmp tsr4 tsr3: setb flag1 ;置标志位,表示 ds1820 存在 ljmp tsr5 tsr4: clr flag1 ;清标志位,表示 ds1820 不存在 ljmp tsr7 tsr5: mov r0,#06bh tsr6: djnz r0,tsr6 ;时序要求延时一段时间 tsr7: setb dq ret ;-写 ds18b20 的子程序(有具体的时序要求)- write_18200: mov r2,#8 ;一共 8 位数据 clr c wr0: clr dq mov r3,#6 djnz r3,$ rrc a mov dq,c ;写入一位 mov r3,#23 djnz r3,$ setb dq nop nop djnz r2,wr0 13 setb dq ret ;-读 ds18b20 的程序,从 ds18b20 中读出两个字节的温度数据- read_18200: mov r4,#2 ; 将温度高位和低位从 ds18b20 中读出 mov r1,#temper_l ; 低位存入 29h(temper_l) re0: mov r2,#8 re1: clr c setb dq nop nop clr dq nop nop setb dq mov r3,#7 djnz r3, $ mov c,dq mov r3,#23 djnz r3, $ rrc a djnz r2,re1 mov r1,a dec r1 ; 高位存入 28h(temper_h) djnz r4,re0 ret ;-整合读出的两字节温度并转为十进制储存- temper_cov: mov a,29h anl a,#0f0h ;低字节低四位丢掉 swap a mov 29h,a mov a,28h anl a,#07h ;高字节高五位丢掉 swap a orl a,29h ;合并 mov temper_num,a mov a,temper_num mov b,#10 div ab 14 mov 23h,b ;个位 mov b,#10 div ab mov 24h,b ;十位 mov 25h,a ;百位 mov a,29h anl a,#0fh ;小数位 mov b,#10 mul ab mov b,#10h div ab mov 21h,a mov 22h,. ret ;-计算距离并转换成十进制储存- distance_cov: mov a,temper_num mov b,#6 mul ab mov b,#10 div ab mov 30h,#31 add a,30h mov b,#10 div ab mov 65h,b mov 66h,a mov a, 20h mov b,#2 div ab mov 20h,a mov b,#10 div ab mov 67h,b mov 68h,a mov b,66h mul ab mov b,#10 div ab mov 69h,b mov 70h,a mov a,65h mov b,68h mul ab 15 mov 65h,a mov a,66h mov b,67h mul ab add a,65h mov b,#10 div ab add a,69h mov 69h,a mov a,#3 mov b,68h mul ab add a,70h mov 70h,a mov a,#3 mov b,67h mul ab mov b,#10 div ab add a,70h mov 70h,a mov a,b add a,69h mov b,#10 div ab add a,70h mov 70h,a mov 69h,b mov b,#10 div ab mov 71h,b mov b,#10 div ab mov 72h,b mov 73h,a mov 70h,. mov 68h,m ret display0: clr en; ;lcd off lcall set_lcd ;lcd 初始化,并做显示测试 mov r0,#5 ; 设置要显示的字符个数 mov r1,#25h ;设置所要显示 lcd 的位置 16 mov a,r1 mov b,#15 l1: lcall lcdp1 ; 在 lcd 第一行显示字符 dec r1 inc b dec r0 djnz r0, l1 mov r1,73h mov a,r1 mov r0,#6 mov b,#15 l2: lcall lcdp2 ; 在 lcd 第二行显示字符 dec r1 inc b djnz r0, l2 sjmp $ set_lcd: ;lcd 初始化,并做显示测试 clr en lcall init_lcd ;lcd 初始化 mov r5,#10 lcall delay mov dptr,#lmess1 ;指针指到显示消息 1 mov a,#1 ;在第一行显示 lcall lcd_print ;消息 1 显示在第一行 mov dptr,#lmess2 ;指针指到显示消息 2 mov a,#2 lcall lcd_print ;消息 2 显示在第二行 ret init_lcd

温馨提示

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

评论

0/150

提交评论