基于单片机的单总线多点温度测控系统_第1页
基于单片机的单总线多点温度测控系统_第2页
基于单片机的单总线多点温度测控系统_第3页
基于单片机的单总线多点温度测控系统_第4页
基于单片机的单总线多点温度测控系统_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、- 1 -摘 要本课题主要介绍基于 at89c51 单片机和 ds18b20 数字温度传感器的多点温度测量系统。该系统利用 at89c51 单片机分别采集各个温度点的温度,实现温度显示、报警等功能。它以 at89c51 单片机为主控制芯片,采用数字温度传感器ds18b20 实现多路温度的检测,测量精度可以达到 0.5。该系统采用了lcd1602a 液晶显示模块,lcd1602a 作为显示器 ,形象直观的显示测出的温度值。本文首先在绪论中介绍了此系统的背景以及功能。第二章确定设计方案。在第三章论述了总体的设计过程,确定了技术指标及器件的选择并且描述了系统硬件电路设计、硬件设计框图及所使用的各种芯

2、片功能与特性。第四章重点剖析了软件设计的过程。最后一章中具体论述了系统的调试软件及调试中出现的问题。基于 at89c51 单片机的单总线多点温度测控系统具有硬件组成简单、多点温度检测、读数方便、精度高、测温范围广等特点,在实际工程中得到广泛应用。 关键词关键词:数字温度传感器,at89c51 单片机,单总线- 2 - abstractthe problem introduces at89c51 monolithic machine and the ds18b20 figure temperature sensor-based multiple spot temperature measurem

3、ent system mainly. at89c51 single chip using the system were collected at various temperatures of the temperature, temperature display and alarm functions. it at89c51 mcu-based control chip, digital temperature sensor ds18b20 the realization of multi-channel temperature detection, measurement accura

4、cy can reach 0.5 . the system uses lcd1602a liquid crystal display modules,lcd1602a as a display, the display of visual images to measure the temperature. this article first described in the introduction of this system, as well as background features. the second chapter to determine the design. in t

5、he third chapter discusses the overall design process to determine the technical specifications and the choice of devices and a description of the hardware circuit design, hardware design and diagram used in a variety of features and functions of the chip. chapter iv analyzes the key software design

6、 process. the final chapter discusses the specific system debugging and debug software problems. at89c51 single chip based on single-bus multi-point temperature measurement and control system with simple hardware components, multi-point temperature, easy reading, high-accuracy, wide temperature rang

7、e, and other characteristics of the actual projects are widely used key words:digital temperature sensor, at89c51 single chip, single-bus- 3 - 目录目录摘 要.i iabstract.iiii第 1 章 绪 论.1 1第 2 章 系统方案设计.3 32.1 方案设计 .32.2 方案论证 .4第 3 章 系统设计.5 53.1 工作原理 .53.2 单元电路设计 .63.2.1 ds18b20 与单片机接口电路设计.63.2.2 键盘电路设计.143.2

8、.3 显示电路设计.163.2.4 报警电路设计 .19第 4 章 系统软件设计.21214.1 软件设计总体思路及主程序流程图 .214.2 测温模块流程图 .224.2.1 温度的采集 .234.2.2 多点温度的测量 .234.3 显示模块流程图 .244.4 键盘扫描流程图 .25第 5 章 元器件安装及调试.27275.1 元器件安装 .275.2 产品调试 .295.2.1 测试环境及工具.295.2.2 温度检测部分测试.295.2.3 电路主板测试.305.2.4 统一调试.30总 结.3131参考资料.3333致 谢.3434- 4 -附录一.3535附录二.3636第 1

9、章 绪 论21 世纪,科学技术的发展日新月异,科技的进步带动了测量技术的发展,现代控制设备的性能和结构发生了翻天覆地的变化。我们已经进入了高速发展的信息时代,测量技术也成为当今科技的一个主流,广泛地深入到研究和应用工程的各个领域。温度是一个和人们生活环境有着密切关系的物理量,也是一种在生产、科研、生活中需要测量和控制的重要物理量,是国际单位制七个基本量之一。温度的变化会给我们的生活、工作、生产等带来重大影响,因此对温度的测量至关重要。其测量控制一般使用各式各样形态的温度传感器。随着现代计算机和自动化技术的发展,作为各种信息的感知、采集、转换、传输相处理的功能器件,温度传感器的作用日显突出,已成

10、为自动检测、自动控制系统和计量测试中不可缺少的重要技术工具,其应用已遍及工农业生产和日常生活的各个领域。分布式温度传感器在电力工业、煤矿、森林、火灾、高层建筑、航空、航天飞行器等有着重要的应用前景,引起研究人员的广泛关注。近年来,已经有不少分布式温度传感器的报道,包括基于光纤非线性效应的拉曼温度传感器等,但由于其昂贵的成本而无法得到广泛的应用。本设计使用了美国 dallas 半导体公司的新一代数字式温度传感器 ds18b20,它具有独特的单总线接口方式 ,即允许在一条信号线上挂接数十甚至上百个数字式传感器 ,从而使测温装置与各传感器的接口变得十分简单 ,克服了模拟式传感器与微机接口时需要的 a

11、/d 转换器及其它复杂外围电路的缺点。工作时由控制信号进行具体测量点识别,这使得布线工作大大简化,可以方便地构成多传感器测量网络。此外与传统的热敏电阻传感器相比,ds18b20 具有更高的测量精度。所以,相对于传统温度传感器而言,ds18b20 数字温度传感器具有更高的经济性、灵活性、抗干扰性和精确度,在科学研究和生产实际中得到了广泛的应用。随着电子技术以及应用需求的发展,单片机技术得到了迅速的发展,在高集成度,高速度,低功耗以及高性能方面取得了很大的进展。伴随着科学技术的发展,电子技术有了更高的飞跃,我们现在完全可以运用单片机来代替人工- 5 -测量,这样既省时又省力。本设计是心 at89c

12、51 为单片机作为控制核心,提出了一种基于 ds18b20的单总线多点温度测控系统,多个温度传感节点通过单总线与单片机相联形成分布式系统。单片机通过实时监控温度的变化,通过 lcd1602 字符型 液晶显示各节点温度的数值,当温度值超出所设定的值时,报警器开始报警,从而远程实现对整个温度系统的管理和控制。这种分布式温度测量系统具有成本低廉、传感精度高、系统稳定、易于管理等优点。- 6 -第 2 章 系统方案设计2.1 方案设计方案一:该案由单片机、模拟温度传感器 ad590、运算放大器、ad 转换器、44 键盘、lcd 显示电路、集成功率放大器、报警器组成。本方案采用模拟温度传感器 ad590

13、 作为测温元件,传感器将测量的温度变换转换成电流的变化,再通过电路转换成电压的变化,使用运算放大器交将信号进行适当的放大,最后通过模数转换器将模拟信号转换成数字信号,传给给单片机,单片机将温度值进行处理之后用 lcd 显示 ,当温度值超过设置值时,系统开始报警。如图 1-1 所示:图 1-1 方案一温度测量系统方案框图方案二:该方案使用了 at89c51 单片机作为控制核心,以智能温度传感器ds18b20 为温度测量元件,采用多个温度传感器对各点温度进行检测,通过44 键盘模块对温度进行上、下限设置,超过其温度值就报警。显示电路采用lcd1602 模块,使用 8550 三极管为中心组成的报警电

14、路。如图 1-2 所示单 片 机lcd显示模块集成功放报警器键盘模块ad转换运算放大器 模拟温度传感器- 7 -温度传感器温度传感器温度传感器温度传感器单片机44 键盘lcd 液晶显示电路报警电路图 1-2 方案二温度测量系统方案框2.2 方案论证方案一采用模拟温度传感器,转换结果需要经过运算放大器和 ad 转换器传送给处理器。它控制虽然简单,但电路复杂,不容易实现对多点温度进行测量和监控。由于采用了多个分立元件和模数转换器,容易出现误差,测量结果不是很准确,因此本方案并不可取。方案二采用智能温度传感器 ds18b20,它直接输出数字量,精度高,电路简单,只需要模拟 ds18b20 的读写时序

15、,根据 ds18b20 的协议读取转换的温度。此方案硬件电路非常简单,但程序设计复杂一些,但是在课外对ds18b20、字符型液晶显示、44 键盘的程序有所了解,而且曾经在网上看到过此类程序程序设计,并且我们已经使用开发工具 keil 用 c 语言对系统进行了程序设计,用仿真软件 proteus 对系统进行了仿真,达到了预期的结果。由此可见,该方案完成具有可行性,体现了技术的先进性,经济上也没有任何问题。综上所述,本课题应当采用方案二对系统进行设计。- 8 -第 3 章 系统设计3.1 工作原理 基于单片机的单总线多点温度测控系统以 at89c51 为中心器件,以 keil为系统程序开发平台,用

16、 c 语言进行程序设计,以 proteus 作为仿真软件设计而成的。系统主要由温度传感器电路、液晶显示电路、键盘电路、报警电路组成,电路原理图如附录一所示。ds18b20 是智能温度传感器,它的输入/输出采用数字量,通过单总线,接收主机发送的命令,根据 ds18b20 内部的协议进行相应的处理,将转换的温度数值以串口形式发送给主机。主机按照通信协议用一个 io 口模拟 ds18b20 的时序,发送命令(初始化命令、rom 命令、功能命令)给 ds18b20,并读取温度值,在内部进行相应的数值处理,用字符型液晶模块显示各点的温度。在系统启动之时,可以通过 44 键盘设置各点温度的上限值和下限值,

17、当某点温度超过设置值时,报警器开始报警,从而实现了对各点温度的实时监控。每个 ds18b20 有自己的序列号,因此本系统可以在一根总线上挂接了 4个 ds18b20,通过 crc 校验,对各个 ds18b20 的 rom 进行寻址,地址符合的 ds18b20 才作出响应,接收主机的命令,向主机发送转换的温度。采用这种ds18b20 寻址技术,使系统硬件电路更加简单。ds18b20 虽然有测温简单的特点,但在实际应用中应注意一下几点: (1)较小- 9 -的硬件开销需要相对复杂的软件进行补偿, 由于 ds1820 与微处理器间采用串行数据传送,因此,在对 ds1820 进行读写编程时,必须严格的

18、保证读写. (2)在ds1820 的有关资料中均未提及单总线上所挂 ds1820 数量问题,容易使人误认为可以挂任意多个 ds1820,在实际应用中并非如此。当单总线上所挂 ds1820超过 8 个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。(4)在 ds18 20 测温程序设计中,向 ds1820 发出温度转换命令后,程序总要等待 ds1820 的返回信号,一旦某个 ds1820 接触不好或断线,当程序读该 ds1820 时,将没有返回信号,程序进入死循环。这一点在进行 ds1820 硬件连接和软件设计时也要给予一的重视.- 10 -3.2 单元电路设计3

19、.2.1 ds18b20 与单片机接口电路设计(1) ds18b20 与单片机的接口技术如图 3-1 所示:ds18b20 与单片机的接口电路非常简单。ds18b20 只有三个引脚,一个接地,一个接电源,一个数字输入输出引脚接单片机的 i/o 口,电源与数字输入输出脚间需要接一个 4.7k 的电阻。 图 3-1 ds18b20 与单片机接口电路 (2) 中央处理器 at89c51 简介 at89c51 的特点at89c51 具有以下几个特点:at89c51 与 mcs-51 系列的单片机在指令系统和引脚上完全兼容;片内有 4k 字节在线可重复编程快擦写程序存储器;全静态工作,工作范围:0hz2

20、4mhz;三级程序存储器加密;1288 位内部 ram;32 位双向输入输出线;两个十六位定时器/计数器五个中断源,两级中断优先级;一个全双工的异步串行口;间歇和掉电两种工作方式。at89c51 的功能描述- 11 -at89c51 是一种低损耗、高性能、cmos 八位微处理器,片内有 4k 字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除 1000次,数据保存时间为十年。它与 mcs-51 系列单片机在指令系统和引脚上完全兼容,不仅可完全代替 mcs-51 系列单片机,而且能使系统具有许多 mcs-51系列产品没有的功能。at89c51 可构成真正的单片机最小应用系统,缩

21、小系统体积,增加系统的可靠性,降低系统的成本。只要程序长度小于 4k,四个 i/o 口全部提供给用户。可用 5v 电压编程,而且擦写时间仅需 10 毫秒,仅为 8751/87c51 的擦除时间的百分之一,与8751/87c51 的 12v 电压擦写相比,不易损坏器件,没有两种电源的要求,改写时不拔下芯片,适合许多嵌入式控制领域。工作电压范围宽(2.7v6v) ,全静态工作,工作频率宽在0hz24mhz 之间,比 8751/87c51 等 51 系列的6mhz12mhz 更具有灵活性,系统能快能慢。at89c51 芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统

22、不被仿制。p0 口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。 at89c51 引脚功能at89c51 单片机 40 引脚分布如右图所示。at89c51 是一种低损耗、高性能、cmos 八位微处理器,片内有 4k 字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除 1000次,数据保存时间为十年。它与 mca-51 系列单片机在指令系统和引脚上完全兼容,不仅可完全代替 mcs-51 系列单片机,而且能使系统具有许多 mcs-51系列产品没有的功能。at89c51 可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。

23、只要程序长度小于 4k,四个 i/o 口全部提供给用户。- 12 -可用 5v 电压编程,而且擦写时间仅需 10 毫秒,仅为 8751/87c51 的擦除时间的百分之一,与 8751/87c51 的 12v 电压擦写相比,不易损坏器件,没有两种电源的要求,改写时不拔下芯片,适合许多嵌入式控制领域。工作电压范围宽(2.7v6v) ,全静态工作,工作频率宽在 0hz24mhz 之间,比8751/87c51等 51 系列的 6mhz12mhz 更具有灵活性,系统能快能慢。at89c51 芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。p0 口是三态双向口,

24、通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。(3)ds18b20 的工作原理 ds18b20 数字温度传感器概述ds18b20 数字温度传感器是 dallas 公司生产的1wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。ds18b20 产品的特点 只要求一个端口即可实现通信。 在 ds18b20 中的每个器件上都有独一无二的序列号。 实际应用中不需要外部任何元器件即可实现测温。 测量温度范围在55.c 到125.c 之间。 数字温度计的分辨率用户可以从 9 位到 12 位选择。

25、 内部有温度上、下限告警设置。to92 封装的 ds18b20 的引脚排列见右图,其引脚功能描述见表序号名称引脚功能描述表 2 p3 口的第二功能- 13 -1gnd地信号2dq数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源3vdd可选择的 vdd 引脚,当工作于寄生电源时,该引脚必须接地表 3-2ds18b20 详细引脚功能描述 ds18b20 的内部结构ds18b20 的内部框图下图所示。64 位 rom 存储器件独一无二的序列号。暂存器包含两字节(0 和 1 字节)的温度寄存器,用于存储温度传感器的数字输出。暂存器还提供一字节的上线警报触发(th)和下线警报触发

26、(tl)寄存器(2 和 3 字节) ,和一字节的配置寄存器(4 字节) ,使用者可以通过配置寄存器来设置温度转换的精度。暂存器的 5、6 和 7 字节器件内部保留使用。第八字节含有循环冗余码(crc ) 。使用寄生电源时,ds18b20 不需额外的供电电源;当总线为高电平时,功率由单总线上的上拉电阻通过 dq 引脚提供;高电平总线信号同时也向内部电容 cpp 充电,cpp 在总线低电平时为器件供电。(4)ds18b20 的 4 个主要数据部件:光刻 rom 中的 64 位序列号是出厂前被光刻好的,它可以看作是该ds18b20 的地址序列码。64 位光刻 rom 的排列是:开始 8 位(28h)

27、是产品类型标号,接着的 48 位是该 ds18b20 自身的序列号,最后 8 位是前面 56 位的循环冗余校验码(crc=x8+x5+x4+1) 。光刻 rom 的作用是使每一个- 14 -ds18b20 都各不相同,这样就可以实现一根总线上挂接多个 ds18b20 的目的。ds18b20 中的温度传感器可完成对温度的测量,以 12 位转化为例:用16 位符号扩展的二进制补码读数形式提供,以 0.0625/lsb 形式表达,其中s 为符号位。这是 12 位转化后得到的 12 位数据,存储在 18b20 的两个 8 比特的 ram中,二进制中的前面 5 位是符号位,如果测得的温度大于 0,这 5

28、 位为 0,只要将测到的数值乘于 0.0625 即可得到实际温度;如果温度小于 0,这 5 位为 1,测到的数值需要取反加 1 再乘于 0.0625 即可得到实际温度。例如+125的数字输出为 07d0h,+25.0625的数字输出为 0191h,-25.0625的数字输出为 ff6fh,-55的数字输出为 fc90h。表 3-4ds18b20 温度数据表temperaturedigital outputdigital output+1250000 0111 1101 000007d0h+850000 0101 0101 00000550h+25.06250000 0001 1001 0001

29、0191h+10.1250000 0000 1010 001000a2h+0.50000 0000 0000 10000008h00000 0000 0000 00000000h-0.51111 1111 1111 1000fff8h-10.1251111 1111 0101 1110ff5eh-25.06251111 1110 0110 1111fe6fh-551111 1100 1001 0000fc90hds18b20 温度传感器的存储器 ds18b20 温度传感器的内部存储器包括一个高速暂存 ram 和一个非易失性的可电擦除的 eepram,后者存放高温度和低温度触发器 th、tl 和

30、结构寄存器。配置寄存器- 15 -表 3-5 配置寄存器0r1r011111低五位一直都是1,tm 是测试模式位,用于设置 ds18b20 在工作模式还是在测试模式。在 ds18b20 出厂时该位被设置为 0,用户不要去改动。r1 和r0 用来设置分辨率,如下表所示:(ds18b20 出厂时被设置为 12 位)表 3-6r1 与 r0 确定传感器分辨率设置表r1r0传感器精度/bit转换时间/ms00993.750110187.510113751112750(5)ds18b20 的工作过程 初始化 rom 命令跟随着需要交换的数据; 功能命令跟随着需要交换的数据。访问 ds18b20 必须严格

31、遵守这一命令序列,如果丢失任何一步或序列混乱,ds18b20 都不会响应主机(除了 search rom 和 alarm search 这两个命令,在这两个命令后,主机都必须返回到第一步) 。a初始化:ds18b20 所有的数据交换都由一个初始化序列开始。由主机发出的复位脉冲和跟在其后的由 ds18b20 发出的应答脉冲构成。当 ds18b20 发出响应主机的应答脉冲时,即向主机表明它已处在总线上并且准备工作。b. rom 命令:rom 命令通过每个器件 64-bit 的 rom 码,使主机指定某一特定器件(如果有多个器件挂在总线上)与之进行通信。ds18b20 的 rom 如表 3-4 所示

32、,每个 rom 命令都是 8 bit 长。c. 功能命令:主机通过功能命令对 ds18b20 进行读/写 scratchpad 存储器,或者启动温度转换。ds18b20 的功能命令如表 3-7 所示。指令协议功能读 rom33h读 ds18b20 中的编码(即 64 位地址)发出此命令后,接着发出 64 位 rom 编码,访问单总线上与该编码- 16 -符合 rom55h相对应的 ds18b20,使之作出响应,为下一步对该 ds18b20 的读写作准备搜索 rom0f0h用于确定挂接在同一总线上 ds18b20 的个数和识别 64 位 rom 地址,为操作各器件作好准备跳过 rom0cch忽略

33、 64 位 rom 地址,直接向 ds18b20v 温度转换命令,适用于单个 ds18b20 工作报警搜索命令0ech执行后,只有温度超过庙宇值上限或下限的片子才做出响应温度转换44h启动 ds18b20 进行温度转换,转换时间最长为 500ms(典型为200ms),结果丰入内部 9 字节 ram 中读暂存器beh读内部 ram 中 9 字节的内容写暂存器4eh发出向内部 ram 的第 3、4 字节写上、下温度数据命令,紧该温度命令之后,传达两字节的数据复制暂存器48h将 ram 中第 3、4 字内容复制到 e2prom 中重调 e2prom0b8h将 e2prom 中内容恢复到 ram 中的

34、第 3、4 字节读供电方式0b4h读 ds18b20 的供电模式,寄生供电时 ds18b20 发送“0” ,外部供电时 ds18b20 发送“1”表 3-7(6)ds18b20 的信号方式ds18b20 采用严格的单总线通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲、应答脉冲、写 0、写 1、读 0 和读 1。除了应答脉冲所有这些信号都由主机发出同步信号。总线上传输的所有数据和命令都是以字节的低位在前。a.初始化序列:复位脉冲和应答脉冲在初始化过程中,主机通过拉低单总线至少 480s,以产生复位脉冲(tx)。然后主机释放总线并进入接收(rx)模式。当总线被释放后,5k 的上拉

35、电阻将单总线拉高。ds18b20 检测到这个上升沿后,延时 15s60s,通过拉低总线60s240s 产生应答脉冲。初始化波形如图 3-8 所示。 图 3-8 初始化脉冲b.读和写时序在写时序期间,主机向 ds18b20 写入指令;而在读时序期间,主机读入来自 ds18b20 的指令。在每一个时序,总线只能传输一位数据。读/写时序如图- 17 -3-9 所示。 写时序存在两种写时序:“写 1”和“写 0” 。主机在写 1 时序向 ds18b20 写入逻辑 1,而在写 0 时序向 ds18b20 写入逻辑 0。所有写时序至少需要 60s,且在两次写时序之间至少需要 1s 的恢复时间。两种写时序均

36、以主机拉低总线开始。产生写 1 时序:主机拉低总线后,必须在 15s 内释放总线,然后由上拉电阻将总线拉至高电平。产生写 0 时序:主机拉低总线后,必须在整个时序期间保持低电平(至少 60s) 。在写时序开始后的 15s60s 期间,ds18b20 采样总线的状态。如果总线为高电平,则逻辑 1 被写入 ds18b20;如果总线为低电平,则逻辑 0 被写入ds18b20。 读时序图 3-9ds18b20 读/写时序图- 18 -ds18b20 只能在主机发出读时序时才能向主机传送数据。所以主机在发出读数据命令后,必须马上产生读时序,以便 ds18b20 能够传送数据。所有读时序至少 60s,且在

37、两次独立的读时序之间至少需要 1s 的恢复时间。每次读时序由主机发起,拉低总线至少 1s。在主机发起读时序之后,ds18b20 开始在总线上传送 1 或 0。若 ds18b20 发送 1,则保持总线为高电平;若发送 0,则拉低总线。当传送 0 时,ds18b20 在该时序结束时释放总线,再由上拉电阻将总线拉回空闲高电平状态。ds18b20 发出的数据在读时序下降沿起始后的 15s 内有效,因此主机必须在读时序开始后的 15s 内释放总线,并且采样总线状态。ds18b20 在使用时,一般都采用单片机来实现数据采集。只需将ds18b20 信号线与单片机1 位i/o线相连,且单片机的1 位i/o 线

38、可挂接多个ds18b20 ,就可实现单点或多点温度检测。(7)ds18b20 的温度计算ds18b20 允许通过程序对传感器的分辨率,温度报警的上、下限等参数进行配置。它的内部存储器包括一个高速暂存存储器和一个非易失性可擦除eprom。速暂存存储器共有 8 个字节(byte),每个字节 8 位(bit)。根据温度的计算方法如下:s s s s s = 11111 b 温度值:t = (msb and 7) 256 + lsb 0.0625 sssss = 00000 b 温度值:t = - (256 - msb) 256 - lsb 0.0625 如果,存储器高位寄存器 ms 的 s s s

39、s s 均为 1 ,则被测温度为正值,用上面第 1 个公式来计算温度。如果存储器高位寄存器 msb 的 s s s s s 均为 0,则被测温度为负值,用上面第 2 个公式来计算温度。在这里,有两点应当注意:一是公式中中括号内的数值为二进制,在计算口号内计算完成后应转化为十进制;二是这里的 7 与 0.0625 是假设传感器的分辨率设置 0.0625 时的计算值。如果分辨率的设置值不是 0.0625,那么就应当作相应的变化。第 3 和第 4 个字节分别用来存放温度报警的上限(th)和下限值(tl)。ds18b20 在完成温度变换后,会将所测温度值与贮存在 th 和 tl 内的上下限值相比较,如

40、果测温结果高于 th 或低于tl,ds18b20 内部的告警标志就会被置位,表示温值超出了测量范围。并且该值在掉电后不会丢失,而是记忆其设定的上下限值。第 5 字节是配置寄存器,如表2.3 所示,该寄存器用于对温度转换值的分辨率进行设置。其中,最高位用于设置传感器是工作模式还是测试模式,是生产厂家为便于检验使用。其出厂时的默认- 19 -值为 0,为工作模式(即用户使用时的模式)。并且在用户使用中,该位总是保持为0。r1 与 r0 确定传感器的分辨率,如表 2.4 所示,ds18b20 有 4 种分辨率可供选择。使用时可以根据实际需要来设置,出厂时的默认设置是 12 位。最后 5 位总保持为1

41、3.2.2 键盘电路设计根据设计任务书中要求实现的功能,我选择了 4x4=16 个键盘的矩阵键盘来设置温度的上、下限值,此键盘设计符合系统设置要求,所以我选择此键盘完成本设计。矩阵键盘结构:键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。矩阵键盘又称行列式键盘,这种行列式键盘结构能够有效的提高单片机系统中 i/o 口的利用率。它的结构和产生的波形如图 3-11 所示。图 3-11 键盘结构及产生的波形图矩阵键盘工作原理:在键盘中按键数量较多时,为了减少 i/o 口的占用,通常将按键排列成矩阵形式,如图 3-12 所示。在矩阵式键盘中,每条水平线和垂直线在交叉处

42、不直接连通,而是通过一个按键来连通。利用这种行列矩阵结构只需 n 条行线和 m 条列线,即可组成具有 n*m 个按键的键盘。这样,一个端口就可以构成 4x4=16 个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成 20 键的键盘,而直接用端口线则只能多出一键(9 键) 。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,图 3-12 中,行线所接的单片机的 i/o 口作为输出端,而列线所接的 i/o 口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输

43、出是低电平,一旦有- 20 -键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。图 3-12 键盘电路原理图键盘按键的判断:上面是一个 4x4 的键盘,公用 4+4=8 条接口线,如果按下键 8,则第一行的线与第一列的线接通,当前第一行如果是低电平则第一列也输出低电平,而其他没有的列输出为高电平,根据行列线的电平,就可以判断按下的键的行位置。a)判断有无键按下。b)去除键的机械抖动。方法是判别到有键按下,延时 10ms 在读,如仍有键按下,再确定为键按下,否则为抖动。c)判别按下键的键号。d)cpu 对键的一次闭合只作一次处理。方法是等键释放后再把键值作有效处理。列

44、扫描法识别键号的工作原理如下:将第 0 列变为低电平,其余列为高电平,输出编码为 1110。然后读取行的电平,辨别第 0 列是否有键按下。在第 0 列上若有某一个按键按下,则相应的行被拉到低电平,则表示第 0 列和此行相交的位置上有键按下。若没有任一条行线为低电平,则说明列上无键按下。将第 1 列变为低电平,其余列为高电平,输出编码为本 1101。然后通过输入口读取各行的电平。检测其中是否有变为低电平的行线。若有键按下,则进而辨别哪一行有键按下,确定按键位置。将第 2 列变为低电平,其余列为低电时平,输出编码为本 1011。辨别是否- 21 -有哪一行按键按下的方法同上。将第 3 列边为第电平

45、,其余列为低电平时,输出编码为本 0111。辨别是否有哪一行按键按下的方法同上。3.2.3 显示电路设计温度显示工作原理:lcd1602 可以采用两种方式与单片机连接,一种是采用 8 位数据总线d0d7,和 rs、r/w、en 三个控制端口;另一种是只用 d4-d7 作为四位数据分两次传送。本实验将使用并采用八位数据方式来控制 1602 显示,如图 3-13所示:图 3-13 at89c51与 lcd1602 接口电路图进行 lcd 设计主要是 lcd 的控制/驱动和外界的接口设计。控制主要是通过接口与外界通信、管理内/外显示 ram,控制驱动器,分配显示数据;驱动主要是根据控制器要求,驱动

46、lcd 进行显示。控制器还常含有内部 ascii 字符库,或可外扩的大容量汉字库。at89c51 的 p3.7 与 lcd1602 的使能端 e 相连,p3.6 与读写选择端 r/w相连,p3.5 与 rs 相连,当使能端使能时,再通过命令选择端来控制读数据,写数据,写命令。控制 p2 端口与 lcd1602a 的数据端口相连,传输数据。lcd1602 的性能参数lcd1602a 的管脚排列如图 3-14、 ,它共有 16 个脚,各引脚功能如下:vss: 电源地vdd:电源正极vl:液晶显示偏压信号,对比度调整端,- 22 -接地时最高,接正电源最低,可接 10k电位器调整rs: 寄存器选择,

47、高电平选择数据寄存器低电平选择指令寄存器 r/w 读/写选择端,高电平读操作,低电平写操作 e 使能信号,当 e 端由高电平跳变成低电平时,液晶模块执行命令bla 背光源正极图blk 背光源负极 图 3-14 lcd1602a 的管脚d0d7 数据端口芯片的主要技术参数及应用配置:显示容量:162 个字符芯片工作电压:4.55.5v工作电流:2.0ma(5.0v)模块最佳工作电压:5.0v字符尺寸:2.954.35(wxh)mm表 3-15lcd1602a 主要技术参数表 lcd 1602a 显示模式指令码功能00111000设置 16*2 显示,5*7 点阵, 8 位数据接口指令码功能000

48、01dcbd=1 开显示 d=0 关显示c=1 显示光标 c=0 不显示光标b=1 光标闪烁 b=0 光标不闪烁000001nsn=1 当读/写一个字符后,地址指针加1,且光标加 1;n=0 当读/写一个字符后,地址指针减1,且光标减 1;s=1 当写一个字符,整屏显示左移(n=1)或者右移(n=0),以得到光标不移动而整屏移动的效果;s=0 当写一个字符,整屏显示不移动。- 23 -表 3-17 lcd1602a 显示开/关及光标设置编号符号引脚说明1vss电源地2vdd电源正极3vl液晶显示偏压信号,4rs数据/命令选择端(h/l)5r/w读/写选择端(h/l)6e使能信号7d0data

49、i/o8d1data i/o9d2data i/o10d3data i/o11d4data i/o12d5data i/o13d6data i/o14d7data i/o15bla背光源正16blk背光源负表 3-18 lcd1602a 接口信号说明lcd1602 的显示与控制命令1602 液晶模块内部的字符发生内存(cgrom)已经存储了 160 个不同的点阵字符图形,如下图所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“a”的代码是 01000001b(41h) ,显示时模块把地址 41h 中的点阵字符图形显示出来

50、,我们就能看到字母“a”。1602 液晶模块内部的控制器共有 11 条控制指令,如表 2 所示,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。 (说明:1 为高电平、0为低电平)指令 1:清显示,指令码 01h,光标复位到地址 00h 位置;指令 2:光标复位,光标返回到地址 00h;指令 3:光标和显示模式设置 i/d:光标移动方向,高电平右移,低电平左移 s:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效;指令 4:显示开关控制。d:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 c:控制光标的开与关,高电平表示有游标,低电平表示无- 24 -游标 b:控

51、制光标是否闪烁,高电平闪烁,低电平不闪烁;指令 5:光标或显示移位元 s/c:高电平时移动显示的文字,低电平时移动光标;指令 6:功能设置命令 dl:高电平时为 4 位总线,低电平时为 8 位总线n:低电平时为单行显示,高电平时双行显示 f:低电平时显示 5x7 的点阵字符,高电平时显示 5x10 的点阵字符;指令 7:字符发生器 ram 地址设置;指令 8:ddram 地址设置;指令 9:读忙信号和光标地址 bf:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙;指令 10:写数据;指令 11:读数据;液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认

52、模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。3.2.4 报警电路设计电路板上的 550(q1)三极管驱动一个无源蜂鸣器,构成一个简单的音响电路,该电路利用单片机的一个引脚作为驱动来源,经 q1 驱动后发声,这一引脚是 p1.1 脚。由于采用了无源蜂鸣器,所以 p1.1 输出低电平时,蜂鸣器不会发声,需要输出一个脉冲信号蜂鸣器才会发声,脉冲信号的频率决定了蜂鸣器发出的声音的音调的高低。电路如图 3-19 所示:- 25 -第 4 章 系统软件设计4.1 软件设计总体思路及主程序流程图本系统采用 c 语言编写,主程序主要由四部分构

53、成,系统通电后首先初始化系统,依次完成温度采集、温度处理、数据显示、键盘处理等四项功能。温度采集部分主要完成 4 个温度测试点的温度数据采集任务;温度处理部分主要是将采集到的温度数据与用户设定的各点上下限温度值进行比较处理,并判断是否超出设定的上下限值,如果超出则蜂鸣器报警;数据显示部分主要实现温度数据的显示,显示方式根据设计要求支持 1 到 4 个温度测试点的轮流循环显示和固定显示两种方式;键盘处理部分主要实现用户对系统参数的设置,结合显示部分,实现用户与系统之间的人机接口。系统软件主流程如图 4-1 所示: - 26 -开始系统初始化温度采集温度处理数据显示键盘处理图 4-1 系统软件总流

54、程图4.2 测温模块流程图- 27 -读温度初始化温度传感器扫描键盘选定所需芯片选定所需芯片进行温度转换读取温度调试显示子程序子程序返回图 4-2 dsl8b20 操作流程图- 28 - 4.2.1 温度的采集每一片 dsl8b20 在其 rom 中都存有其唯一的 48 位序列号,在出厂前已写入片内 rom 中,主机在进入操作程序前必须逐一接入 dsl8b20,用读rom(33h)命令将该 dsl8b20 的序列号读出并登录。当主机需要对众多在线dsl8b20 的某一个进行操作时首先要发出匹配 rom 命令(55h),紧接着主机提供 64 位序列(包括该 dsl8b20 的 48 位序列号)之

55、后的操作就是针对该 dsl8b20的,而所谓跳过 rom 命令即为之后的操作,是对所有 dsl8b20 的框图中先有跳过 rom 即是启动所有 dsl8b20 进行温度变换之后通过匹配 rom 再逐一地读回每个 dsl8b20 的温度数据在 dsl8b20 组成的测温系统中主机在发出跳过rom 命令之后再发出统一的温度转换启动码 44h 就可以实现所有 dsl8b20 的统一转换再经过 1s 后就可以用很少的时间去逐一读取这种方式,使其 t 值往往小于传统方式。由于采取公用的放大电路和 a/d 转换器只能逐一转换,显然通道数越多这种省时效应就越明显。4.2.2 多点温度的测量单总线 已经挂接了

56、 4 个 ds18b20。由于已经在上面获取了多个 ds18b20的 rom 代码并在 at89c51 单片机内部的中建立了测量位置点和传感器 64 位rom 代码之间的关系表,因此对多个温度的巡回测量的步骤如下:(1)发跳过 rom 命令 cch。(2)发启动所有在线的 ds18b20 进行温度转换命令 44h。(3)延迟 1s。(4)发匹配 rom 命令 55h。(5)按照 at89c51 中建立的关系表的顺序取出 64 位 rom 代码发送到单总线。(6)发读温度值命令 beh,读取温度值。(7)进行 crc 校验和数据处理后送 lcd 显示器显示。(8)重复第 4 步到第 7 步,直到

57、所有的 ds18b20 测量处理完。(9)再重复第 1 步到第 8 步,进行下一轮的巡回测量。如果只对某一个 ds18b20 进行温度测量,只要将第 1 步跳过 rom 命令cch,改为匹配 rom 命令 55h,将拨动开关拨到和要测量的 ds18b20 的编号相对应的数值上,单片机读取拨动开关的数值(编号)n,到 at89c51 建立的关系表中- 29 -从(n -1)8 开始的单元取出 rom 代码发送到总线,去掉第 8 步,其余和上面步骤相似即可。测试中,ds18b20 选择芯片出厂时默认的 12 位转换精度,转换的结果用 16 位符号扩展的二进制补码读数形式提供。初始化跳过 rom等待

58、 1s初始化设置 18b20 个数符合 rom读存储器缓冲指针增一初始化b1=0?否图 4-3 多路温度测量电路流程图4.3 显示模块流程图开始初始化 lcd1602写显示地址写显示字符子程序返回图 4-4 lcd1602a 操作流程图是- 30 -4.4 键盘扫描流程图按键处理程序通过扫描按键情况,读取键值。主要完成各点温度传感器上下限报警参数设置和显示模式设置。(1)通过扫描键盘读取键值,流程图如图 4-5 所示:键盘扫描有键闭合延时去键抖动动扫描键盘找到闭合键计算键值闭合键释放建立有效标志返回建立无效标志nyny图 4-5 键盘扫描程序流程图(2)设置报警上、下限值ds18b20 设有温

59、度上下限报警功能。dsl8b20 的存储器由两部分组成:一个是 9 字节的静态 ram,其中第 0 和第 1 字节用于存储 16 位的温度转换值,第 2(高温限 th)和第 3 字节(低温限 tl)作为温度报警限值或通用存储器单元供用户使用;另一个是非易失性的 eprom。当静态 ram 作为温度报警限值使用时,可以在系统安装和工作前,用写 ram 命令 4eh 将高温限 th 和低温限tl 写入第 2 和第 3 字节单元。由于静态 ram 掉电后信息即丢失,因此需要再ny- 31 -通过拷贝 ram 命令 48h 将第 2 和第 3 字节单元的温度报警限值拷贝到eprom 中。主程序只要在初

60、始化部分使用重调 eprom 命令 b8h,就可以将eprom 中的温度报警限值重新拷贝到静态 ram 中。- 32 -第 5 章 元器件安装及调试5.1 元器件安装(1)在安装元件前要先认识和检测元件,一些常见元件的认识与检测如下: 电容:电容在这里用到的是瓷片电容和电解电容,其外围上面都有标记,我们只需检测其好坏。在利用万用表检测时要注意如果为电解电容红表笔应接负极,黑表笔接正极。对于 2200pf 以下的电容用万用表 r10k 或r100k 测量,2200pf 以上可以用 r1k 或 r100k 档测量。档次调整好了和表笔接好后,观察万用表指针是否较大的偏转,然后由最大的偏转慢慢的减小至

温馨提示

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

评论

0/150

提交评论