您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于单片机的DS18B20温度测量
第1页共25页CHANGZHOUUNIVERSITY电子综合实训题目:基于AT89C51单片机的温度测量学生姓名:陈吉铭学号:09446207学院:信息科学与工程学院专业班级:电子092实训时间:2013年1月10日2013年1月20日第2页共25页1.课题要求(1)要求能够测量温度,并显示在LCD1602上。(2)可随意设定温度的上下限,通过按键可改变上下限值,当实际温度超过上下限时,蜂鸣器就会响。2.设计背景随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差,这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。本设计选用AT89C51单片机作为主控制器件,DS18B20作为测温传感器,通过LM016L实现温度显示。通过DS18B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0℃~100℃最大线性偏差小于0.01℃。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。3.硬件设计3.1总体设计思路方案与系统框图采用数字温度芯片DS18B20测量温度,输出信号全数字化。采用了单总线的数据传输,由数字温度计DS18B20和AT89C51单片机构成的温度测量装置,DS18B20的DQ与AT89C51的P3.4口相连,与它直接输出温度的数字信号,采用AT89C51单片机控制,并可以根据需要设定上下限温度。温度显示由LCD1602完成,LCD1602的D0~D7为8位双向数据端,与AT89C51的P0口相连,P0口作数据总线。系统框图如图1所示。AT89C51时钟电路复位电路DS18B20数字温度传感器LM016L测温物体图1按键电路第3页共25页3.2DS18B20芯片介绍DS18B20引脚定义:(1)DQ为数字信号输入输出端(2)GND为电源地(3)VDD为外接供电电源输入端温度寄存器(0和1字节)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。DS18B20的温度操作是使用16位,也就是说分辨率是0.0625。BIT15~BIT11是符号位,为了就是表示转换的值是正数还是负数。3.3.LM016L介绍第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对第4页共25页比度过高时产生鬼影,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7为8位双向数据线。3.4.AT89C51芯片VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功第5页共25页能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。第6页共25页3.5硬件电路图本系统中通过温度传感器DS18B20的数据线DQ与主控芯片51单片机的P3.3相连接,DS18B20将采集到的数据送给单片机,经过单片机出来后,显示在8位数据线与单片机P0口的液晶LCD上。蜂鸣器经过三极管的驱动后接到单片机的P3.7,来实现当实时温度大于下限或高于上限的报警。4个按键K1~K4接到单片机的P1.0~P1.3,来实现对上限值和下限值的查看与设定。液晶LCD的RS、RW、E分别接到单片机的P2.0~P2.2来实现单片机控制液晶的读写命令和数据的控制。4.软件设计LCD显示子程序开始先让LCD初始化,接着光标定位,显示字符,最后放回。LCD流程图LCD初始化光标定位显示字符开始结束第7页共25页主程序首先设置堆栈为5FH,设置定时器工作方式T1为方式2。接着开始启动定时器,调用LCD初始化子程序,调用DS18B20复位子程序。接着调用上下限写入暂存器子程序,把温度报警值拷贝回暂存器,调用读取温度子程序,调用处理显示子程序,调用实际温度值与上下限温度值比较子程序,调用按键扫描子程序后返回到调用读取温度子程序。主程序框图开始设置堆栈5FH设置定时器工作方式T1为2给定时器设初值启动定时器调用LCD初始化程序调用DS18B20复位程序调用显示SUCCESS信息程序调用上下限写入暂存器子程序调用读取温度子程序调用显示数据子程序调用实际温度与上下限温度比较子程序调用按键扫描子程序第8页共25页按键扫描子程序首先判断按键K1是否按下,如果按下就调用蜂鸣子程序,接着判断K1是否放开,直到K1放开,调用显示数据子程序,然后去判断K3是否按下,直到K3按下,调用蜂鸣子程序,最后放回;如果K1没有按下去判断K2是否按下,如果没按下就跳到返回,如果有按下就调用鸣响子程序,然后去判断K3是否放开,若放开接着调用显示字符子程序,调用设定报警TH、TL子程序,调用报警上下限写入暂存器子程序,调用报警值拷贝EEROM子程序。按键扫描子程序框图开始判断按键K1是否按下调用报警子程序判断按键K1是否放开调用显示数据程序判断按键K3是否按下调用报警子程序返回判断按键K2是否按下调用报警子程序判断K3是否放下调用显示数据子程序调用设定报警THTL子程序调用报警上下限写入暂存器子程序YESNOYESNOYESNO第9页共25页5.仿真与调试设定的温度范围是30到40度,如图实际温度为35度。设定的温度范围是30度到40度设定温度范围是30度到40度,实际温度为45度,蜂鸣器响,温度的上下限设定可通过K2和K3来改变。第10页共25页6.体会和心得这次电子综合实训是我第一次完整的完成一个项目的实训,我觉得很有意义,之前我所做的设计都是基于学校的硬件开发板完成的,而这一次完全是独立自主,这过程包含了电子设计的绝大多数内容,从需求分析,到选择器材,到硬件电路设计再到软件设计,仿真与调试,这过程是相当困难的,做的过程中会出现很多错误,有的时候根本不知道怎么检查,只有依赖于网络。在一开始我是用的模拟电路做的,但是发现电路太复杂了,尽管复习了半年的电路分析,但是我还是没有能力计算出那些参数,所以我就改用集成的数字传感器,系统就变得十分简单,但是数字传感器是需要软件驱动的,我又查找了网上的驱动程序,再进行程序的拼接。这次课程设计为我将来走向工作岗位打下基础。7.参考文献1.赵德安.单片机原理与应用[M].北京:机械工业出版社,20092.刘建清.从零开始学单片机C语言[M].北京:科学出版社,20073.赵燕.传感器原理及应用[M].北京:北京大学出版社,2008第11页共25页附录;******************************温度值存放单元*****************TEMP_ZHEQU24H;温度值存放单元TEMPLEQU25H;低温度值存放单元TEMPHEQU26H;高温度值存放单元TEMP_THEQU27H;高温报警值存放单元TEMP_TLEQU28H;低温报警值存放单元TEMPHCEQU29H;存十位数的BCD码TEMPLCEQU2AH;存个位数的BCD码;****************************按键输入引脚定义******************K1EQUP1.0K2EQUP1.1K3EQUP1.2K4EQUP1.3SPKEQUP3.7;蜂鸣器ZFEQU22H.1XEQU2FH;设置显示位置;****************************LCD控制引脚*************************RSEQUP2.0RWEQUP2.1EEQUP2.2FLAGEQU21H.0;温度传感器标志位KEY_UDEQU21H.1DQEQUP3.3;温度传感器数据采集口;*****************************主程序******************************ORG0000HLJMPMAINORG0023HORG30HM
本文标题:基于单片机的DS18B20温度测量
链接地址:https://www.777doc.com/doc-2573858 .html