高精度多路温度测量仪毕业设计说明书_第1页
高精度多路温度测量仪毕业设计说明书_第2页
高精度多路温度测量仪毕业设计说明书_第3页
高精度多路温度测量仪毕业设计说明书_第4页
高精度多路温度测量仪毕业设计说明书_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  1 高精度多路温度测量仪  摘要: 本文采用 AT89C51 单片机和温度传感器 DS18B20 从硬件 和软件两方面进行设计,具有高精度稳定的特点。  关键词: DS18B20;温度传感器;单片机  1 引言  随着 “ 信息时代 ” 的到来,作为获取信息的手段 传感器技术得到了显著的进步,其应用领域越来越广泛,对其要求越来越高,需求越来越迫切。传感器技术已成为衡量一个国家科学技术发展水平的重要标志之一。因此,了解并掌握传感器的基本结构、工作原理及特性是非常重要的。  为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法 与用途,基于实用、广泛和典型的原则设计了本系统。本文利用单片机结合传感器技术而开发设计了红外抄表系统。文中把传感器理论与单片机实际应用有机结合,详细地讲述了利用温度传感器 DS18B20 测量环境温度,以及实现红外数据传输的过程。  2 方案论证  2.1 方案一:  温度检测可以使用低温热偶或铂电阻,数据采集部分则使用带有 A/D 通道的单片机。考虑到一般的 A/D 输入通道都只能接受大信号,所以还要设计相应的放大电路。而模拟信号在长距离传输过程中,抗电磁干扰是令人伤脑筋的问题。此方案的软件简单,但硬件复杂,且检测点数追加时 ,各敏感元件参数的不一致性,都将会导致误差的产生,难以完全清除,而且成本会有较大增长幅度。  2.2 方案二:  使用单片机和数字式单总线温度传感器构成。其具有下列特点:具有高的测量精度和分辨率,测量范围大;抗干扰能力强,稳定性好;信号易于处理、传送和自动控制;便于动态及多路测量,读数直观;安装方便,维护简单,工作可靠性高。单总线温度传感器可以采用 DALLAS 公司生产的 DS18B20 系列,这类温度传感器直接输出数字信号,且多路温度传感器可以挂在 1 条总线上,共同占用单片机的 1 个 I/O 口即可实现。在提升单片 机 I/O 口驱动能力的前提下,理论上可以任意扩充检测的温度点数。  图 1   高精度多路温度测量系统方案  比较两个方案后可以发现,方案二更适合于用作本系统的实施方案,尽管方案二 也需要 A/D,但考虑到系统扩充等因素,单片机可以选用 AT89C51。  3 各电路设计和论证  3.1 传感器 电路设计和论证  3.1.1 如 所选用 电路(器件)结构  AT89C51 按键复位  晶振电路  DS18B20 1602LCD 无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  2 在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术 问题,才能够达到较高的测量精度。另外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。因此,在温度测量系统中,采用抗干扰能力强的新型数字温度传感器是解决这些问题的最有效方案,新型数字温度传感器DS18B20 具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。  图 2   温度传感器 DS18B20 引脚图  DS18B20 在内部以时钟周期个数计数来测量温度,并且提供 0.5 的分辨率。温度读数以 16 位、符号扩 展的二进制补码读数形式提供。需要注意的是在 DS18B20 中温度以 0.5 LSB(最低有效位 )形式表示时,产生以下 9 位格式:  DS18B20 支持 “ 一线总线 ” 接口,测量温度范围为  -55 +125 ,在 -50 +110范围内 ,精度为 0.5 。现场温度直接以 “ 一线总线 ” 的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境 的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。  DS18B20 内部结构  ( 1) DS18B20 的内部结构如 图 3。  图 3 DS18B20 内部结构图  DS18B20 有 4 个主要的数据部件:    64 位激光 ROM。 64 位激光 ROM 从高位到低位依次为 8 位 CRC、 48 位序列号和 8位家族代码 (28H)组成。    温度灵敏元件。    非易失性温度报警触发器 TH 和 TL。可通过软件写入用户报警上下限值。    配置寄存器。配置寄存器为高速暂存存储器中的第五 个字节。 DS18B20 在 0 工作时无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  3 按此寄存器中的分辨率将温度转换成相应精度的数值 。  美国 Dallas 半导体公司的数字化温度传感器 DS18B20 是世界上第一片支持  "一线总线 "接口的温度传感器 , 在其内部使用了在板( ON-B0ARD)专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的DS18B20 体积更小、更经济、更灵活。使你可以充分发挥 “一线总线 ”的优点。  3.1.2 DS18B20 的主要特性   ( 1)适应电压范围更宽,电压范围: 3.0 5.5V,在寄生电源方式下可由数据线供电   ( 2)独特的单线接口方式, DS18B20 在与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯   ( 3) DS18B20 支持多点组网功能,多个 DS18B20 可以并联在唯一的三线上,实现组网多点测温   ( 4) DS18B20 在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内   ( 5)温范围 55 125 ,在 -10 +85 时精度为 0.5   ( 6) 可编程的分辨率为 9 12 位,对应的可分辨温度分别为 0.5 、 0.25 、 0.125和 0.0625 ,可实现高精度测温   ( 7)在 9 位分辨率时最多在 93.75ms 内把温度转换为数字, 12 位分辨率时最多在750ms 内把温度值转换为数字,速度更快   ( 8)测量结果直接输出数字温度信号,以 "一线总线 "串行传送给 CPU,同时可传送 CRC 校验码,具有极强的抗干扰纠错能力   ( 9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。  3.1.3 DS18B20 需要注意的问题。  DS18B20 虽然具有测温系统简单、测温精度高、连接 方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题 :  ( 1)  较小的硬件开销需要相对复杂的软件进行补偿,由于 DS18B20 与微处理器间采用串行数据传送,因此,在对 DS18B20 进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用 PL/M、 C 等高级语言进行系统程序设计时,对DS18B20 操作部分最好采用汇编语言实现 。  ( 2) 在 DS18B20 的有关资料中均未提及单总线上所挂 DS18B20 数量问题,容易使人 误认为可以挂任意多个 DS18B20,在实际应用中并非如此。当单总线上所挂DS18B20 超过 8 个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。  ( 3)  连接 DS18B20 的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过 50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达 150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用 DS18B20 进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。  ( 4) 在 DS18B20 测温程序设计中,向 DS18B20 发出温度转换命令后,程序总要等待 DS18B20 的返回信号,一旦某个 DS18B20 接触不好或断线,当程序读该 DS18B20时,将没有返回信号,程序进入死循环。这一点在进行 DS18B20 硬件连接和软件设计时也要给予一定的重视。  无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  4 测温电缆线建议采用屏蔽 4 芯双绞线,其中一对线接地线与信号线,另一组接 VCC和地线,屏蔽层在源端单点接地。  3.1.4 定义的时序  ( 1) DS18B20 的初始化时序  图  4  DS18B20 的初始化时序图  ( 2) DS18B20 的读写时序  图 5 DS18B20 的 读时序和写时序  3.2 单片机  3.2.1 选用低功耗单片机  便携式智能设备体积小,重量轻,从电路的角度看,自然要求设备电路简单,功耗低,功能满足要求。为了实现智能化,在设计电路方案时,一般都会使用单片微型计算机,简称单片机。单片机品种多,功能强,可靠性高,可以满足智能设备的多种需要。现在单片机越来越广泛地采用 HCMOS 工艺,使功耗更是大幅度下降,应用较多的低功耗单片机有: Intel 公司的 80C31/80C51/87C51、 80C196; ATMEL 公司的 AT89Lv5X 系列 ;Microchip 公司的 PIC 系列等, TI 公司的 MSP430 系列。其中有些单片机的功耗非常低,例如 ATMEL 公司的 AT89Lv5X 系列单片机。  ATMEL 公司的 AT89Lv5X 系列单片机功耗超低,是一种 8 位的 RISC 混合信号处无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  5 理器,该单片机中断源较多,并且可以任意嵌套,使用起来灵活方便。当系统处于省电的备用状态时,用中断请求将它唤醒只需要 6us 的时间。 AT89Lv5X 系列单片机采用的是 1.8 3.6V 的电源电压。 在 1MHz 的时钟条件下运行时,芯片的耗电电流会在 200400uA 左右,时钟关断模式下最低功耗只有 0.1w。由于系统运行时打开的功能模块不同,即采用不同的工作模式,芯片的功耗有着显著的不同。在系统中共有一种活动模式 (AM)和五种低功耗模式 (LPM0 LPM4)。在等待方式下,耗电为 0.7w,在节电方式下,最低可达 0.1w。可见 MSP430 系列单片机功耗特别小,是低功耗微处理器的典型。  降低功耗的软件措施  在低功耗单片机系统设计中,可以通过硬件电路的合理设计降低系统的功耗,也可以通过软件优化设计来降低系统的功 耗。而软件比硬件应用起来更加灵活,尽量采用软件代替硬件可以降低系统功耗。  ( 1)  缩短 CPU 运行时间   尽量采用待机或掉电方式运行  由于在单片机系统中, CPU 的工作时间对系统的功耗影响极大,两者成正比, CPU工作时间越长,系统功耗越大。所以尽可能地采用待机和掉电运行方式,尽量缩短 CPU的运行时间,是低功耗单片机系统中软件设计的关键部分。智能便携式仪表一般用于对信号进行计数或定时测量,待机时间一般比较长,应该使单片机在不需要工作时,进入待机或掉电状态,需要工作时可以通过中断方式唤醒。   尽量采用定时中断替代软件延时  在需要获得延时的时候,因为 CPU 运行时间与系统功耗成正比,所以尽可能不要使用占用 CPU 运行时间的软件延时,而应该合理使用外部中断或内部定时 /计数中断。   尽量用静态显示代替动态显示  智能便携式仪表一般在较长的时间内显示同一内容,很多 LCD 显示组件具有数据锁存、译码、驱动和显示功能,只要组件不掉电,则可以保持显示。利用组件功能,在显示内容刷新后,运用 LCD 的静态显示,单片机进入待机状态, CPU 运行时间大大减少,降低了系统功耗。  ( 2) 硬件软化  智能便携式仪表一般具有数据处理和抗干扰环节。数据处理一般都会有滤波 器环节,但是传统的硬件滤波电路,例如有源滤波电路本身的功耗是很大的,而且即使其不需要工作时也不容易控制其不耗电。所以如果用软件滤波,通过选用合适的滤波算法,在满足系统需要的同时,可以达到降低功耗的目的。  ( 3) 软件优化  通过软件优化可以有效地降低系统的功耗。首选合理选用运算速度快的算法,可以简化程序,减少 CPU 工作时间,降低系统功耗。另外在程序中,每一条指令都会激活微处理器中的某些硬件模块。所以正确选择指令可以降低微处理器的功耗。通过 “ 减少跳转的指令重排序 ” 、建立特定处理器架构下指令集的功耗信息等方法可以有 效优化软件,降低功率。  3.2.2 选择低功耗的工作方式  ( 1) 尽量选用高速低频工作方式低功耗便携式智能电子系统中几乎全部采用的是CMOS 器件, CMOS 集成电路静态功耗几乎为零,动态功耗与电路的逻辑状态转换时间成正比,与逻辑状态转换频率成正比。所以在满足运算速度要求的前提下,尽可能的降低时钟频率,以降低功耗。  ( 2) 充分利用 “ 空闲 ” 、 “ 休眠 ” 模式在低功耗智能便携式系统中,应该重视电源管理技术,可以通过软件和硬件的合理使用,使系统功能模块处于空闲或休眠模式,应无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  6 该充分利用系统的这两种工作模式,可以有效降低功耗。  在空闲模式下, CPU 不需要处于活动状态,而外部设备需要处于活动状态的一种低功耗模式,例如 LCD 静态显示就属于这种情况。空闲模式可由复位或一个中断请求来结束。  在休眠模式下,微处理器中的大多数外部设备和模块处于掉电状态,这是一种比空闲模式下功耗更低的工作模式。微处理器一般提供多种不同水平的节能的时钟休眠模式,可以通过切断那些不处于使用状态的硬件设备的电力供应,系统功耗有效降低。  3.3 电源 器件(电路)如何连接  整流电路将交流电压变成单向脉动的直流电压。滤波电路用来滤除整流后单向脉动电压中的交流成份,合之成为 平滑的直流电压。  常用的整流电路有全波整流电路、半波整流电路、桥式整流电路及倍压整流电路。小功率直流电源因功率比较小,通常采用单相交流供电。由于桥式整流电路克服了半波整流的缺点,在桥式整流电路中,由于每两只二极管只导通半个周期,故流过每个二极管的平均电流仅为负载电流的一半,与半波整流电路相比较,其输出电压提高,脉动成分减少。  整流电路将交流电变为脉动直流电,但其中含有大量的交流成分(称为纹波电压)。为了获得平滑的直流电压,应在整流电路的后面加接滤波电路,以滤去交流成分。滤波电路常见的有电容滤波电路、电感滤波 电路及 型滤波电路。本设计采用电容滤波电路。电容滤波电路主要利用电容两端电压不能突变的特性,使负载电压波形平滑,故电容应与负载并联。桥式整流电路带电阻负载时的输出直流电压 U0=0.9V, 接上电容滤波后,空载时的输出直流电压 U0=UC=U2。所以,接上负载时的桥式整流电容滤波电路的输出电压介于上述两者之间,其大小与放电时间常数 RLC 有关, RLC 越大, U0 越大。  电源设计是电路设计很重要关节。它的稳定与否涉及到电路是否能稳定工作。按要求需要一个 +5V电压,一个 +12V左右可调电压。于是采用可调压芯片 LM317, 它是稳压芯片。 LM317是三端稳压集成电路,最大输出电流为 2.2A,输出电压范围为 1.25V 37V。它具有输出电压可变、内藏保护功能、体积小、性价比高、工作稳定可靠等特点。用它制作输出电压可变稳压电源,调节可变电阻 R2,便可从 LM317输出端获得 U0(可变输出电压 )。  从电路中可以看出, LM317的输出电压 (也就是稳压电源的输出电压 )U0为两个电压之和,也就是 R1两端电压与 R2两端电压之和。而 IR2实际上是两路电流之和,一路是经R1流向 R2的电流 IRI,其大小为 URI/Rl。因 URI为恒定电压 1.25V, Rl是一个固定电阻,小于 240欧姆。所以 IRl是一个恒定的电流。另一路是 LM317调整端流出的电流 ID, ID的平均值是 50 A左右,最大值一般不超过 100 A。而且在 LM317稳定工作时, ID的值基本上是一个恒定的值。调节 R2阻值即可调节 LM317输出电压 U0。  既然 ID和 IRl对调节输出电压 U0都起到了一定作用,并且 IR1是由 R1提供, IRI大小也没有任何限制, LM317输出电压服从 1.25+IDR2=U0关系。  可调稳压电路原理图如图 6所示。  无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  7 图 6 稳压电路图  3.4 显示 电路设计和论证  选用低功耗的液晶显示器 LCD(LiquidCrystaiDispiay)作为显示器件,该显示器的优点是工作电压低、微功耗、使用方便 (体积小、外形薄,平板式显示 ),是便携式智能设备显示器件的首选。如果设备只需要显示数码,可以选用数码显示型 ; 如要显示汉字和复杂字符,可以选用点阵显示型。但是液晶显示器也有缺点 : 响应时间和余辉时间较长,响应速度较慢 ; 液晶显示器在黑暗环境中不能显 示,因为它本身不发光, 需采用辅助光源 ; 液晶显示器的工作温度 范围比较窄,一般为 -10到 +60。所以如果工作环境和条件允许,便携式低功耗系统的可以选用液晶显示器 LCD 作为显示器件。  3.5 键盘 电路工作原理  键盘不仅在目前依然是智能仪器的主要输入设备,而且很长一个时期也将在输设备中占据主导地位。在本系统中键盘也属于比较重要的一个部分。  键盘按键是由一组按键开关组成。按键的闭合表现为其机械接触点上的合断,反应在电压上表现为高电平和低电平的变化。  键盘通常可以分为线性键盘和矩阵式键盘。线性键盘也称为独立式键盘,指的是直接用 I/O口线构成的单个按键电路。每根 I/O线上按 键的工作状态不会影响其它 I/O口线的工作状态。它适用于按键比较少的场合。矩阵式键盘也称为行列式键盘,指的是按键设置在行列式的交点上,行列线分别连接到按键开关的两端。要组成 M行 N列的键盘,需要的 I/O口线的数目为 M+N,允许的最大的按键数是 M N。矩阵键盘油可以分为非编码键盘和编码键盘两种。非编码键盘主要用软件的方法来识别和译码。编码键盘主要由硬件来实现键的扫描和识别。  根据系统的要求,采用矩阵键盘中的编码键盘。利用行列扫描法来确定按下键所在的行列位置。所谓行列扫描法是指,把键盘按键排列成 M 行 N 列的 M N 行列 点阵,把行、列线分别连接到两个并行接口双向传送的连接线上,点阵上的键一旦被按动,按键所在的行列点阵信号就被认为已接通。按键所排列成的矩阵,需要用硬件或软件的方法轮转顺序地对其行、列分别进行扫描,以查询和确认是否有键按动。如有键按动,键盘就会向主机发送被按键所在的行列点阵的位置编码,称为键扫描码。单片机通过周期性扫描行、列线,读回扫描信号结果,判断是否有键按下,并计算按键的位置以获得扫描码。  按键具有“断开”和“闭合”两种状态,通过接口电路对应于 0 和 1 两个逻辑值。V i n2ADJ1+ V ou t3L M 31 7C31 0u FD14 00 1D24 00 1R12 00R25 . 1KGNDC10 . 1u FC21 00 0u FV o utV i n无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  8 与开关的不同之处在于,按键的闭合是暂态的,当操 作者停止按压时,按键即恢复到断开状态,因此按键适用于连续的输入操作。但按键不具备像开关那样的输入状态的保持功能,因此按键通常与输出显示器配合,利用显示输出对按键操作给予反馈。另外,开关是各种状态设置好后再输入的,而按键则是在操作中输入的,因此, 按键 需要解决抖动等问题。  键盘是一组分别代表数字和有关命令的按键的集合。由于键盘是由按键构成的,所以也存在去抖动等按键的共性问题。  键盘与微处理器的接口包括硬件与软件两部分。硬件是指键盘的组织,即键盘结构及其与主机的连接方式。软件是指对按键操作的安全性、可靠性、键的识 别与分析等,称为键盘管理程序。  ( 1) 按键的去抖动  按键从最初按下到可靠接触要经过数毫秒的抖动过程,按键松开时也存在同样的问题。抖动可能导致计算机将一次按键操作误判为多次操作。因此按键操作必须进行去抖动处理,去抖动通常有硬件和软件两种方法。  硬件去抖动可以采用 RS 触发器或单稳态电路。利用 RS 触发器的互锁功能去抖动,可以得到理想的按键输出波形 ; 单稳电路结构简单,去抖动效果也好。但无论是 RS 触发器还是单稳电路都需要一个键对应一套硬件电路,故一般只用于按键数目较少的场合。  软件延时去抖动是在 CPU 首次检测到按键松 下或松开信息时,延时一段时间后,再次判断案件的状态,读取这一次的信息作为按键的动作。软件去抖动不用额外的硬件支持,软件也不复杂,因此在智能化仪表中被广泛使用。  ( 2) 键盘扫描的处理  有以下两项任务 :   识键 : 判断是否有键按下,若有,则进行处理 ;若无,则等待或转作别 的工作。   译键 : 识别出哪些有效的键被按下,并求出被按下键的特征码 (值 )或键值。  ( 3) 键值分析及执行  根据键值,找出对应处理程序的入口并执行之。  无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  9 4. 软件设计  4.1 程序流程  4.1.1 系统主程序流程图  图 7 主程序流程图  1602A 初始化  启动 DS18B20 采集温度 2 个  采集到的温度通过单总线  传递给 89C51 89C51 对采集的 2 点温度  按照温度补偿算法进行处理得到最终温度  1602A 显示最终温度  开始  无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  10 4.1.2各子程序流程图  图 8 温度测量流程图  初始化 DS18B20 发跳过 ROM 命令  发温度转化命令  等待温度转换  发跳过 ROM 命令  发读存储器命令  读 DS18B20 温度  结束  开始  无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  11 图 9 1602 液晶驱动程序流程图  4.2 程序  4.2.1主程序  #include sbit DQ=P20; sbit DQ1=P21; 1602 初始化  延时 5ms 显示清屏  延时 5ms 显示光标移动设置  延时 5ms 显示开及光标设置  显示位置设置  延时  显示温度各位数值  开始  结束  无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  12 sbit RS=P25; sbit RW=P26; sbit LCDEN=P27; #define jump_ROM 0xCC /jump the ROM command #define start 0x44  /start the convert command #define read_EEROM 0xBE /read the EEROM command #define uchar unsigned char #define uint unsigned int uchar TMPH;   /store the tempeature uchar TMPL; /LCD1602 function void lcd_delay(uint x) uint a,b; for(a=x;a>0;a-) for(b=10;b>0;b-); /write command to LCD void lcd_write_com(uchar com) P1=com; RS=0; RW=0; LCDEN=0; lcd_delay(20); LCDEN=1; lcd_delay(20); LCDEN=0; /write data to LCD void lcd_write_data(uchar date)  P1=date; RW=0; RS=1; LCDEN=0; lcd_delay(10); LCDEN=1; 无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  13 lcd_delay(10); LCDEN=0; /lcd init void lcd_init() lcd_write_com(0x38); /8 bit data,double line lcd_delay(20); lcd_write_com(0x0c); /display on lcd_delay(20); lcd_write_com(0x06);  lcd_delay(20); lcd_write_com(0x01);  lcd_delay(20); /function: delay /input parament  N /delay time: (16N+24)uS /fosc=11.0582MHZ void delay(unsigned int N) while(N-); /function: Reset /return parament: receive_ready uchar Reset(void) uchar receive_ready; DQ=0; delay(80); DQ=1; delay(3); receive_ready=DQ; delay(25); return(receive_ready); /*ds18b20 读一个字节 */   unsigned char read_byte(void) 无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  14 uchar i=0; uchar dat = 0; for (i=8;i>0;i-) DQ = 0; / 给脉冲信号  dat>>=1; DQ = 1; / 给脉冲信号  if(DQ) dat|=0x80; delay(4);   return(dat); /*ds18b20 写一个字节 */   void write_byte(uchar dat) unsigned char i=0; for (i=8; i>0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat>>=1; /function: Reset1 /return parament: receive_ready uchar Reset1(void) uchar receive_ready; DQ1=0; delay(80); DQ1=1; delay(3); receive_ready=DQ; delay(25); return(receive_ready); 无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  15 /*ds18b20 读一个字节 */   unsigned char read_byte1(void) uchar i=0; uchar dat = 0; for (i=8;i>0;i-) DQ1 = 0; / 给脉冲信号  dat>>=1; DQ1 = 1; / 给脉冲信号  if(DQ1) dat|=0x80; delay(4);   return(dat); /*ds18b20 写一个字节 */   void write_byte1(uchar dat) unsigned char i=0; for (i=8; i>0; i-) DQ1 = 0; DQ1 = dat&0x01; delay(5); DQ1 = 1; dat>>=1; /funtion:main void main() uchar temp_value,temp_value1,tmp; lcd_init(); /First line of LCD1602 display "T1:   T2: " lcd_write_com(0x81); lcd_write_data(0x54);  lcd_write_com(0x82); lcd_write_data(0x31);  无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  16 lcd_write_com(0x83); lcd_write_data(0x3a); lcd_write_com(0x88); lcd_write_data(0x54); lcd_write_com(0x89); lcd_write_data(0x32); lcd_write_com(0x8a); lcd_write_data(0x3a); /second line of LCD1602 display:"set: / end of display init while(1)  /first DS18B20 Reset(); write_byte(jump_ROM); write_byte(start); Reset(); delay(100); write_byte(jump_ROM); write_byte(read_EEROM); delay(100); TMPL=read_byte(); TMPH=read_byte(); temp_value=TMPH>4;     temp_value1=TMPL&0x0f;    tmp=(temp_value/0x0a)|0x30; lcd_write_com(0x84); lcd_write_data(tmp); tmp=(temp_value%0x0a)|0x30; lcd_write_com(0x85); lcd_write_data(tmp); lcd_write_com(0x86); lcd_write_data(0xdf); /sencond DS18B20   Reset1(); write_byte1(jump_ROM); write_byte1(start); Reset1(); delay(100); 无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  17 write_byte1(jump_ROM); write_byte1(read_EEROM); delay(100); TMPL=read_byte1(); TMPH=read_byte1(); temp_value=TMPH>4;     temp_value1=TMPL&0x0f;    tmp=(temp_value/0x0a)|0x30; lcd_write_com(0x8b); lcd_write_data(tmp); tmp=(temp_value%0x0a)|0x30; lcd_write_com(0x8c); lcd_write_data(tmp); lcd_write_com(0x8d); lcd_write_data(0xdf); 4.2.2 各子程序  LCD 显示子程序  /LCD1602 function void lcd_delay(uint x) uint a,b; for(a=x;a>0;a-) for(b=10;b>0;b-); /write command to LCD void lcd_write_com(uchar com) P1=com; RS=0; RW=0; LCDEN=0; lcd_delay(20); LCDEN=1; lcd_delay(20); 无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  18 LCDEN=0; /write data to LCD void lcd_write_data(uchar date)  P1=date; RW=0; RS=1; LCDEN=0; lcd_delay(10); LCDEN=1; lcd_delay(10); LCDEN=0; /lcd init void lcd_init() lcd_write_com(0x38); /8 bit data,double line lcd_delay(20); lcd_write_com(0x0c); /display on lcd_delay(20); lcd_write_com(0x06);  lcd_delay(20); lcd_write_com(0x01);  lcd_delay(20); /function: delay /input parament  N /delay time: (16N+24)uS /fosc=11.0582MHZ 5软硬件系统的调试  5.1 温度补偿  对于温度这种常用的测试物理量,在测试的过程中会有非线性的缺点发生。所以我们应该对温度进行非线性的补偿。所以我们在使用 DS18B20 进行温度测量的时候,要进行如下操作:  用一个高温度系数的振荡器 确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于 -50的一个值。如果计数器在门周期结束前到达 0,则温度寄存器(同样被预置到 -50)的值增加,表明所测温度大于 -50。同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到 0,如果门周期仍未结束,将重复这一过程。  无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  19 斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨力。这是通过改变计数器对温度每增加一度 所需计数的的值来实现的。因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器的值和每一度的计数值。 DS18B20 内部对此计算的结果可提供 0.5的分辨力。温度以 16bit带符号位扩展的二进制补码形式读出,表 1 给出了温度值和输出数据的关系。数据通过单线接口以串行方式传输。 DS18B20测温范围 -50 +110,以 0.5递增。  5.2 初始化  通过单线总线的所有执行(处理)都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和跟有其后由从机发出的存在脉冲。  5.3 存储器操作命令  ( 1) Write Scratchpad4E 这个命令向 DS1820 的暂存器中写入数据,开始位置在地址 2。接下来写入的两个字节将被存到暂存器中的地址位置 2 和 3。可以在任何时刻发出复位命令来中止写入。  ( 2) Read ScratchpadBEH 这个命令读取暂存器的内容。读取将从字节 0 开始,一直进行下去,直到第 9(字节 8, CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。  ( 3) Copy Scratchpad48h 这条命令把暂存器的内容拷贝到 DS18B20 的 E2 存储器里 ,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20 又正在忙于把暂存器拷贝到 E2 存储器, DS18B20 就会输出一个 “ 0” ,如果拷贝结束的话, DS18B20 则输出 “ 1” 。如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持 10ms。  ( 4) Convert T44h 这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后 DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而 DS18B20 又忙于做时间转换 的话, DS18B20 将在总线上输出 “ 0” ,若温度转换完成,则输出 “ 1” 。如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持 500ms。  ( 5) Recall E2 B8h 这条命令把报警触发器里的值拷回暂存器。这种拷回操作在 DS18B20 上电时自动执行,这样器件一上电暂存器里马上就存在有效的数据了。若在这条命令发出之后发出读时间隙,器件会输出温度转换忙的标识: “ 0” =忙, “ 1” =完成。  ( 6) Read Power SupplyB4h 若把这条命令发给 DS18B20 后发出读时间隙,器 件会返回它的电源模式: “ 0” =寄生电源, “ 1” =外部电源。  ( 7)读 /写时间隙  DS18B20 的数据读写是通过时间隙处理位和命令字来确认信息交换。  ( 8)写时间隙  当主机把数据线从逻辑高电平拉到逻辑低电平的时候,写时间隙开始。有两种写时间隙:写 1 时间隙和写 0 时间隙。所有写时间隙必须最少持续 60 s,包括两个写周期间至少 1 s 的恢复时间。  I/O 线电平变低后, DS18B20 在一个 15 s 到 60 s 的窗口内对 I/O 线采样。如果线上是高电平,就是写 1,如果线上是低电平,就是写 0 主机要生成一个写时间隙,必须把数据线 拉到低电平然后释放,在写时间隙开始后的 15 s内允许数据线拉到高电平。无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  20 主机要生成一个写 0 时间隙,必须把数据线拉到低电平并保持 60 s。  ( 9)读时间隙  当从 DS18B20 读取数据时,主机生成读时间隙。当主机把数据线从高高平拉到低电平时,写时间隙开始。数据线必须保持至少 1 s;从 DS18B20 输出的数据在读时间隙的下降沿出现后 15 s 内有效。因此,主机在读时间隙开始后必须停止把 I/O 脚驱动为低电平 15 s,以读取 I/O 脚状态。在读时间隙的结尾, I/O 引脚将被外部上拉电阻拉到高电平。所有读时间隙必须最少 60 s,包括两个读周期间至少 1 s 的恢复时间。  5.4ROM 操作命令  一旦总线控制器探测到一个存在脉冲,它就可以发出 5 个 ROM 命令中的任一个。所有 ROM 操作命令都 8 位长度。 5 个 ROM 的命令如下:  ( 1) Read ROM33h 这个命令允许总线控制器读到 DS18B20的 8位系列编码、唯一的序列号和 8 位 CRC码。只有在总线上存在单只 DS18B20 的时候才能使用这个命令。如果总上有不止一个从机,当所有从机试图同时传送信号时就会发生数据冲突(漏极开路连在一起开成相与的效果)。  ( 2) Match ROM55h 匹配 ROM 命令,后跟 64 位 ROM 序列,让总线控制器在多点总线上定位一只特定的 DS18B20。只有和 64 位 ROM 序列完全匹配的 DS18B20 才能响应随后的存储器操作命令。所有和 64 位 ROM 序列不匹配的从机都将等待复位脉冲。这条命令在总线上有单个或多个器件时都可以使用。  ( 3) Skip ROMCCH 这条命令允许总线控制器不用提供 64 位 ROM 编码就使用存储器操作命令,在单点总线情况下右以节省时间。如果总线上不止一个从机,在 Skip ROM 命令之后跟着发一条读命令,由于多个从机同时传送信号,总线上就会发生数据冲突 。           ( 4) Search ROMF0h 当一个系统初次启动时,总线控制器可能并不知道单线总线上有多少器件或它们的64 位 ROM 编码。搜索 ROM 命令允许总线控制器用排除法识别总线上的所有从机的 64位编码。  ( 5) Alarm SearchECH 这条命令的流程图和 Search ROM 相同。然而,只有在最近一次测温后遇到符合报警条件的情况, DS18B20 才会响应这条命令。报警条件定义为温度高于 TH 或低于 TL。只要 DS18B20 不掉电,报警状态将一直保持,直到再一次测得的温度值达不到报警条件 。  无   锡   职   业   技   术   学   院  毕业设计说明书(论文)  21

温馨提示

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

评论

0/150

提交评论