您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于AT89S52和DS18B20的数字温度计设计
1题目:基于AT89S52和DS18B20的数字温度计设计一、设计要求数字式温度计要求测温范围为-55~125°C,精度误差在±0.5°C以内,液晶显示。二、方案确定根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89S52为测控系统的核心来完成数据采集、处理、显示功能。选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度信号发送到AT89S52单片机上,经过单片机处理,然后在1602LCD上进行显示。其温度测量及显示电路原理图如下:1212MHzXTAL100pFC1100pFC222uFC31KR1S1SW-PBGND1VCC2VO3RS4RW5E6DB07DB18DB29DB310DB411DB512DB613DB714BGVCC15BGGND16LCD1602LCD1602EA/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.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.7K2220V转5V电路原理图如下:132VVGNDINOUTU?78L05ACV+ACV-1N4007X4+C?1000uF/25V+C?220uF/25VC?104C?104D?1N4007LEDR?470GNDVCCT?CTX0.33-1A220V7.5VS?SW-SPST123456GND扩展CON61234+5V扩展CON42.1元器件的介绍2.1.1单片机的选择AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的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.425P2.526P2.627P2.728PSEN29ALE/PROG30P3.1/TXD11P3.0/RXD10Vcc40Gnd20AT89S5XAT89S52图2.1AT89S52结构图2.2.2传感器的选择DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智3能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式,DQ为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。2.2.3LCD的选择此设计中采用1602LCD对温度进行显示。图2.21602LCD实物示意图2.2温度检测电路DS18B20最大的特点是单总线数据传输方式,DS18B20的数据I/O均由同一条线来完成。DS18B20的电源供电方式有2种:外部供电方式和寄生电源方式。工作于寄生电源方式时,VDD和GND均接地,他在需要远程温度探测和空4间受限的场合特别有用,原理是当1Wire总线的信号线DQ为高电平时,窃取信号能量给DS18B20供电,同时一部分能量给内部电容充电,当DQ为低电平时释放能量为DS18B20供电。但寄生电源方式需要强上拉电路,软件控制变得复杂(特别是在完成温度转换和拷贝数据到E2PROM时),同时芯片的性能也有所降低。因此,在条件允许的场合,尽量采用外供电方式。无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电。外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。在开发中使用外部电源供电方式,毕竟比寄生电源方式只多接一根VCC引线。在外接电源方式下,可以充分发挥DS18B20宽电源电压范围的优点,即使电源电压VCC降到3V时,依然能够保证温度量精度。由于DS18B20只有一根数据线,因此它和主机(单片机)通信是需要串行通信,而AT89S51有两个串行端口,所以可以不用软件来模拟实现。经过单线接口访问DC18B20必须遵循如下协议:初始化、ROM操作命令、存储器操作命令和控制操作。要使传感器工作,一切处理均严格按照时序。三、软件设计3.1概述整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。53.2程序模块主程序需要调用2子程序,各模块程序功能如下:●LCD显示程序:向LCD的显示送数,控制系统的显示部分。●温度测试及处理程序:对温度芯片送过来的数据进行处理和显示。主程序流程见图3.1。调用读温度子程序调用温度转换子程序调用显示温度程序开始开始S52寄存器初始化DS18B20存在?温度转换读温度温度数据处理温度显示否是图3.1主程序流程图图3.2DS18B20初始化流程3.3各模块流程设计下面对主要子程序的流程图做介绍。3.3.1温度检测流程DS18B20在单片机控制下分三个阶段:●18B20初始化:初始化流程图见图3.2;●读18B20时序:读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(0x01),清屏幕指令,将以前的显示内容清除;写入指令码函数WriteInstruction(),写指令过程:输入:RS=0,D0-D7=指令码,E=高脉冲;写入数据函数WriteData(),写指令过程:输入:RS=1,D0-D7=数据,E=高脉冲;数据指针设置:指令码80H+地址码(0-27H)显示第一行的字符,指令码80H+地址码(40H-67H)显示的第二行字符。7四、硬件的调试完成的硬件焊接电路见附录。在硬件调试过程中,出现了许多问题。在设计电源电路中使用了整流桥进行整流,但是在硬件焊接完毕后,测得的输出电压不正常。后来利用四个二极管搭建一个整流桥接入电路,输出的电压就正常。此外,电路中使用了78L05稳压管将从整流桥出来的电压稳在5V,可是78L05输出的电压不是5V,因此自己加了了1K的可调电阻将输出的电压进行转换来给单片机供电。在焊接外围电路(1602LCD显示电路和18B20数字测温电路)之前,通过在单片的P2.7口接入一个发光二极管,来调试单片机的最小系统是否能正常工作。单片机中烧入的程序来控制LED的亮和灭。一步调试很成功。接下来自己将外围电路焊接进去,可是1602LCD不显示。经过自己对各个接口端功能的认真分析,发现自己将背光电压调的太高导致1602LCD亮度太高,所以显示的字符看不见,就误认成电路连接有误。在调低背光电压后,正常显示。最后出现的问题是在一切正常的情况下1602LCD上显示的是没有找到DS18B20传感器,请检查电路。经过认真仔细检查电路后,没有发现任何错误。硬件检查没问题,只能是软件程序编写有错,经过认真查看所编程序,发现里面对DS18B20的信号输入接口设置错了。改正后,重新编译烧进单片机,电源打开后,能正常显示温度了。经过以上过程,自己设计的电路达到了开始设想的功能,课程设计圆满结束。8总结和体会本设计利用AT89S52芯片控制温度传感器DS18B20,再辅之以部分外围电路实现对环境温度的测控,性能稳定,精度教高,而且扩展性能很强大。由于DS18B20的测量精度只有±0.5度,往往很多场合需要更加精确的温度,在所测温度精度不变的基础上必须对数据进行校正。由于DS18B20是基于带隙结构的数字式温度传感器,PN结增量电压正比于IC绝对温度(PTAT),它的测温精度较高,但存在着一定的误差.不过,其误差在时间和外部环境变化的条件下,保持相当高的稳定性。它充分利用监控计算机的处理能力,在监控计算机上用线性插补的数学方法对其进行误差校正补偿,能轻易地将其提高其精度。在本次设计的过程中,我发现很多的问题,这次设计真的让我长进了很多,单片机C语言课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,这一次,我全部用的都是16进制的数直接加减,感觉效果比较好,有好多的东西,只有我们去试着做了,才能真正的掌握。9五、元件清单(名称、型号、数量)元件名称型号数量单片机芯片AT89S521温度传感器DS18B201晶振12MHz1220V转7.5V变压器1电容100pF222uF、0.01uF各110421000uF/25V1220uF/25VLCD16021电阻1K、4.7K各110K24701万能板1IC插座1导线若干稳压块78L051发光二极管1二极管IN40075开关110附录:11程序://DS18B20温度检测及其液晶显示#includereg51.h//包含单片机寄存器的头文件#includeintrins.h//包含_nop_()函数定义的头文件unsignedcharcodedigit[10]={0123456789};//定义字符数组显示数字unsignedcharcodeStr[]={TestbyDS18B20};//说明显示的是温度unsignedcharcodeError[]={Error!Check!};//说明没有检测到DS18B20unsignedcharcodeTemp[]={Temp:};//说明显示的是温度unsignedcharcodeCent
本文标题:基于AT89S52和DS18B20的数字温度计设计
链接地址:https://www.777doc.com/doc-4149487 .html