【优秀毕业设计】基于AT89C51单片机的多点温度检测系统的设计

上传人:仙*** 文档编号:28269131 上传时间:2021-08-24 格式:DOC 页数:70 大小:1.18MB
返回 下载 相关 举报
【优秀毕业设计】基于AT89C51单片机的多点温度检测系统的设计_第1页
第1页 / 共70页
【优秀毕业设计】基于AT89C51单片机的多点温度检测系统的设计_第2页
第2页 / 共70页
【优秀毕业设计】基于AT89C51单片机的多点温度检测系统的设计_第3页
第3页 / 共70页
点击查看更多>>
资源描述
南 京 理 工 大 学 毕业设计说明书(论文) 作 者 : 孙露 学 号: 104910252060 教 研 室 : 机电教研室 专 业 : 机电一体化工程 题 目 : 多点温度检测系统的设计 指导者: 谢聪 工程师 评阅者: 2012 年 5 月 中 文 摘 要 本设计系统地介绍了基于 DS18B20 的多点温度测量系统的组成、设计方案、 电路原理、程序设计以及系统仿真过程。DS18B20 多点温度测量系统是以 AT89C51 单片机作为控制核心,智能温度传感 DS18B20 为控制对象,运用汇编 语言编程实现系统的各种功能。 该系统由单片机最小系统、传感器电路、报警电路、LCD 显示电路、行列 式键盘电路、电源电路六大部分组成。借助 PROTEUS 软件,实现了系统电路设 计和仿真。它适用于电力工业、煤矿、森林、火灾、高层建筑等场所,还可以 用于环境恶劣的工业控制现场。通过 DS18B20 的单总线技术,实现对远程环境 的温度测量与监控。 关键词 DS18B20, 仿真, 测量系统, PROTEUS 英 文 摘 要 Title MULTI-POINT TEMPERATURE DETECTION SYSTEM DESIGN Abstract This system introduced on the DS18B20 multi-point temperature measurement system components, design, circuit theory, program design and product development process. DS18B20 multi-point temperature measurement system is controlled by the core AT89C51 SCM , smart temperature sensing DS18B20 targets for the control, and is used of Edit collected materials language programming system functions. The system is the smallest MCU system, sensor circuit, alarm circuits, LCD display circuit, the five major determinant keyboard circuit components. The system is constituted from PROTEUS software, and the system design and simulation, and the eventual adoption of hardware verification six big part. It is applicable to electric power industry, coal mine, forest, a fire, key figures building etc. place, return can used for environment bad of industry control the spot. DS18B20 through a single bus technology, to achieve the long-range environmental temperature measurement and monitoring. Key words DS18B20, simulation, measurement system,PROTEUS 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 I 页 共 II 页 目 录 1 绪论 .1 1.1 课题设计背景 .1 1.2 课题研究的目的意义 .1 1.3 国内外现状及水平 .2 1.4 课题研究内容 .2 2 系统的需求分析与总体方案论证 .4 2.1 基于模拟温度传感器设计方案 .4 2.2 基于数字温度传感器设计方案 .5 2.3 方案论证 .5 3 电路设计 .7 3.1 工作原理 .7 3.2 DS18B20 与单片机接口技术 .8 3.2.1 DS18B20 的引脚功能 .8 3.2.2 DS18B20 与单片机接口电路 .8 3.2.3 温度寄存器格式和温度/数据对应关系 .9 3.2.4 单片机对 DS18B20 的控制方法 .10 3.3 键盘电路设计 .13 3.3.1 行列式键盘与单片机接口电路 .13 3.3.2 键盘面板 .13 3.4 显示电路设计 .14 3.4.1 LCD 引脚分布及功能 .14 3.4.2 单片机与图形液晶的接口电路 .15 3.5 报警电路设计 .16 3.6 电源电路设计 .17 4 程序设计 .18 4.1 系统资源分配 .18 4.1.1 系统硬件资源分配 .18 4.1.2 系统软件资源分配 .18 4.2 系统流程设计 .18 4.2.1 主程序流程设计 .18 4.2.2 DS18B20 程序流程设计 .20 4.2.3 显示程序流程 .21 4.2.4 键盘程序程序流程 .22 4.3 程序设计 .24 4.3.1 主程序设计 .24 5 系统仿真 .25 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 II 页 共 II 页 5.1 PROTEUS 仿真环境介绍 .25 5.2 原理图绘制 .26 5.3 程序加载 .27 5.3.1 程序编译 .27 5.3.2 程序加载 .27 5.4 系统仿真 .28 5.5 仿真结果分析 .33 结束语 .34 致 谢 .35 参考文献 .36 附录一 .38 附录二 .39 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 1 页 共 61 页 1 绪论 1.1 课题设计背景 温度是一个和人们生活环境有着密切关系的物理量,也是一种在生产、科研、 生活中需要测量和控制的重要物理量,是国际单位制七个基本量之一,同时它也是 一种最基本的环境参数。人民的生活与环境温度息息相关,物理、化学、生物等学 科都离不开温度。在工业生产和实验研究中,在电力、化工、石油、冶金、机械制 造、大型仓储室、实验室、农场塑料大棚甚至人们的居室里经常需要对环境温度进 行检测,并根据实际的要求对环境温度进行控制。比如,发电厂锅炉的温度必须控 制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行。 炼油过程中,原油必须在不同的温度和压力条件下进行分流才能得到汽油、柴油、 煤油等产品;没有合适的温度环境,许多电子设备不能正常工作,粮仓的储粮就会 变质霉烂,酒类的品质就没有保障。可见,研究温度的测量具有重要的理论意义和 推广价值。 随着现代计算机和自动化技术的发展,作为各种信息的感知、采集、转换、传 输相处理的功能器件,温度传感器的作用日益突出,成为自动检测、自动控制系统 和计量测试中不可缺少的重要技术工具,其应用已遍及工农业生产和日常生活的各 个领域。本设计就是为了满足人们在生活生产中对温度测量系统方面的需求。 本设计要求系统测量的温度的点数为 4 个,测量精度为 0.1,测温范围为 -55+128。采用液晶显示温度值和路数,显示格式为:温度的符号位,整数部分,小 数部分,最后一位显示。显示数据每一秒刷新一次。 1.2 课题研究的目的意义 21 世纪科学技术的发展日新月异,科技的进步带动了测量技术的发展,现代控 制设备的性能和结构发生了巨大的变化,我们已经进入了高速发展的信息时代,测 量技术也成为当今科技的主流之一,被广泛地应用于生产的各个领域。对于本次设 计,其目的在于: (1)掌握数字温度传感器 DS18B20 的原理、性能、使用特点和方法,利用 C51 对系统进行编程。 (2)本课题综合了现代测控、电子信息、计算机技术专业领域方方面面的知识, 具有综合性、科学性、代表性,可全面检验和促进学生的理论素养和工作能力。 (3) 本课题的研究可以使学生更好地掌握基于单片机应用系统的分析与设计 方法,培养创新意识、协作精神和理论联系实际的学风,提高电子产品研发素质、 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 2 页 共 61 页 增强针对实际应用进行控制系统设计制作的能力。 1.3 国内外现状及水平 传感器属于信息技术的前沿尖端产品,尤其是温度传感器被广泛用于工农业生 产、科学研究和生活等领域,数量高居各种传感器之首。温度传感器的发展大致经 历了以下三个阶段:传统的分立式温度传感器(含敏感元件);模拟集成温度传感器 控制器;数字温度传感器。目前,国际上新型温度传感器正从模拟式向数字式、由 集成化向智能化、网络化的方向发展,同时具有抑制串模干扰能力强、分辨力高、 线性度好、成本低等优点。随着我国四个现代化和经济发展,我国在科技和生产各 领域都取得了飞速的发展和进步,发展以温度传感器为载体的温度测量技术具有重 大意义。 DS18B20 是美国 DALLAS 公司生产的单总线数字温度传感器,可把温度信号直接 转换成串行数字信号供微机处理,而且可以在一条总线上挂接任意多个 DS18B20 芯片,构 成多点温度检测系统无需任何外加硬件(单总线数字温度传感器 DS18B20 及其在 单片机系统的应用 ) 。 单总线数字温度传感器,具有微型化、低功耗、高性能、抗干扰能力强、易于与 微控制器接口优点,适合于各种温度测控系统(数字温度传感器 DS18B20 及其应用 ) 。以 DS18B20 为例,介绍数字式温度传感器的功能特点及由 DS18B20 组成的温度测 控网络系统的设计。 随着社会的发展、农业生产也进人了工厂化、数字化时代,人们开始“使用人工 设施、人工控制环境因素,使植物获得最适宜的生长条件,从而延长生产季节,获得最 佳产出”,由此“工厂化农业”应运而生并被广泛接受(单总线温度传感器 DS18B20 及其在温室系统中的应用 ) 。 我国是一个人口众多的农业大国 ,粮食生产、需求与储备量很大 ,粮食在储备 的过程中常因粮食的湿度过大而升温发热 ,又由于检测手段的落后造成温检系统错 报或漏报 ,从而导致粮食大量的腐烂变质 ,给国家带来巨大的损失。这就对粮情检 测系统提出了较高的要求( 一种基于单线数字温度传感器 DS18B20 的储粮温度检 测系统的设计 ) 。而基于 DS18B20 设计的温度检测系统就可以实现这一需求。 1.4 课题研究内容 本设计研究的主要内容如下: (1)在广泛查阅温度检测控制理论和方法、测温技术和温度控制技术等资料的 基础上,根据不同的控制要求及应用领域完成对系统方案的总体设计。本设计采用 以 AT89C51 为核心的单片机系统,来实现对温度的检测、报警等功能。 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 3 页 共 61 页 (2)研究比较各相关元器件的功能与特点,选择合适的元器件。 (3)系统硬件设计。系统硬件设计主要包括:温度检测、单片机数据采集处理、 显示、键盘设定、报警电路等部分。 (4)系统软件设计。本课题采用汇编语言,利用 Keil 编译器进行编程及调试。 主要研究 DS18B20 与单片机的通信协议、时序及一些通用程序等。 本设计的难点分为硬件和软件两个方面。其中硬件开发的难点在于各种元器件 的选择和使用,如各种电阻、电容等的选择。软件开发的难点在于 DS18B20 的时序, 如果时序不正确,将无法读出正确的温度值,对系统产生很大的影响。 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 4 页 共 61 页 2 系统的需求分析与总体方案论证 2.1 基于模拟温度传感器设计方案 该方案由单片机、模拟温度传感器 AD590、运算放大器、AD 转换器、44 键盘、LCD 显示电路、集成功率放大器、报警器组成,如图 2.1 所示。 本方案采用模拟温度传感器 AD590 作为测温元件,传感器将测量的温度变 换转换成电流的变化,再通过电路转换成电压的变化,使用运算放大器交将信 号进行适当的放大,最后通过模数转换器将模拟信号转换成数字信号,传给给 单片机,单片机将温度值进行处理之后用 LCD 显示 ,当温度值超过设置值时, 系统开始报警。 单片机 模拟温度传感器 模拟温度传感器 L C D 显示电路 集 成 功 放 报 警 器 4 4 键盘 模拟传感器 A D 5 9 0 模拟温度传感器 模拟温度传感器 运 算 放 大 器 多 路 选 择 器 A / D 转 换 图 2.1 基于模拟温度传感器的测量系统方案 本方案使用的测温元件的性能指标如下: (1)AD590 的测温范围为55+150。 (2)AD590 的电源电压范围为 4V30V,电源电压可在 4V6V 范围变化, 电流 变化 1mA,相当于温度变化 1K。AD590 可以承受 44V 正向电压和 20V 反向 电压,因而器件反接也不会被损坏。 (3)输出电阻为 710MW。 (4)精度高,AD590 共有 I、J、K、L、M 五档,其中 M 档精度最高,在 55+150范围内,非线性误差为0.3。 集成温度传感器具有线性好、精度适中、灵敏度高、体积小、使用方便, 温度测量范围广等优点,得到广泛应用。集成温度传感器的输出形式分为电压 输出和电流输出两种。电压输出型的灵敏度一般为 10mV/K,温度 0时输出为 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 5 页 共 61 页 0,温度 25时输出 2.982V。电流输出型的灵敏度一般为 1mA/K。 2.2 基于数字温度传感器设计方案 该方案使用了 AT89C51 单片机作为控制核心,以智能温度传感器 DS18B20 为 温度测量元件,采用多个温度传感器对各点温度进行检测,通过 44 键盘模块 对正常温度进行设置显示电路采用 12864 LCD 模块,使用 LM386 作为报警电 路中的功率放大器。 图 2.2 基于数字温度传感器测量系统方案 本课题采用数字温度传感器 DS18B20 作为测为测温元件,它具有如下特点: (1)只要求一个端口即可实现通信。 (2)在 DS18B20 中的每个器件上都有独一无二的序列号。 (3)实际应用中不需要外部任何元器件即可实现测温。 (4)测量温度范围在55到128之间。 (5)数字温度计的分辨率用户可以从 9 位到 12 位选择。 (6)内部有温度上、下限告警设置。 2.3 方案论证 本设计要求测量的点数为 4,测温范围为-55+128,精度为 0.1。 采用液晶显示,同时显示路数和温度,每秒刷新 1 次显示数据。 综合模拟温度传感器和数字温度传感器的性能指标,以上两个方案都能达 到设计的要求。 方案一采用模拟温度传感器 AD590,转换结果需要经过运算放大器和 AD 转 换器传送给处理器。它控制虽然简单,成本低,但是后续电路复杂,且需要进 单片机温 度 传 感 器温 度 传 感 器 LCD显 示 电 路集成功放 报警器4键 盘温 度 传 感 器DS18B20温 度 传 感 器温 度 传 感 器 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 6 页 共 61 页 行温度标定,集成温度传感器 AD590 输出为电流信号,且输出信号较弱,所以需 要后续放大及 A/D 转换电路,如采用普通运放则精度难以保证,而测量放大器 价格较高,这样会使系统成本升高。 方案二采用了数字温度传感器 DS18B20,改变了传统温度测试方法。它能 在现场采集温度数据,直接将温度物理量变换为数字信号并以总线方式传送到 单片机进行数据处理,并且可根据实际要求通过简单的编程实现 9-12 位的数字 式读数方式,因而使用 DS18B20 可使系统结构更趋简单,可靠性更高,大大提 高系统的抗干扰能力。DS18B20 体积小、经济、使用方便灵活,测试精度高, 较高的性能价格比,有 CRC 校验,系统简明直观。适合于恶劣环境的现场温度 测试,如:环境控制、设备或过程控制、测温类消费电子产品等。 方案二程序设计稍微复杂一些,但在毕业设计期间我用 DS18B20 做过温度 计,也调试过 LCD,并且已经用 PROTEUS 实现了系统的仿真。因此,该方案完 全具有可行性,同时体现了技术的先进性,经济上也有很大的优势。 综上所述,本课题采用方案二对系统进行设计。 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 7 页 共 61 页 3 电路设计 3.1 工作原理 基于 DS18B20 多点温度测量系统以 AT89C51 为核心器件,以 KEIL 为系统开 发平台,用汇编语言进行程序设计,以 PROTEUS 作为仿真软件设计而成的。系 统主要由传感器电路、液晶显示电路、键盘电路、报警电路、电源电路组成, 系统原理图如图 3.1 所示。 图 3.1 系统原理图 DS18B20 是数字温度传感器,它的输入/输出采用数字量,以单总线技术, 接收主机发送的命令,根据 DS18B20 内部的协议进行相应的处理,将转换的温 度以串口发送给主机。主机按照通信协议用一个 IO 口模拟 DS18B20 的时序,发 送命令(初始化命令、ROM 命令、RAM 命令)给 DS18B20,转换完成之后读取温 度值,在内部进行相应的数值处理,用图形液晶模块显示各点的温度。在系统 启动之时,可以通过 44 键盘设置各点温度的上限值,当某点温度超过设置值 时,报警器开始报警,液晶显示该传感器的路数、设置温度值、实际温度值, 从而实现了对各点温度的实时监控。 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 8 页 共 61 页 每个 DS18B20 有自己的序列号,因此本系统可以在一根总线上挂接了 4 个 DS18B20,通过 CRC 校验,对各个 DS18B20 的 ROM 进行寻址,地址符合的 DS18B20 才作出响应,接收主机的命令,向主机发送转换的温度。采用这种 DS18B20 寻址技术,使系统硬件电路更加简单。 3.2 DS18B20 与单片机接口技术 3.2.1 DS18B20 的引脚功能 DS18B20 的引脚功能描述见表 3.1。 表 3.1DS18B20 引脚功能描述 序号 名称 引脚功能描述 1 GND 地信号 2 DQ 数字输入输出引脚,开漏单总线接口引脚,当使用寄生 电源时,可向电源提供电源 3 VDD 可选择的 VDD 引脚,当工作于寄生电源时,该引脚必须 接地 3.2.2 DS18B20 与单片机接口电路 如图 3.2 所示,为单片机与 DS18B20 的接口电路。DS18B20 只有三个引脚, 一个接地,一个接电源,一个数字输入输出引脚接单片机的 P1.7 口,电源与数 字输入输出脚间需要接一个 4.7K 的电阻。 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 9 页 共 61 页 图 3.2 DS18B20 与单片机接口电路 3.2.3 温度寄存器格式和温度/数据对应关系 DS18B20 温度寄存器如表 3.2 所示。其寄存器有 16 位,高 5 位为符号位,低 13 位为数据位。当寄存器高 5 位为 1 时,表示温度为负,否则为正。 表 3.2 温度寄存器格式 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 LS Byte 表 3.3 温度/数据的关系 B bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 MS Byte 如果测得的温度大于 0,只要将测到的数值乘于 0.0625 即可得到实际温度; 如果温度小于 0,测得的数值需要取反加 1 再乘 0.0625,即可得到实际的温度 值。如表 3.3 所示,是 DS18B20 的温度与数据的对应关系。 23 22 21 20 2-1 2-2 2-3 2-4 S S S S S 26 25 24 DS18B20 单 片 机P1.7VDGNQ4.7K 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 10 页 共 61 页 3.2.4 单片机对 DS18B20 的控制方法 DS18B20 采用严格的单总线通信协议,以保证数据的完整性。该协议定义 了 几种信号类型:复位脉冲、应答脉冲、写 0、写 1、读 0 和读 1。除了应答脉冲 所有 这些信号都由主机发出同步信号。总线上传输的所有数据和命令都是以字 节为单位。且低位在前,高位在后。 (1)初始化序列:复位脉冲和应答脉冲 在初始化过程中,主机通过拉低单总线至少 480s,以产生复位脉冲(TX), 然 后主机释放总线并进入接收(RX)模式。当总线被释放后,5k 的上拉电阻将单 总线拉高。DS18B20 检测到这个上升沿后,延时 15s60s,通过拉低总线 60s240s 产生应答脉冲。初始化脉冲如图 3.3 所示。 温度 输出(2 进制) 输出(16 进制) +125 0000 0111 1101 0000 07D0H +85 0000 0101 0101 0000 0550H +20.0625 0000 0001 1001 0001 0191H +10.125 0000 0000 1010 0010 00A2H +0.5 0000 0000 0000 1000 0008H 0 0000 0000 0000 0000 0000H -0.5 1111 1111 1111 1000 FFF8H -10.125 1111 1111 0101 1110 FF5EH 25.0625 1110 1110 0110 1111 EE6FH -55 1111 1110 1001 0000 FE90H 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 11 页 共 61 页 图 3.3 DS18B20 初始化时序 (2)DS18B20 的读写控制 在写时序期间,主机向 DS18B20 写入数据;而在读时序期间,主机读入来自 DS18B20 的数据。在每一个时序,总线只能传输一位数据。读/写时序如图 3.4 所示。 DS18B20 写时序 DS18B20 存在两种写时序:“写 1”和“写 0”。主机在写 1 时序向 DS18B20 图 3.4 DS18B20 读写时序 写入逻辑 1,而在写 0 时序向 DS18B20 写入逻辑 0。所有写时序至少需要 60s,且在两次写时序之间至少需要 1s 的恢复时间。两种写时序均以主机拉 低总线开始。 产生写 1 时序:主机拉低总线后,必须在 15s 内释放总线,然后由上拉电 阻将总线拉至高电平。产生写 0 时序:主机拉低总线后,必须在整个时序期间 至 少 480us 至 少 480us主 机 初 始 化 主 机 初 应 答Presnce pulse60-24 主 机 写 ”0时 序 主 机 写 ”1时 序 主 机 读 ”0时 序 主 机 读 ”1时 序30us15us15us 15us15us30us30us15us15us 15us15us30us 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 12 页 共 61 页 保持低电平(至少 60s) 。 在写时序开始后的 15s60s 期间,DS18B20 采样总线的状态。如果总线 为高电平,则逻辑 1 被写入 DS18B20;如果总线为低电平,则逻辑 0 被写入 DS18B20。 读时序 DS18B20 只能在主机发出读时序时才能向主机传送数据。所以主机在发出 读数据命令后,必须马上产生读时序,以便 DS18B20 能够传送数据。所有读时 序至少 60s,且在两次独立的读时序之间至少需要 1s 的恢复时间。 每次读时序由主机发起,拉低总线至少 1s。在主机发起读时序之后, DS18B20 开始在总线上传送 1 或 0。若 DS18B20 发送 1,则保持总线为高电平; 若发送 0,则拉低总线。当传送 0 时,DS18B20 在该时序结束时释放总线,再由 上拉电阻将总线拉回空闲高电平状态。DS18B20 发出的数据在读时序下降沿起 始后的 15s 内有效,因此主机必须在读时序开始后的 15s 内释放总线,并且 采样总线状态。 DS18B20 的命令序列 根据 DS18B20 的通讯协议,主机(单片机)控制 DS18B20 完成温度转换必 须经过三个步骤:每一次读写之前都要对 DS18B20 进行复位操作,复位成功后 发送一条 ROM 指令,最后发送 RAM 指令,这样才能对 DS18B20 进行预定的操作。 ROM 命令通过每个器件 64-bit 的 ROM 码,使主机指定某一特定器件(如果 有多个器件挂在总线上)与之进行通信。DS18B20 的 ROM 如表 3.4 所示,每个 ROM 命令都是 8 bit 长。 表 3.4 DS18B20 ROM 命令 指令 协议 功能 读 ROM 33H 读 DS18B20 中的编码(即 64 位地址) 符合 ROM 55H 发出此命令后,接着发出 64 位 ROM 编码,访问单总线上 与该编码相对应的 DS18B20,使之作出响应,为下一步对 该 DS18B20 的读写作准备 搜索 ROM 0F0H 用于确定挂接在同一总线上 DS18B20 的个数和识别 64 位 ROM 地址,为操作各器件作好准备 跳过 ROM 0CCH 忽略 64 位 ROM 地址,直接向 DS18B20 温度转换命令,适 用于单个 DS18B20 工作 告警搜索命 令 0ECH 执行后,只有温度超过庙宇值上限或下限的片子才做出响 应 温度转换 44H 启动 DS18B20 进行温度转换,转换时间最长为 500ms(典 型为 200ms),结果丰入内部 9 字节 RAM 中 读暂存器 BEH 读内部 RAM 中 9 字节的内容 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 13 页 共 61 页 写暂存器 4EH 发出向内部 RAM 的第 3、4 字节写上、下温度数据命令, 紧该温度命令之后,传达两字节的数据 复制暂存 器 48H 将 RAM 中第 3、4 字内容复制到 E2PROM 中 重调 E2PROM 0B8H 将 E2PROM 中内容恢复到 RAM 中的第 3、4 字节 读供电方式 0B4H 读 DS18B20 的供电模式,寄生供电时 DS18B20 发送“0” , 外部供电时 DS18B20 发送“1” 3.3 键盘电路设计 3.3.1 行列式键盘与单片机接口电路 根据本设计需要,本系统采用了 44 键盘实现对温度值和功能键的设定。 行列式键盘与单片机的接口电路如图 3.5 所示,H0-H3 为行线,接单片机 P2 口的高 4 位,L0-L3 为列线,接单片机 P2 口的低 4 位。初始化时键盘行线为 高电 平,列线为低电平。键盘的行线接 4 输入与门,4 输入与门的输出接单片机的 外部中断 0 引脚 P3.2 口。当有键按下时,将产生中断,在中断程序里对按键进 行 扫描,得到按键的键值。 图 3.5 44 键盘结构 3.3.2 键盘面板 键盘面板如图 3.6 所示,本系统使用的键盘有 10 数字键,5 个功能按键。 在系统启动时,先按“设置”键,然后按相应的数字键,按“左移”或者“右 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 14 页 共 61 页 移”键改变其他温度的值。按“确认”键之后系统正式启动。系统在运行过程 之中可以通过按“重新设置”键,对温度重新进行设置。 图 3.6 键盘面板 3.4 显示电路设计 3.4.1 LCD 引脚分布及功能 (1) 12864 液晶显示屏共有 20 个引脚,其引脚名称及引脚编号的对应关 系如图 3.7 所示: 图 3.7 12864 液晶显示模块引脚分布图 123456789101213145161781920VSDVORS/WEDB0 DB7DB6DB5DB4DB3DB2DB1 CS1CS2/RTVEAK 0 21 3设 置 确 认 右 移左 移 重 新设 置98 7645 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 15 页 共 61 页 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 16 页 共 61 页 (2)引脚功能如表 3.5 所示: 表 3.5 12864 液晶显示模块引脚功能 引脚 符 号 引 脚 功 能 引脚 符 号 引 脚 功 能 1 VSS 电源地 15 CS1 CS1=1 芯片选择左边 64*64点 2 VDD 电源正+5V 16 CS2 CS2=1 芯片选择右边 64*64点 3 VO 液晶显示驱动电源 17 /RST 复位(低电平有效) 4 RS H:数据输入;L:指令码输入 18 VEE LCD 驱动负电源 5 R/W H:数据读取;L:数据写入 19 A 背光电源(+) 6 E 使能信号。 20 K 背光电源(-) 7-14 DB0-DB7 数据线 有些型号的模块 19、20 脚为空脚 3.4.2 单片机与图形液晶的接口电路 LCD 与单片机的接口电路如图 3.8 所示: 单片机对 LCD 的控制方法将在下一章中详细介绍。 图 3.8 LCD 与单片机的接口电路 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 17 页 共 61 页 3.5 报警电路设计 本系统设计中有报警器,使用 LM386 作为报警器的功率放大器,如图 3.9 所示。 LM386 是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电 压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之 中。 LM386 的输入端接单片机的引脚 P3.4,输出端接扬声器。当实际温度超过 设置的温度值时,单片机引脚输出一定频率的信号,信号经过音频功放放大之 后,发出报警声。 图 3.9 LM386 功放电路 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 18 页 共 61 页 3.6 电源电路设计 电源是整个系统的能量来源,它直接关系到系统能否运行。在本系统中单 片机、液晶显示、报警等电路需要 5V 的电源,因此电路中选用稳压芯片 7805,其最大输出电流为 1.5A,能够满足系统的要求,其电路如图 3.10 所示。 图 3.10 电源电路 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 19 页 共 61 页 4 程序设计 4.1 系统资源分配 4.1.1 系统硬件资源分配 本系统电路连接及硬件资源分配如图 4.1 所示。采用 AT89C51 单片机作为 核心器件,DS18B20 作为温度测量装置,通过 AT89C51 的 P1.7 口将温度值送入 单片机处理,利用 12864LCD 显示器和 44 键盘作为人机接口。 图 4.1 系统硬件资源分配 4.1.2 系统软件资源分配 本系统采用了汇编语言进行程序设计,系统自动为各个变量分配内存区域。 用户可以将变量定义在 data 区、IDATA 区、PDATA 区、XDATA 区,常量定义在 CODE 区。 4.2 系统流程设计 4.2.1 主程序流程设计 主程序先对系统资源进行初始化,调用 LCD 显示子程序,显示启动画面。然 后进入键盘设置界面。当设置键按下后,开始设置各点的温度,设置完之后, 如果确认键按下,则系统开始工作。首先调用 DS18B20 初始化子程序,再发送 ROM 命令,读取 DS18B20 转换的温度值。当读取的温度大于设置的温度值时,报 警器开始报警,LCD 显示温度的实际值、设置值、路数、状态。接下来对第二、 三、四路温度进行采集,处理,显示。 P0. P0.7 12864LCD显 示 模 块P3.4P3. 报 警 器P3.5 .734键 盘 P2.0 P2.3P2.4 P2.744L0 3H0 3 P3.2/INT0A89C1 P1.7四 输 入 与 门DS18B20 3.0 3.12 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 20 页 共 61 页 主程序流程如图 4.2 所示: 图 4.2 主程序流程 初 始 化设 置 键 按 下 ?设 置 各 点 温 度 确 认 键 按 下 ?YN 读 取 温 度 值温 度 值 高 于 设 置 值 调 用 LCD显 示报 警 YN 初 始 化 命 令发 送 ROM命 令匹 配 第 一 路 读 取 温 度 值温 度 值 高 于 设 置 值 调 用 LCD显 示报 警 YN 初 始 化 命 令发 送 ROM命 令匹 配 第 二 路 读 取 温 度 值温 度 值 高 于 设 置 值 调 用 LCD显 示报 警 YN 初 始 化 命 令发 送 ROM命 令匹 配 第 三 路 读 取 温 度 值温 度 值 高 于 设 置 值 调 用 LCD显 示报 警 YN 初 始 化 命 令发 送 ROM命 令匹 配 第 四 路 开 始 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 21 页 共 61 页 4.2.2 DS18B20 程序流程设计 由上一章单片机对 DS18B20 的控制方法,设计出如下程序流程: 图 4.3 写命令子程序流程图 图 4.4 DS18B20 复位子程序流程 图 图 4.5 DS18B20 读温度子程序流程图 DQ置 1置 0延 时 573微 秒DQ置 1 延 时 , 等 待 DS18B20响 应DQ=0?初 始 化 成 功 返 回 DQ初 始 化 不 成 功YNi=8置 DQ0=AT处理后的八位符号值温度度存放单元 TEMPL DATA 25H ;实时温度低八位存放单元 TEMPH DATA 26H ;实时温度高八位存放单元 TEMP_TH DATA 27H ;高温报警值存放单元 TEMP_TL DATA 28H ;低温报警值存放单元 TEMPHC DATA 29H ;百位和十位 BCD 码存放单元 TEMPLC DATA 2AH ;个位和小数 BCD 码存放单元 LCD_X EQU 2FH ;LCD 地址变量 LCD_RS EQU P1.0 ;LCD RS 端 LCD_RW EQU P1.1 ;LCD RW 端 LCD_EN EQU P1.2 ;LCD EN 端 FLAG1 EQU 20H.0 ;DS18B20 存在标志位 FLAG2 EQU 20H.2 ;负数标志位 FLAG3 EQU 20H.3 ;负数时,十位为零(灭 0 显示标志位) FLAG4 EQU 20H.4 ;正数时,百位为零、十位也为零(灭 0 显 示标志位) FLAG5 EQU 20H.1 ;负温度下限标志位 FLAG6 EQU 21H.0 ;按键 1 操作标志位 FLAG7 EQU 21H.1 ;按键 2 操作标志位 FLAG8 EQU 21H.2 ;按键 3 操作标志位 FLAG9 EQU 21H.3 ;按键 4 操作标志位 DATE_LINE EQU P3.7 ;DS18B20 总线 ;* ORG 0000H JMP MAIN MAIN: MOV SP,#60H MOV A,#00H 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 42 页 共 61 页 MOV R0,#20H ;将 20H-2FH 单元清零 MOV R1,#10H CLEAR: MOV R0,A INC R0 DJNZ R1,CLEAR CALL SET_LCD CALL RE_18B20 MOV TEMP_TH,#50H ;设置温度上限报警值为 80 度 MOV TEMP_TL,#14H ;设置温度下限报警值为 20 度 SETB FLAG5 ;FLAG5=0 正温度下限,FLAG5=1 负温度下限 START: CALL RESET ;18B20 复位子程序 JNB FLAG1,START1 ;DS1820 不存在 CALL MENU_OK CALL READ_E2 ;温度报警值拷贝到暂存器 JMP START2 START1: CALL MENU_ERROR CALL TEMP_BJ ;显示温度标记 JMP $ START2: CALL RESET JNB FLAG1,START1 ;DS1820 不存在 MOV A,#0CCH ; 跳过 ROM 匹配 CALL WRITE MOV A,#44H ; 发出温度转换命令 CALL WRITE ;* ;由单片机向单总线发送四个 DS18B20 的 ROM 序列号 CALL DELAY 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 43 页 共 61 页 LCALL RESET MOV A,#55H LCALL WRITE MOV A,#28H LCALL WRITE MOV A,#24H LCALL WRITE MOV A,#0C5H LCALL WRITE MOV A,#39H LCALL WRITE MOV A,#00H LCALL WRITE MOV A,#00H LCALL WRITE MOV A,#00H LCALL WRITE MOV A,#05FH LCALL WRITE MOV A,#0BEH LCALL WRITE LCALL READ MOV 74H,TEMPL MOV 75H,TEMPH LCALL RESET MOV A,#55H LCALL WRITE MOV A,#28H LCALL WRITE MOV A,#30H LCALL WRITE 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 44 页 共 61 页 MOV A,#0C5H LCALL WRITE MOV A,#0B8H LCALL WRITE MOV A,#00H LCALL WRITE MOV A,#00H LCALL WRITE MOV A,#00H LCALL WRITE MOV A,#08EH LCALL WRITE MOV A,#0BEH LCALL WRITE LCALL READ MOV 76H,TEMPL MOV 77H,TEMPH LCALL RESET MOV A,#55H LCALL WRITE MOV A,#28H LCALL WRITE MOV A,#31H LCALL WRITE MOV A,#0C5H LCALL WRITE MOV A,#0B8H LCALL WRITE MOV A,#00H LCALL WRITE MOV A,#00H 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 45 页 共 61 页 LCALL WRITE MOV A,#00H LCALL WRITE MOV A,#0B9H LCALL WRITE MOV A,#0BEH LCALL WRITE LCALL READ MOV 78H,TEMPL MOV 79H,TEMPH LCALL RESET MOV A,#55H LCALL WRITE MOV A,#28H LCALL WRITE MOV A,#32H LCALL WRITE MOV A,#0C5H LCALL WRITE MOV A,#0B8H LCALL WRITE MOV A,#00H LCALL WRITE MOV A,#00H LCALL WRITE MOV A,#00H LCALL WRITE MOV A,#0E0H LCALL WRITE MOV A,#0BEH LCALL WRITE 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 46 页 共 61 页 LCALL READ MOV 7AH,TEMPL MOV 7BH,TEMPH LCALL RESET ;* ;2*2 键盘 ;* SMKEY: MOV P2,#030H MOV A,P2 ANL A,#0F0H CJNE A,#030H,HKEY SJMP J_00 HKEY: CALL CLR_2LINE ;先对 LCD 第二行进行清屏 LCALL DELAY10 MOV A,P2 ANL A,#0F0H MOV B,A CJNE A,#030H,WKEY SJMP J_00 WKEY: MOV P2,#03H MOV A,P2 ANL A,#0FH ORL A,B JB ACC.0,BANWE4 JMP BANWE5 BANWE4: JB ACC.4,XUANZE4 JMP XUANZE3 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 47 页 共 61 页 BANWE5: JB ACC.5, XUANZE1 JMP XUANZE2 ;* JMP J_00 XUANZE1: SETB FLAG6 CLR FLAG7 CLR FLAG8 CLR FLAG9 JMP J_00 XUANZE2: SETB FLAG7 CLR FLAG6 CLR FLAG8 CLR FLAG9 JMP J_00 XUANZE3: SETB FLAG8 CLR FLAG7 CLR FLAG6 CLR FLAG9 JMP J_00 XUANZE4: SETB FLAG9 CLR FLAG7 CLR FLAG8 CLR FLAG6 J_00:NOP JB FLAG6 ,TEMPH11 JB FLAG7 ,TEMPH22 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 48 页 共 61 页 JB FLAG8 ,TEMPH33 JB FLAG9 ,TEMPH44 JMP ST_00 ;* TEMPH11: MOV DPTR,#T_1 ;指针指到显示消息“TEMP :” MOV A,#2 ;显示在第二行 CALL LCD_PRINT ;调字符串显示子程序 MOV TEMPL,74H ;把从 DS18B20 读出的初始温度低八位送 TEMPL MOV TEMPH,75H ;把从 DS18B20 读出的初始温度高八位送 TEMPH LCALL START3 ;调温度转换、显示子程序 JMP ST_00 ;回到 START2,重新发出温度转换命令 TEMPH22: MOV DPTR,#T_2 ;指针指到显示消息“TEMP :” MOV A,#2 ;显示在第二行 CALL LCD_PRINT MOV TEMPL,76H MOV TEMPH,77H LCALL START3 JMP ST_00 TEMPH33: MOV DPTR,#T_3 ;指针指到显示消息“TEMP :” MOV A,#2 ;显示在第二行 CALL LCD_PRINT MOV TEMPL,78H MOV TEMPH,79H LCALL START3 JMP ST_00 TEMPH44: MOV DPTR,#T_4 ;指针指到显示消息“TEMP :” 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 49 页 共 61 页 MOV A,#2 ;显示在第二行 CALL LCD_PRINT MOV TEMPL,7AH MOV TEMPH,7BH LCALL START3 JMP ST_00 ST_00: JMP START2 ;* START3: CALL CONVTEMP ;把从 DS18B20 读到的初始温度转换组合成两 个字节的 BCD 码 CALL DISPBCD ;把温度折分成单个 BCD 码并设灭零显示标志位 CALL TEMP_COMP ;显示温度比较结果符号 CALL TEMP_BJ ;显示温度标记 CALL LCD_DISP ;显示温度百位、十位、个位、小数点及小数位 还有符号 RET ;*; SET_LCD: ;对 LCD 做初始化设置及测试 CLR LCD_EN CALL INIT_LCD ;初始化 LCD CALL STORE_DATA ;将自定义字符存入 LCD 的 CGRAM RET INIT_LCD: ;8 位 I/O 控制 LCD 接口初始化 MOV A,#38H ;双列显示,字形 5*7 点阵 CALL WCOM CALL DELAY1 MOV A,#0EH CALL WCOM CALL DELAY1 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 50 页 共 61 页 MOV A,#38H ;双列显示,字形 5*7 点阵 CALL WCOM CALL DELAY1 MOV A,#0CH ;开显示,显示光标,光标不闪烁 CALL WCOM CALL DELAY1 MOV A,#01H ;清除 LCD 显示屏 CALL WCOM CALL DELAY1 RET ;* WCOM: ;以 8 位控制方式将命令写至 LCD MOV P0,A ;写入命令 CLR LCD_RS ;RS=L,RW=L,D0-D7=指令码,E= 高脉冲 CLR LCD_RW SETB LCD_EN ACALL DELAY1 CLR LCD_EN RET ;* WDATA: ;以 8 位控制方式将数据写至 LCD MOV P0,A ;写入数据 SETB LCD_RS CLR LCD_RW SETB LCD_EN CALL DE CLR LCD_EN CALL DE RET DE: MOV R7,#250 DJNZ R7,$ 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 51 页 共 61 页 RET ;* DELAY: MOV R0,#100 DEL2:MOV R1,#100 DEL3:DJNZ R1,DEL3 DJNZ R0,DEL2 RET DELAY10: MOV R6,#20H Q6:MOV R5,#0BBH Q5:DJNZ R5,Q5 DJNZ R6,Q6 RET DELAY1: ;延时 5MS MOV R6,#25 DL2:MOV R7,#100 DJNZ R7,$ DJNZ R6,DL2 RET ;* STORE_DATA: MOV A,#40H CALL WCOM MOV R2,#08H MOV DPTR,#D_DATA MOV R3,#00H S_DATA: MOV A,R3 MOVC A,A+DPTR CALL WDATA ;写入数据 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 52 页 共 61 页 INC R3 DJNZ R2,S_DATA RET ;* D_DATA: DB 0CH,12H,12H,0CH,00H,00H,00H,00H ;* RE_18B20: JB FLAG1,RE_18B20A RET RE_18B20A: CALL RESET MOV A,#0CCH ;跳过 ROM 匹配 LCALL WRITE MOV A,#4EH ;写暂存寄存器 LCALL WRITE MOV A,TEMP_TH ;TH(报警上限) LCALL WRITE MOV A,TEMP_TL ;TL(报警下限) LCALL WRITE MOV A,#7FH ;12 位精确度 LCALL WRITE RET RESET: SETB DATE_LINE NOP CLR DATE_LINE MOV R0,#6BH ;主机发出延时复位低脉冲 MOV R1,#04H TSR1:DJNZ R0,$ MOV R0,#6BH 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 53 页 共 61 页 DJNZ R1,TSR1 SETB DATE_LINE ;然后拉高数据线 NOP NOP NOP MOV R0,#32H TSR2:JNB DATE_LINE,TSR3 ;等待 DS18B20 回应 DJNZ R0,TSR2 JMP TSR4 ; 延时 TSR3:SETB FLAG1 ; 置标志位,表示 DS1820 存在 JMP TSR5 TSR4:CLR FLAG1 ; 清标志位,表示 DS1820 不存在 JMP TSR7 TSR5:MOV R0,#06BH TSR6:DJNZ R0,$ ; 时序要求延时一段时间 TSR7:SETB DATE_LINE RET ;* WRITE: MOV R2,#8 ;一共 8 位数据 CLR C WR1: CLR DATE_LINE ;开始写入 DS18B20 总线要处于复位(低)状 态 MOV R3,#07 DJ
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!