1、1 题目:基于 AT89S52 和 DS18B20 的数字温度计设计 一 、设计要求 数字式温度计要求测温范围为 55 125C,精度误差在 0.5C 以内,液晶显示。 二 、方案确定 根据系统的设计要求,选择 DS18B20 作为本系统的温度传感器,选择单片机 AT89S52 为测控系统的核心来完成数据采集、处理、显示功能。选用数字温度传感器 DS18B20,省却了采样 /保持电路、运放、数 /模转换电路以及进行长距离传输时的串 /并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。 该系统的总体设计思路如下:温度 传感器 DS18B20 把所测得的温度信号发送到 AT89S
2、52 单片机上,经过单片机处理,然后在 1602LCD 上进行显示。 其 温度测量及显示电路 原理图如下: 1212MHzXTAL100pFC1100pFC222uFC31KR1S1SW-PBGND1VCC2VO3RS4RW5E6DB07DB18DB29DB310DB411DB512DB613DB714BG VCC15BG GND16LCD 1602LCD1602EA/VPP31XTAL119XTAL218RST/VPD9P3.7/RD17P3.6/WR16P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P1.0/T1P1.1/T2P1.23P1.34P1.45
3、P1.56P1.67P1.78P0.039P0.138P0.237P0.336P0.435P0.534P0.633P0.732P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/PROG30P3.1/TXD11P3.0/RXD10Vcc40Gnd20AT89S5XAT89S52P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7+5R?10KP2.0P2.1P2.2+50.01uFC4+5123DS18B20CON3GNDDQVDD+5VR24.7K2 220V 转 5V 电路原理图如下: 1 32V VGNDINOU
4、TU?78L05ACV+ACV-1N4007X4+C?1000uF/25V+C?220uF/25VC?104C?104D?1N4007LEDR?470GNDVCCT?CTX0.33-1A220V 7.5VS?SW-SPST123456GND 扩展CON61234+5V 扩展CON42.1 元器件的介绍 2.1.1 单片机的选择 AT89S52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单
5、芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52 单片机结构见图 2.1: EA/VPP31XTAL119XTAL218RST/VPD9P3.7/RD17P3.6/WR16P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P1.0/T1P1.1/T2P1.23P1.34P1.45P1.56P1.67P1.78P0.039P0.138P0.237P0.336P0.435P0.534P0.633P0.732P2.021P2.122P2.223P2.324P2.42
6、5P2.526P2.627P2.728PSEN29ALE/PROG30P3.1/TXD11P3.0/RXD10Vcc40Gnd20AT89S5XAT89S52图 2.1 AT89S52结构图 2.2.2 传感器的选择 DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智3 能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现 9 12 位的数字值读数方式。 DS18B20 内部结构主要由四部分组成: 64 位光刻 ROM、温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器。 DS18B20 的管脚排列、
7、各种封装形式, DQ 为 数据输入 /输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源 ; GND 为 地信号 ; VDD 为 可选择的 VDD 引脚。当工作于寄生电源时,此引脚必须接地。 2.2.3 LCD 的选择 此设计中采用 1602LCD 对温度进行显示。 图 2.2 1602LCD实物 示意图 2.2 温度检测电路 DS18B20 最大的特点是单总线数据传输方式, DS18B20 的数据 I/O 均由同一条线来完成。 DS18B20 的电源供电方式有 2 种 : 外 部供电方式和寄生电源方式。工作于寄生电源方式时 , VDD 和 GND 均接地 , 他在需要远
8、程温度探测和空4 间受限的场合特别有用 , 原理是当 1 W ire 总线的信号线 DQ 为高电平时 , 窃取信号能量给 DS18B20 供电 , 同时一部分能量给内部电容充电 , 当 DQ 为低电平时释放能量为 DS18B20 供电。但寄生电源方式需要强上拉电路 , 软件控制变得复杂 (特别是在完成温度转换和拷贝数据到 E2PROM 时 ) , 同时芯片的性能也有所降低。因此 , 在条件允许的场合 , 尽量采用外供电方式。 无论是内部寄生电源还是外部供电, I/O 口线要接 5K左右的上拉电。 外部电源供电方式是 DS18B20 最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单
9、,可以开发出稳定可靠的多点温度监控系统。在开发中使用外部电源供电方式,毕竟比寄生电源方式只多接一根 VCC 引线。在外接电源方式下,可以充分发挥 DS18B20 宽电源电压范围的优点,即使电源电压 VCC 降到 3V 时,依然能够保证温度量精度。 由于 DS18B20 只有一根数据线,因此它和主机(单片机)通信是需要串行通信,而 AT89S51 有两个串行端口,所以可以不用软件来模拟实现。经过单 线接口访问 DC18B20 必须遵循如下协议:初始化、 ROM 操作命令、存储器操作命令和控制操作。要使传感器工作,一切处理均严格按照时序。 三 、软件设计 3.1 概述 整个系统的功能是由硬件电路配
10、合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件是一个小的功能执行模块。这里将各执行模块一一 列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。 5 3.2 程序模块 主程序需要调用 2 子程序,各模块程序功能如下
11、: LCD 显示程序:向 LCD 的显示送数,控制系统的显示部分。 温度测试及处理程序:对温度芯片送过来的数据进行处理和显示。 主程序流程见图 3.1。 调 用 读 温 度 子 程 序调 用 温 度 转 换 子 程 序调 用 显 示 温 度 程 序开 始开始S52寄存器初始化DS18B20存在?温度转换读温度温度数据处理显示否是图 3.1 主程序流程图 图 3.2 DS18B20 初始化流程 3.3 各模块流程设计 下面对主要子程序的流程图做介绍 。 3.3.1 温度检测流程 DS18B20在单片机控制下分三个阶段 : 18B20 初始化:初始化流程图见 图 3.2; 读 18B20时序:读
12、DS18B20流程见图 3.3; 写 18B20时序:写 DS18B20流程见图 3.4; 6 图 3.3 读 18B20 流程图 图 3.4 写 18B20 流程图 3.3.2 液晶显示的设置 显示模式 的 设置 : 写入指令码 WriteInstruction(0x38),设置功能 16*2显示,5*7点阵, 8位数据接口 ; 显示 /开关及光标设置 : 写入指令码 WriteInstruction (0x0c),设置开显示,不显示光标,光标不闪烁; 写入指令码 WriteInstruction(0x06), 设置:光标右移,字符不移 ; 写入指令码 WriteInstruction(0x
13、01), 清屏幕指令,将以前的显示内容清除 ; 写入指令码函数 WriteInstruction( ), 写指令过程 :输入 : RS=0, D0-D7=指令码, E=高脉冲 ; 写入数据函数 WriteData( ), 写指令过程 :输入: RS=1,D0-D7=数据, E=高脉冲 ; 数据指针设置 : 指令码 80H+地址码( 0-27H)显示第一行的字符 , 指令码 80H+地址码( 40H-67H)显示的第二行字符 。 7 四、硬件的调试 完成的硬件焊接电路 见附录。 在硬件调试过程中,出现了 许多问题。 在设计电源电路中使用了整流桥进行整流,但是在硬件焊接完毕后,测得的输出电压不正常
14、。后来利用四个二极管搭建 一个整流桥接入电路,输出的电压就正常。此外,电路中使用了 78L05 稳压管将从整流桥出来的电压稳在 5V,可是 78L05 输出的电压不是 5V,因此自己加了了 1K 的可调电阻将输出的电压进行转换来给单片机供电。 在 焊接外围电路( 1602LCD 显示电路和 18B20 数字测温电路)之前,通过在单片的 P2.7 口接入一个发光二极管,来调试单片机的最小系统是否能正常工作。单片机中烧入的程序来控制 LED 的亮和灭。一步调试很成功。 接下来自己将外围电路焊接进去,可是 1602LCD 不显示。经过自己对各个接口端功能的认真分析,发现自己将背光电压调的太高导致 1
15、602LCD 亮度太高 ,所以显示的字 符看不见,就误认成电路连接有误。在调低背光电压后,正常显示。 最后出现的问题是在一切正常的情况下 1602LCD 上显示的是没有找到DS18B20 传感器,请检查电路。经过认真仔细检查电路后,没有发现任何错误。硬件检查没问题,只能是软件程序编写有错,经过认真查看所编程序,发现里面对 DS18B20 的信号输入接口设置错了。改正后,重新编译烧进单片机,电源打开后,能正常显示温度了。 经过以上过程,自己设计的电路达到了开始设想的功能,课程设计圆满结束。 8 总结和体会 本设计利用 AT89S52 芯片控制温度传感器 DS18B20,再辅之以部分外围电路实现对
16、环境温度的测控,性能稳定,精度教高,而且扩展性能很强大。由于DS18B20的测量精度只有 0.5 度,往往很多场合需要更加精确的温度,在所测温度精度不变的基础上必须对数据进行校正。由于 DS18B20 是基于带隙结构的数字式温度传感器, PN 结增量电压正比于 IC 绝对温度( PTAT),它的测温精度较高 ,但存在着一定的误差 .不过 ,其误差在时间和外部环境变化的条件下 ,保持相当高的稳定性。它充分利用监控计算机的处理能力,在监控计算机上用线性插补的数学方法对其进行误差校正补偿,能轻易地 将其提高其精度。 在本次设计的过程中,我发现很多的问题,这次设计真的让我长进了很多,单片机 C语言 课
17、程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,这一次,我全部用的都是 16 进制的数直接加减,感觉效果比较好,有好多的东西,只有我们去试着做了,才能真正的掌握 。9 五、 元件清单(名称、型号、数量) 元件名称 型号 数量 单片机芯片 AT89S52 1 温度传感器 DS18B20 1 晶振 12MHz 1 220V 转 7.5V 变压器 1 电容 100pF 2 22uF、 0.01uF 各 1 104 2 1000uF/25V 1 220uF/25V LCD 1602 1 电阻 1K、 4.7K 各 1 10K 2 470 1 万能板 1 IC 插座 1 导线 若干 稳压块 78L05 1 发光二极管 1 二极管 IN4007 5 开关 1 10 附录:
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。