基于单片机的单总线多点温度测控系统

更新时间:2024-05-29 04:02:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

常州机电职业技术学院

毕 业 设 计 (论 文)

基于单片机的多点温度报警系统设计

系 名: 电气工程系 专业班级: 电气自动化 学生姓名: 沈星奔 学 号: 40911436 指导教师姓名: 余小喜 指导教师职称:

2012年 2 月

基于单片机多点温度报警系统

专业班级:自动化0934 学生姓名:沈星奔 指导教师:余小喜 职称:

摘要 本课题主要介绍基于AT89C51单片机和DS18B20数字温度传感器的

多点温度测量系统。该系统利用AT89C51单片机分别采集各个温度点的温度,实现温度显示、报警等功能。它以AT89C51单片机为主控制芯片,采用数字温度传感器DS18B20实现多路温度的检测,测量精度可以达到0.5℃。该系统采用了LCD1602A液晶显示模块,LCD1602A作为显示器 ,形象直观的显示测出的温度值。

- 1 -

本文首先在绪论中介绍了此系统的背景以及功能。第二章确定设计方案。在第三章论述了总体的设计过程,确定了技术指标及器件的选择并且描述了系统硬件电路设计、硬件设计框图及所使用的各种芯片功能与特性。第四章重点剖析了软件设计的过程。最后一章中具体论述了系统的调试软件及调试中出现的问题。基于AT89C51单片机的单总线多点温度测控系统具有硬件组成简单、多点温度检测、读数方便、精度高、测温范围广等特点,在实际工程中得到广泛应用。

关键词:数字温度传感器,AT89C51单片机,单总线

Abstract The problem introduces AT89C51 monolithic machine and the DS18B20

figure temperature sensor-based multiple spot temperature measurement 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 accuracy 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 the 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 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 range, and other characteristics of the actual projects are widely used

Key words:digital temperature sensor, AT89C51 single chip, single-bus

- 2 -

目录

摘 要 ................................................... - 1 - ABSTRACT ................................................. - 2 - 第1章 绪 论 ............................................. 6 第2章 系统方案设计......................................... 8

2.1 方案设计 .................................................. 8 2.2 方案论证 .................................................. 9 第3章 系统设计 .............................................10

3.1工作原理 ................................................. 10 3.2 单元电路设计 ............................................. 11 3.2.1 DS18B20与单片机接口电路设计.......................... 11 3.2.2键盘电路设计.......................................... 20 3.2.3显示电路设计.......................................... 22 3.2.4 报警电路设计 ......................................... 25

第4章 系统软件设计 ........................................26

4.1 软件设计总体思路及主程序流程图 ....................... - 24 - 4.2 测温模块流程图 ...........................错误!未定义书签。 4.2.1 温度的采集 ....................................... - 26 - 4.2.2 多点温度的测量 ................................... - 27 - 4.3 显示模块流程图 ........................................... 30 4.4 键盘扫描流程图 ........................................... 30 第5章 元器件安装及调试 ....................................32

5.1元器件安装 ............................................... 32 5.2产品调试 ................................................. 34 5.2.1测试环境及工具........................................ 34 5.2.2温度检测部分测试...................................... 35 5.2.3电路主板测试.......................................... 35 5.2.4统一调试.............................................. 35

总 结 ......................................................36 参考资料 ................................................ - 34 - 致 谢 ................................................ - 35 - 附录一 ......................................................40

- 3 -

附录二 ......................................................41

第1章 绪 - 4 -

21世纪,科学技术的发展日新月异,科技的进步带动了测量技术的发展,现代控制设备的性能和结构发生了翻天覆地的变化。我们已经进入了高速发展的信息时代,测量技术也成为当今科技的一个主流,广泛地深入到研究和应用工程的各个领域。

温度是一个和人们生活环境有着密切关系的物理量,也是一种在生产、科研、生活中需要测量和控制的重要物理量,是国际单位制七个基本量之一。温度的变化会给我们的生活、工作、生产等带来重大影响,因此对温度的测量至关重要。其测量控制一般使用各式各样形态的温度传感器。随着现代计算机和自动化技术的发展,作为各种信息的感知、采集、转换、传输相处理的功能器件,温度传感器的作用日显突出,已成为自动检测、自动控制系统和计量测试中不可缺少的重要技术工具,其应用已遍及工农业生产和日常生活的各个领域。

分布式温度传感器在电力工业、煤矿、森林、火灾、高层建筑、航空、航天飞行器等有着重要的应用前景,引起研究人员的广泛关注。近年来,已经有不少分布式温度传感器的报道,包括基于光纤非线性效应的拉曼温度传感器等,但由于其昂贵的成本而无法得到广泛的应用。本设计使用了美国 Dallas 半导体公司的新一代数字式温度传感器DS18B20,它具有独特的单总线接口方式 ,即允许在一条信号线上挂接数十甚至上百个数字式传感器 ,从而使测温装置与各传感器的接口变得十分简单 ,克服了模拟式传感器与微机接口时需要的A/D转换器及其它复杂外围电路的缺点。工作时由控制信号进行具体测量点识别,这使得布线工作大大简化,可以方便地构成多传感器测量网络。此外与传统的热敏电阻传感器相比,DS18B20具有更高的测量精度。所以,相对于传统温度传感器而言,DS18B20数字温度传感器具有更高的经济性、灵活性、抗干扰性和精确度,在科学研究和生产实际中得到了广泛的应用。

随着电子技术以及应用需求的发展,单片机技术得到了迅速的发展,在高集成度,高速度,低功耗以及高性能方面取得了很大的进展。伴随着科学技术的发展,电子技术有了更高的飞跃,我们现在完全可以运用单片机来代替人工测量,这样既省时又省力。

本设计是心AT89C51为单片机作为控制核心,提出了一种基于DS18B20的单总线多点温度测控系统,多个温度传感节点通过单总线与单片机相联形成分布式系统。单片机通过实时监控温度的变化,通过LCD1602字符型液晶显示各节点温度的数值,当温度值超出所设定的值时,报警器开始报警,从而远程实现对整个温度系统的管理和控制。这种分布式温度测量系统具有成本低廉、传感精度

- 5 -

高、系统稳定、易于管理等优点。

第2章 系统方案设计

- 6 -

2.1 方案设计

方案一:该案由单片机、模拟温度传感器AD590、运算放大器、AD转换器、4×4键盘、LCD显示电路、集成功率放大器、报警器组成。

本方案采用模拟温度传感器AD590作为测温元件,传感器将测量的温度变换转换成电流的变化,再通过电路转换成电压的变化,使用运算放大器交将信号进行适当的放大,最后通过模数转换器将模拟信号转换成数字信号,传给给单片机,单片机将温度值进行处理之后用LCD显示 ,当温度值超过设置值时,系统开始报警。如图1-1所示:

LCD 模拟温度传感器运算放大器AD转换单片机显示模块

键盘模块集成功放报警器

图1-1方案一温度测量系统方案框图

方案二:该方案使用了AT89C51单片机作为控制核心,以智能温度传感器DS18B20为温度测量元件,采用多个温度传感器对各点温度进行检测,通过4×4键盘模块对温度进行上、下限设置,超过其温度值就报警。显示电路采用LCD1602模块,使用8550三极管为中心组成的报警电路。如图1-2所示

温度传感器 LCD液晶 显示电路 温度传感器 温度传感器 单片机 报温度传感器 警电路 4×4键盘 图1-2 方案二温度测量系统方案框

2.2 方案论证

- 7 -

方案一采用模拟温度传感器,转换结果需要经过运算放大器和AD转换器传送给处理器。它控制虽然简单,但电路复杂,不容易实现对多点温度进行测量和监控。由于采用了多个分立元件和模数转换器,容易出现误差,测量结果不是很准确,因此本方案并不可取。

方案二采用智能温度传感器DS18B20,它直接输出数字量,精度高,电路简单,只需要模拟DS18B20的读写时序,根据DS18B20的协议读取转换的温度。

此方案硬件电路非常简单,但程序设计复杂一些,但是在课外对DS18B20、字符型液晶显示、4×4键盘的程序有所了解,而且曾经在网上看到过此类程序程序设计,并且我们已经使用开发工具KEIL用C语言对系统进行了程序设计,用仿真软件PROTEUS对系统进行了仿真,达到了预期的结果。由此可见,该方案完成具有可行性,体现了技术的先进性,经济上也没有任何问题。

综上所述,本课题应当采用方案二对系统进行设计。

- 8 -

第3章 系统设计

3.1工作原理

基于单片机的单总线多点温度测控系统以AT89C51为中心器件,以KEIL为系统程序开发平台,用C语言进行程序设计,以PROTEUS作为仿真软件设计而成的。系统主要由温度传感器电路、液晶显示电路、键盘电路、报警电路组成,电路原理图如附录一所示。

DS18B20是智能温度传感器,它的输入/输出采用数字量,通过单总线,接收主机发送的命令,根据DS18B20内部的协议进行相应的处理,将转换的温度数值以串口形式发送给主机。主机按照通信协议用一个IO口模拟DS18B20的时序,发送命令(初始化命令、ROM命令、功能命令)给DS18B20,并读取温度值,在内部进行相应的数值处理,用字符型液晶模块显示各点的温度。在系统启动之时,可以通过4×4键盘设置各点温度的上限值和下限值,当某点温度超过设置值时,报警器开始报警,从而实现了对各点温度的实时监控。

每个DS18B20有自己的序列号,因此本系统可以在一根总线上挂接了4个DS18B20,通过CRC校验,对各个DS18B20的ROM进行寻址,地址符合的DS18B20才作出响应,接收主机的命令,向主机发送转换的温度。采用这种DS18B20寻址技术,使系统硬件电路更加简单。

DS18B20虽然有测温简单的特点,但在实际应用中应注意一下几点: (1)较小的硬件开销需要相对复杂的软件进行补偿, 由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写. (2)在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。(4)在DS18 20测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予一的重视.

- 9 -

3.2 单元电路设计

3.2.1 DS18B20与单片机接口电路设计

(1) DS18B20与单片机的接口技术

如图3-1所示:DS18B20与单片机的接口电路非常简单。DS18B20只有三个引脚,一个接地,一个接电源,一个数字输入输出引脚接单片机的I/O口,电源与数字输入输出脚间需要接一个4.7K的电阻。

图3-1 DS18B20与单片机接口电路

(2) 中央处理器AT89C51简介 ① AT89C51的特点

AT89C51具有以下几个特点:

AT89C51与MCS-51系列的单片机在指令系统和引脚上完全兼容; 片内有4k字节在线可重复编程快擦写程序存储器; 全静态工作,工作范围:0Hz~24MHz; 三级程序存储器加密; 128×8位内部RAM; 32位双向输入输出线; 两个十六位定时器/计数器 五个中断源,两级中断优先级; 一个全双工的异步串行口; 间歇和掉电两种工作方式。

- 10 -

②AT89C51的功能描述

AT89C51是一种低损耗、高性能、CMOS八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,

数据保存时间为十年。它与MCS-51系列单片机在指令系统和引脚上完全兼容,不仅可完全代替MCS-51系列单片机,而且能使系统具有许多MCS-51系列产品没有的功能。

AT89C51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。只要程序长度小于4K,四个I/O口全部提供给用户。可用5V电压编程,而且擦写时间仅需10毫秒,仅为8751/87C51的擦除时间的百分之一,与8751/87C51的12V电压擦写相比,不易损坏器件,没有两种电源的要求,改写时不拔下芯片,适合许多嵌入式控制领域。工作电压范围宽(2.7V~6V),全静态工作,工作频率宽在0Hz~24MHz之间,比8751/87C51等51系列的6MHz~12MHz更具有灵活性,系统能快能慢。AT89C51芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。

③ AT89C51引脚功能

AT89C51单片机40引脚分布如右图所示。

AT89C51是一种低损耗、高性能、CMOS八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数据保存时间为十年。它与MCA-51系列单片机在指令系统和引脚上完全兼容,不仅可完全代替MCS-51系列单片机,而且能使系统具有许多MCS-51系列产品没有的功能。

AT89C51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。只要程序长度小于4K,四个I/O口全部提供给用户。可用5V电压编程,而且擦写时间仅需10毫秒,仅为8751/87C51的擦除时间的百分之一,与8751/87C51的12V电压擦写相比,不易损坏器件,没有两种电源的要求,改写时不拔下芯片,适合许多嵌入式控制领域。工作电压范围宽(2.7V~6V),

- 11 -

全静态工作,工作频率宽在0Hz~24MHz之间,比8751/87C51等51系列的6MHz~12MHz更具有灵活性,系统能快能慢。AT89C51芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。

(3)DS18B20的工作原理

① DS18B20数字温度传感器概述

DS18B20数字温度传感器是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。

DS18B20产品的特点

只要求一个端口即可实现通信。

在DS18B20中的每个器件上都有独一无二的序列号。 实际应用中不需要外部任何元器件即可实现测温。 测量温度范围在-55.C到+125.C之间。

数字温度计的分辨率用户可以从9位到12位选择。 内部有温度上、下限告警设置。

TO-92封装的DS18B20的引脚排列见右图,其引脚功能描述见表

- 12 -

表2 P3口的第二功能

序号 1 2 名称 GND DQ 引脚功能描述 地信号 数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源 3 VDD 可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地 表3-2 DS18B20详细引脚功能描述

② DS18B20的内部结构

DS18B20的内部框图下图所示。64位ROM存储器件独一无二的序列号。暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。暂存器还提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。暂存器的5、6和7字节器件内部保留使用。第八字节含有循环冗余码(CRC )。使用寄生电源时,DS18B20不需额外的供电电源;当总线为高电平时,功率由单总线上的上拉电阻通过DQ引脚提供;高电平总线信号同时也向内部电容CPP充电,CPP在总线低电平时为器件供电。

(4)DS18B20的4个主要数据部件:

①光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

②DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16

- 13 -

位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。

表3-4DS18B20温度数据表

TEMPERATURE +125℃ +85℃ +25.0625℃ +10.125℃ +0.5℃ 0℃ -0.5℃ -10.125℃ -25.0625℃ -55℃ DIGITAL OUTPUT 0000 0111 1101 0000 0000 0101 0101 0000 0000 0001 1001 0001 0000 0000 1010 0010 0000 0000 0000 1000 0000 0000 0000 0000 1111 1111 1111 1000 1111 1111 0101 1110 1111 1110 0110 1111 1111 1100 1001 0000 DIGITAL OUTPUT 07D0H 0550H 0191H 00A2H 0008H 0000H FFF8H FF5EH FE6FH FC90H ③DS18B20温度传感器的存储器 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。

④配置寄存器

表3-5 配置寄存器

0 R1 R0 1 1 1 1 1 低五位一直都是\,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)

- 14 -

表3-6R1与R0确定传感器分辨率设置表

R1 0 0 1 1 R0 0 1 0 1 传感器精度/bit 9 10 11 12 转换时间/ms 93.75 187.5 375 750

(5)DS18B20的工作过程 初始化

ROM命令跟随着需要交换的数据; 功能命令跟随着需要交换的数据。

访问DS18B20必须严格遵守这一命令序列,如果丢失任何一步或序列混乱,DS18B20都不会响应主机(除了Search ROM 和Alarm Search这两个命令,在这两个命令后,主机都必须返回到第一步)。

a.初始化:

DS18B20所有的数据交换都由一个初始化序列开始。由主机发出的复位脉冲和跟在其后的由DS18B20发出的应答脉冲构成。当DS18B20发出响应主机的应答脉冲时,即向主机表明它已处在总线上并且准备工作。

b. ROM命令:

ROM命令通过每个器件64-bit的ROM码,使主机指定某一特定器件(如果有多个器件挂在总线上)与之进行通信。DS18B20的ROM如表3-4所示,每个ROM命令都是8 bit长。

c. 功能命令:

主机通过功能命令对DS18B20进行读/写Scratchpad存储器,或者启动温度转换。DS18B20的功能命令如表3-7所示。

表3-7

指令 读ROM 符合ROM 搜索ROM

协议 33H 55H 0F0H 功能 读DS18B20中的编码(即64位地址) 发出此命令后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20,使之作出响应,为下一步对该DS18B20的读写作准备 用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,- 15 -

为操作各器件作好准备 跳过ROM 0CCH 忽略64位ROM地址,直接向DS18B20V 温度转换命令,适用于单个DS18B20工作 执行后,只有温度超过庙宇值上限或下限的片子才做出响应 启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果丰入内部9字节RAM中 读暂存器 写暂存器 复制暂存器 重调EPROM 读供电方式 2报警搜索命令 0ECH 温度转换 44H BEH 4EH 48H 0B8H 0B4H 读内部RAM中9字节的内容 发出向内部RAM的第3、4字节写上、下温度数据命令,紧该温度命令之后,传达两字节的数据 将RAM中第3、4字内容复制到E2PROM中 将EPROM中内容恢复到RAM中的第3、4字节 读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外部供电时DS18B20发送“1” 2 (6)DS18B20的信号方式

DS18B20采用严格的单总线通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲、应答脉冲、写0、写1、读0和读1。除了应答脉冲所有这些信号都由主机发出同步信号。总线上传输的所有数据和命令都是以字节的低位在前。

a.初始化序列:复位脉冲和应答脉冲

在初始化过程中,主机通过拉低单总线至少480μs,以产生复位脉冲(TX)。然后主机释放总线并进入接收(RX)模式。当总线被释放后,5kΩ的上拉电阻将单总线拉高。DS18B20检测到这个上升沿后,延时15μs~60μs,通过拉低总线60μs~240μs产生应答脉冲。初始化波形如图3-8所示。

3-8 初始化脉冲

b.读和写时序

在写时序期间,主机向DS18B20写入指令;而在读时序期间,主机读入来自DS18B20的指令。在每一个时序,总线只能传输一位数据。读/写时序如图3-9所示。

写时序

- 16 -

存在两种写时序:“写1”和“写0”。主机在写1时序向DS18B20写入逻辑1,而在写0时序向DS18B20写入逻辑0。所有写时序至少需要60μs,且在两次写时序之间至少需要1μs的恢复时间。两种写时序均以主机拉低总线开始。

产生写1时序:主机拉低总线后,必须在15μs内释放总线,然后由上拉电阻将总线拉至高电平。产生写0时序:主机拉低总线后,必须在整个时序期间保持低电平(至少60μs)。

在写时序开始后的15μs~60μs期间,DS18B20采样总线的状态。如果总线为高电平,则逻辑1被写入DS18B20;如果总线为低电平,则逻辑0被写入DS18B20。

读时序

图3-9DS18B20读/写时序图

DS18B20只能在主机发出读时序时才能向主机传送数据。所以主机在发出读数据命令后,必须马上产生读时序,以便DS18B20能够传送数据。所有读时序至少60μs,且在两次独立的读时序之间至少需要1μs的恢复时间。

每次读时序由主机发起,拉低总线至少1μs。在主机发起读时序之后,

- 17 -

DS18B20开始在总线上传送1或0。若DS18B20发送1,则保持总线为高电平;若发送0,则拉低总线。当传送0时,DS18B20在该时序结束时释放总线,再由上拉电阻将总线拉回空闲高电平状态。DS18B20发出的数据在读时序下降沿起始后的15μs内有效,因此主机必须在读时序开始后的15μs内释放总线,并且采样总线状态。

DS18B20 在使用时,一般都采用单片机来实现数据采集。只需将DS18B20 信号线与单片机1 位I/O线相连,且单片机的1 位I/O 线可挂接多个DS18B20 ,就可实现单点或多点温度检测。

(7)DS18B20的温度计算

DS18B20允许通过程序对传感器的分辨率,温度报警的上、下限等参数进行配置。它的内部存储器包括一个高速暂存存储器和一个非易失性可擦除E2PROM。速暂存存储器共有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 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内的上下限值相比较,如果测温结果高于TH或低于TL,DS18B20内部的告警标志就会被置位,表示温值超出了测量范围。并且该值在掉电后不会丢失,而是记忆其设定的上下限值。第5字节是配置寄存器,如表2.3所示,该寄存器用于对温度转换值的分辨率进行设置。其中,最高位用于设置传感器是工作模式还是测试模式,是生产厂家为便于检验使用。其出厂时的默认值为0,为工作模式(即用户使用时的模式)。并且在用户使用中,该位总是保持为0。R1与R0确定传感器的分辨率,如表2.4所示,DS18B20有4种分辨率可供选择。

- 18 -

使用时可以根据实际需要来设置,出厂时的默认设置是12位。最后5位总保持1 3.2.2键盘电路设计

根据设计任务书中要求实现的功能,我选择了4X4=16个键盘的矩阵键盘来设置温度的上、下限值,此键盘设计符合系统设置要求,所以我选择此键盘完成本设计。

①矩阵键盘结构:

键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。矩阵键盘又称行列式键盘,这种行列式键盘结构能够有效的提高单片机系统中I/O口的利用率。它的结构和产生的波形如图3-11所示。

图3-11键盘结构及产生的波形图

②矩阵键盘工作原理:

在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图3-12所示。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键来连通。利用这种行列矩阵结构只需N条行线和M条列线,即可组成具有N*M个按键的键盘。这样,一个端口就可以构成4X4=16个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,图3-12中,行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。

- 19 -

图3-12 键盘电路原理图

③键盘按键的判断:

上面是一个4x4的键盘,公用4+4=8条接口线,如果按下键8,则第一行的线与第一列的线接通,当前第一行如果是低电平则第一列也输出低电平,而其他没有的列输出为高电平,根据行列线的电平,就可以判断按下的键的行位置。

a)判断有无键按下。

b)去除键的机械抖动。方法是判别到有键按下,延时10ms在读,如仍有键按下,再确定为键按下,否则为抖动。

c)判别按下键的键号。

d)CPU对键的一次闭合只作一次处理。方法是等键释放后再把键值作有效处理。

列扫描法识别键号的工作原理如下:

将第0列变为低电平,其余列为高电平,输出编码为1110。然后读取行的电平,辨别第0列是否有键按下。在第0列上若有某一个按键按下,则相应的行被拉到低电平,则表示第0列和此行相交的位置上有键按下。若没有任一条行线为低电平,则说明列上无键按下。

将第1列变为低电平,其余列为高电平,输出编码为本1101。然后通过输入口读取各行的电平。检测其中是否有变为低电平的行线。若有键按下,则进而辨别哪一行有键按下,确定按键位置。

将第2列变为低电平,其余列为低电时平,输出编码为本1011。辨别是否有哪一行按键按下的方法同上。

将第3列边为第电平,其余列为低电平时,输出编码为本0111。辨别是否有哪一行按键按下的方法同上。

- 20 -

3.2.3显示电路设计

①温度显示工作原理:

LCD1602可以采用两种方式与单片机连接,一种是采用8位数据总线D0—D7,和RS、R/W、EN三个控制端口;另一种是只用D4-D7作为四位数据分两次传送。本实验将使用并采用八位数据方式来控制1602显示,如图3-13所示:

图3-13 AT89C51与LCD1602接口电路图

进行LCD设计主要是LCD的控制/驱动和外界的接口设计。控制主要是通过接口与外界通信、管理内/外显示RAM,控制驱动器,分配显示数据;驱动主要是根据控制器要求,驱动LCD进行显示。控制器还常含有内部ASCII字符库,或可外扩的大容量汉字库。

AT89C51的P3.7与LCD1602的使能端E相连,P3.6与读写选择端R/W相连,P3.5与RS相连,当使能端使能时,再通过命令选择端来控制读数据,写数据,写命令。控制P2端口与LCD1602A的数据端口相连,传输数据。

②LCD1602的性能参数

LCD1602A的管脚排列如图3-14、,它共有16个脚,各引脚功能如下: VSS: 电源地 VDD:电源正极

VL:液晶显示偏压信号,对比度调整端, 接地时最高,接正电源最低,可接10K 电位器调整

RS: 寄存器选择,高电平选择数据寄存器

低电平选择指令寄存器 图3-14 LCD1602A的管脚 R/W 读/写选择端,高电平读操作,低电平写操作

- 21 -

E使能信号,当E端由高电平跳变成低电平时,液晶模块执行命令 BLA背光源正极图 BLK背光源负极 D0~D7数据端口

芯片的主要技术参数及应用配置:

显示容量: 芯片工作电压: 工作电流: 模块最佳工作电压: 字符尺寸: 16×2个字符 4.5~5.5V 2.0mA(5.0V) 5.0V 2.95×4.35(WXH)mm

表3-15LCD1602A主要技术参数

表指令码 1 0 0 0 功能 设置16*2显示,5*7点阵, 8位数据接口 LC0 0 1 1 D 1602A显示模式

指令码 功能 D=1开显示 D=0 关显示 B C=1 显示光标C=0 不显示光标 B=1 光标闪烁B=0 光标不闪烁 N=1 当读/写一个字符后,地址指针加1,且光标加1; N=0 当读/写一个字符后,地址指针减1,0 0 0 0 1 D C 0 0 0 0 0 1 N S 且光标减1; S=1 当写一个字符,整屏显示左移(N=1)或者右移(N=0),以得到光标不移动而整屏移动的效果; S=0 当写一个字符,整屏显示不移动。

表3-17 LCD1602A显示开/关及光标设置

编号 1 2

符号 VSS VDD - 22 -

引脚说明 电源地 电源正极 3 4 5 6 7 8 9 10 11 12 13 14 15 16 VL RS R/W E D0 D1 D2 D3 D4 D5 D6 D7 BLA BLK 液晶显示偏压信号, 数据/命令选择端(H/L) 读/写选择端(H/L) 使能信号 Data I/O Data I/O Data I/O Data I/O Data I/O Data I/O Data I/O Data I/O 背光源正 背光源负 表3-18 LCD1602A接口信号说明

③LCD1602的显示与控制命令

1602液晶模块内部的字符发生内存(CGROM)已经存储了160个不同的点阵字符图形,如下图所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

1602液晶模块内部的控制器共有11条控制指令,如表2所示,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)

指令1:清显示,指令码01H,光标复位到地址00H位置; 指令2:光标复位,光标返回到地址00H;

指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效;

指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有游标,低电平表示无游标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁;

指令5:光标或显示移位元S/C:高电平时移动显示的文字,低电平时移动光标;

指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高

- 23 -

电平时显示5x10的点阵字符;

指令7:字符发生器RAM地址设置; 指令8:DDRAM地址设置;

指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙;

指令10:写数据; 指令11:读数据;

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。 3.2.4 报警电路设计

电路板上的550(Q1)三极管驱动一个无源蜂鸣器,构成一个简单的音响电路,该电路利用单片机的一个引脚作为驱动来源,经Q1驱动后发声,这一引脚是P1.1脚。由于采用了无源蜂鸣器,所以P1.1输出低电平时,蜂鸣器不会发声,需要输出一个脉冲信号蜂鸣器才会发声,脉冲信号的频率决定了蜂鸣器发出的声音的音调的高低。电路如图3-19所示:

3-19 报警电路

第4章 系统软件设计

4.1 软件设计总体思路及主程序流程图

本系统采用C语言编写,主程序主要由四部分构成,系统通电后首先初始化系统,依次完成温度采集、温度处理、数据显示、键盘处理等四项功能。温度采集部分主要完成4个温度测试点的温度数据采集任务;温度处理部分主要是将采

- 24 -

集到的温度数据与用户设定的各点上下限温度值进行比较处理,并判断是否超出设定的上下限值,如果超出则蜂鸣器报警;数据显示部分主要实现温度数据的显示,显示方式根据设计要求支持1到4个温度测试点的轮流循环显示和固定显示两种方式;键盘处理部分主要实现用户对系统参数的设置,结合显示部分,实现用户与系统之间的人机接口。系统软件主流程如图4-1所示:

4.2 测温模块流程图 开始 系统初始化 温度采集 温度处理 数据显示 键盘处理

4-1 系统软件总流程图

- 25 -

读温度 初始化温度传感器 扫描键盘选定所需芯片 选定所需芯片 进行温度转换 读取温度 调试显示子程序 子程序返回

图4-2 DSl8B20操作流程图

4.2.1 温度的采集

每一片DSl8B20在其ROM中都存有其唯一的48位序列号,在出厂前已写入片内ROM中,主机在进入操作程序前必须逐一接入DSl8B20,用读ROM(33H)命令

- 26 -

将该DSl8B20的序列号读出并登录。当主机需要对众多在线DSl8B20的某一个进行操作时首先要发出匹配ROM命令(55H),紧接着主机提供64位序列(包括该DSl8B20的48位序列号)之后的操作就是针对该DSl8B20的,而所谓跳过ROM命令即为之后的操作,是对所有DSl8B20的框图中先有跳过ROM即是启动所有DSl8B20进行温度变换之后通过匹配ROM再逐一地读回每个DSl8B20的温度数据在DSl8B20组成的测温系统中主机在发出跳过ROM命令之后再发出统一的温度转换启动码44H就可以实现所有DSl8B20的统一转换再经过1s后就可以用很少的时间去逐一读取这种方式,使其T值往往小于传统方式。由于采取公用的放大电路和A/D转换器只能逐一转换,显然通道数越多这种省时效应就越明显。 4.2.2 多点温度的测量

单总线 已经挂接了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步,直到所有的DS18B20测量处理完。 (9)再重复第1步到第8步,进行下一轮的巡回测量。

如果只对某一个DS18B20进行温度测量,只要将第1步跳过ROM命令CCH,改为匹配ROM命令55H,将拨动开关拨到和要测量的DS18B20的编号相对应的数值上,单片机读取拨动开关的数值(编号)n,到AT89C51建立的关系表中从(n -1)×8开始的单元取出ROM代码发送到总线,去掉第8步,其余和上面步骤相似即可。测试中,DS18B20选择芯片出厂时默认的12位转换精度,转换的结果用16位符号扩展的二进制补码读数形式提供。

- 27 -

初始化 设置18B20个数 跳过ROM 符合ROM 等待1S 读存储器 初始化 缓冲指针增一 初始化 否 B-1=0? 是

图4-3 多路温度测量电路流程图

4.3 显示模块流程图

开始 初始化LCD1602 写显示地址 写显示字符 子程序返回 图4-4 LCD1602A操作流程图

4.4 键盘扫描流程图

按键处理程序通过扫描按键情况,读取键值。主要完成各点温度传感器上下限报警参数设置和显示模式设置。

- 28 -

(1)通过扫描键盘读取键值,流程图如图4-5所示:

键盘扫描 N 有键闭合 Y 延时去键抖动扫描键盘 N 找到闭合键 Y 计算键值 N Y 闭合键释放 建立无效标志 建立有效标志 返回

图4-5 键盘扫描程序流程图

(2)设置报警上、下限值

DS18B20设有温度上下限报警功能。DSl8B20的存储器由两部分组成:一个是9字节的静态RAM,其中第0和第1字节用于存储16位的温度转换值,第2(高温限TH)和第3字节(低温限TL)作为温度报警限值或通用存储器单元供用户使用;另一个是非易失性的E2PROM。当静态RAM作为温度报警限值使用时,可以在系统安装和工作前,用写RAM命令4EH将高温限TH和低温限TL写入第2和第3字节单元。由于静态RAM掉电后信息即丢失,因此需要再通过拷贝RAM命令48H将第2和第3字节单元的温度报警限值拷贝到E2PROM中。主程序只要在初始化部分使用重调E2PROM命令B8H,就可以将E2PROM中的温度报警限值重新拷贝到静态RAM中。

- 29 -

第5章 元器件安装及调试

5.1元器件安装

(1)在安装元件前要先认识和检测元件,一些常见元件的认识与检测如下:

① 电容:电容在这里用到的是瓷片电容和电解电容,其外围上面都有标记,我们只需检测其好坏。在利用万用表检测时要注意如果为电解电容红表笔应接负极,黑表笔接正极。对于2200pF以下的电容用万用表R×10kΩ或R×100kΩ测量,2200pF以上可以用R×1kΩ或R×100kΩ档测量。档次调整好了和表笔接好后,观察万用表指针是否较大的偏转,然后由最大的偏转慢慢的减小至最小值(或零),如果是上述情况则证明该电容有充、放电的功能,为好电容。如果发现万用表指针不偏转说明该电容开路。当万用表指针偏转至最大(阻值为零)说明该电容已击穿。

② 色环电阻:我们在此使用的是五个色环标志的电阻。此类电阻前三环表示有效数字,第四环表示倍率,与前四环距离较大的第五环表示允许偏差。

③ 二极管:在此装置中要用到发光二极管,对于发光二极管一般引脚长的那端为正极,引脚短的那端为负极。这是粟老师教给我的简便方法。

④ 三极管:在此装置中,我们用到8550型号三极管,在使用三极管前我们首先要确定它的c、e和b极。用万用表检测三极管的极性时,首先确定基极b:用万用表R×1KΩ或R×10KΩ档,然后用黑(红)表笔任意测量两极直到指针有较大摆动为止,把黑(红)表笔固定,用另一只表笔红(黑)表笔测量另一极,直至指针仍有较大的摆动,这时可确定固定的表笔为b同时根据表笔的颜色可以知道NPN(PNP)型。其次对c和e极的判断为:假设某极为c极,然后用黑表笔点住集电极c,红表笔点e。在用手捏住c和b极,观察指针摆动度。然后对换表笔,重复前面操作,观察指针摆动度。比较摆动度较小的那表笔为集电极c,剩下的为e。在此过程中,我总是不能一下子就能分别出它的三个极,要经过反复的测量,才确定它的三个极。

认识了元器件后,下面介绍安装时应遵循一些基本的要求与原则: (2)安装元件时的基本要求:

① 保证导通与绝缘的电气特性,电气连接的通与断是安装的核心这里所说的通与断,不仅是安装后简单的使用万用表测试的结果,而且要考虑在振动,长期工作,湿度等自然条件变化的环境中,都能保证通者恒通,断者恒断。

- 30 -

VCCTEMPR14.7kU1J4J5TEMP1SPK2345P156P167P178P10P11P12P13P14P15P16P17AT89S51/C51INT1/P33INT0/P32T1/P35T0/P34EA/VPX1X2RESETP00P01P02P03P04P05P06P07LED213FS12C233PWRRSVCC3115143938373635343332L0L1L2L3H0H1H2H3X2XTAL1C111.0592M33PP20P21P22P23P24P25P26P27LCD16022122232425262728D0D1D2D3D4D5D6D7R2GND1VCC2VL3RS4WR510EKN6D07D18D29VCCD310D411D512R3D61310D714BIA1516GNDVCCVLRSR/WED0D1D2D3D4D5D6D7BLABLKR4LED1RSTLED2RD/P37WR/P36ENRD1716910LED1113029VCCR8SPKL1C3100UF/16VRET1R6200C4R710uF10KRSTSPKVCCVCC4.7KLS1X1X219181GND2VCC3VL4WR5RD6EN7RS8VCC9D010D111D212D313D414D515D616D717FS18GND19BIA20FGGNDVCCVLCDWRRDCECDRSTDB0DB1DB2DB3DB4DB5DB6DB7FSBLKBLA12864R52.2kRXD/P30TXD/P31ALE/PPSENQ18550C5104VCCC6104C7104

J1

J3

P17GNDP16VCCRST32118B2012345678P159GND10X1ISPJ2

附录一

- 36 -

VCCLED1L0L1L2L3H0H1H2H387654321LED22.2kKEYJ6123300MAF1POWER附录二

Part Type Designator Footprint

2.2k 2.2k 4.7K 4.7k 10 10K 10K 10uF 11.0592M 18B20 33P 33P 100UF/16V R5 R4 R8 R1 R3 R7 R2 C4 XTAL1 J3 C1 C2 C3 - 37 -

AXIAL0.3

AXIAL0.3

AXIAL0.3

AXIAL0.3

AXIAL0.3

AXIAL0.3

RP

EC2\\5

CRY

CZ4\\1\\3

CC2.5

CC2.5

EC5\\8

104 104 104 200 300MA 8031AH 8550 12864 ISP KEY LCD1602 POWER SPK SW-PB C6 C7 C5 R6 F1 U1 Q1 J5 J1 J2 J4 J6 LS1 RET1 - 38 -

CC2.5

CC2.5

CC2.5

AXIAL0.3

AXIAL0.3

DIP40

8550

SIP-20

PIN10

SIP8

SIP16

POWER SOC3

SPK

4\\WD

本文来源:https://www.bwwdw.com/article/dju7.html

Top