集成电路课程设计课题:基于AT89C51单片机的多点温度测量系统设计姓名:韩颖班级:测控12-1学号:120123107073指导老师:汪玉坤日期:2014-11目录一、绪论二、总体方案设计三、硬件系统设计1主控制器2显示模块3温度采集模块(1)DS18B20的内部结构(2)高速暂存存储器(3)DS18B20的测温功能及原理(4)DS18B20温度传感器与单片机的连接(5)单片机最小系统总体电路图四、系统软件设计五、系统仿真六、设计总结七、参考文献八、附源程序代码一、绪论在现代工业控制中和智能化仪表中,对于温度的控制,恒温等有较高的要求,如对食品的管理,冰箱的恒温控制,而且现在越来越多的地方用到多点温度测量,比如冰箱的保鲜层和冷冻层是不同的温度这就需要多点的测量和显示可以让用户直观的看到温度值,并根据需要调节冰箱的温。它还在其他领域有着广泛的应用,如:消防电气的非破坏性温度检测,电力、电讯设备之过热故障预知检测,空调系统的温度检测。。。。。。温度检测系统应用十分广阔。本设计采用DALLAS最新单线数字温度传感器DS18B20简介新的一线器件体积更小、适用电压更宽、更经济DALLAS半导体公司的数字化温度传感器DS18B20是世界上第一片支持一线总线,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°二、设计过程及工艺要求1、基本功能(1)检测两点温度(2)两秒间隔循环显示温度2、主要技术参数测温范围:-30℃到+99℃测量精度:0.0625℃显示精度:0.1℃显示方法:LCD循环显示3、系统设计系统使用AT89C51单片机对两个DS18B20进行数据采集,并通过1602LCD液晶显示器显示所采集的温度。DS18B20以单总线协议工作,51单片机首先分别发送复位脉冲,使信号上所有的DS18B20芯片都被复位,程序先跳过ROM,启动DS18B20进行温度变换,再读取存储器的第一位和第二位读取温度,通过I/O口传到1602LCD显示。123图(1)DS18B20引脚图引脚定义如图(1):(1)GND为电源地;(2)DQ为数字信号输入/输出端;(3)Vcc为外接供电电源输入端(在寄生电源接线方式时接地)。4、设计原理框图DS18B20图(2)原理框图三、硬件设计1、主控制器(单片机)基于设计的要求要使用AT89C51单片机作为本系统设计的核心器件。由于AT89C51单片机是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能cMOS8位微处理器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,所以本系统采用AT89C51单片机作为系统的主控制器。其特点如下:①4K字节可编程闪速程序存储器:1000次循环写/擦②全静态工作:OHz-24MHz③三级程序存储器锁定④128X8位内部数据存储器,32条可编程I/0线⑤两个十六位定时器/计数器,六个中断源⑥可编程串行通道,低功耗闲置和掉电模式2.显示模块本设计要求用LCD显示器来显示测出的温度。LCD系列中LM016L型号的为2行16列液晶,可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN三个控制端口(共14线),工作电压为5V。没背光,和常用的1602B功能和引脚一样(除了调背光的二个线脚)。可以完全实现本设计的显示功能。3.温度采集模块本设计用的是DS18B20温度传感器,它是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20内部结构(1)DS18B20的内部结构如下图所示。DS18B20(1)DS18B20(2)1620LCD最小AT89C51系统图(3)DS18B20内部结构图DS18B20有4个主要的数据部件:①64位激光ROM。64位激光ROM从高位到低位依次为8位CRC、48位序列号和8位家族代码(28H)组成。②温度灵敏元件。③非易失性温度报警触发器TH和TL。可通过软件写入用户报警上下限值。④配置寄存器。配置寄存器为高速暂存存储器中的第五个字节。DS18B20在0工作时按此寄存器中的分辨率将温度转换成相应精度的数值,其各位定义如图(4)所示。TMR1R011111MSBDS18B20配置寄存器结构图LSB图(4)其中,TM:测试模式标志位,出厂时被写入0,不能改变;R0、R1:温度计分辨率设置位,其对应四种分辨率如下表所列,出厂时R0、R1置为缺省值:R0=1,R1=1(即12位分辨率),用户可根据需要改写配置寄存器以获得合适的分辨率。配置寄存器与分辨率关系表:R0R1温度计分辨率/bit最大转换时间/us00993.750110187.510113751112750图(5)(2)高速暂存存储器高速暂存存储器由9个字节组成,其分配如下图所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如图所示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。温度低位温度高位THTL配置保留保留保留8位CRCLSBDS18B20存储器映像图MSB图(6)(3)DS18B20的测温功能及原理温度值格式图DS18B20温度数据表:232221202-12-22-32-4MSBLSBSSSSS262524图(7)典型对应的温度值表:温度/℃二进制表示十六进制表示+125+25.0625+10.125+0.50-0.5-10.125-25.0625-5500000111110100000000000110010001000000001010001000000000000010000000000000000000111111111111100011111111010111101111111001101111111111001001000007D0H0191H00A2H0008H0000HFFF8HFF5EHFE6FHFC90H图(8)典型对应的温度值表(4)DS18B20温度传感器与单片机的连接XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X112MHzC122pFC222pFGNDC320uFR11k+5VGND图(9)单片机最小系统LCD显示屏电路:+5VD714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016L234567891RP110K+5V图(10)LCD显示屏电路(5)具体总体电路图如下:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C5130.8DQ2VCC3GND1FIRSTDS18B20+5VD714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016LX112MHzC122pFC222pFGNDC320uFR11k+5VGND234567891RP110K+5V17.2DQ2VCC3GND1SECONDDS18B20图(11)总体硬件图四、软件设计1、主程序方案主程序调用了4个子程序和一个欢迎开机画面的程序,4个子程序分别是液晶初始化、DS18B201的初始化、DS18B202的初始化、和液晶显示数据的程序。(1)液晶初始化程序:8位数据端口,2行显示,5*7点阵、开启显示,无光标、清屏、AC递增,画面不动。(2)分别对两个DS18B20温度传感器初始化程序:初始化,读写一个字节,(3)液晶显示的子程序:确定液晶字符的输入位置,将字符输出到液晶显示(4)液晶显示温度程序:先读DS18B20当前温度,将温度转化成液晶字符显示。将各个功能程序以子程序的形式写好,当写主程序的时候,只需要调用子程序调用指令使得程序结构清晰,无论是修改还是维护都比较方便。将功能程序段写成子程序的形式,除了方便调用之外,还有一个好处那就是以后写程序的时候如果要用到,就可以直接调用这个单元功能模块。2、流程图主程序流程图:图(11)主程序流程图液晶初始化两个DS18B20初始化显示开机画面延时2秒显示第一个温度延时2秒显示第二个温度延时2秒开始图(12)液晶初始化流程图开始功能设置(0x38)16*2显示8位数据、5*7点阵不忙检测,执行三次延时5ms开显示,无光标(0xc0)延时5ms设置输入模式(0x06)延时5ms清除显示器(0x01)延时5ms退出返回图(13)DS13B20的读取数据流程图DS18B20初始化发跳过ROM命令发温度读取命令清DQ准备发送延时1us以上读一位数据延时15us释放总线延时15~45us2位是否读完结束读取NY开始图(14)液晶显示流程图五、调试仿真开机画面:开始取得18B20测得温度数值将数值转化为液字符型获取首行显示坐标显示首行字符获取第二行显示坐标显示温度值延时400msXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C5130.8DQ2VCC3GND1FIRSTDS18B20+5VD714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016LX112MHzC122pFC222pFGNDC320uFR11k+5VGND234567891RP110K+5V17.2DQ2VCC3GND1SECONDDS18B20图(15)开机画面保持两秒后显示第一个温度:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3