基于DS18B20的多点温度采集系统设计LCDWord文件下载.docx
《基于DS18B20的多点温度采集系统设计LCDWord文件下载.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的多点温度采集系统设计LCDWord文件下载.docx(35页珍藏版)》请在冰豆网上搜索。
四.课题开发总结------------------------------------------10
五.用户操作说明-----------------------------------------11
六.参考资料----------------------------------------------------------------11
附录:
程序-----------------------------------------------------------------12
一、课题总体设计说明
1.1、目的
(1)本实验要实现的是通过DS18B20温度传感器采集温度并在LCD上显示,并学会使用单片机控制DS18B20此类单总线器件,并对数字温度传感器DS18B0进行时序分析。
(2)更进一步了解LCD1602的应用。
(3)掌握单片机与PC的远程通信。
1.2、基本功能
(1)以数字传感器DS1820作为前端采集温度,经过单片机处理后,将外部的温度显示在液晶屏上。
(2)可用通过独立式按键来设定温度的上限值和下限值,当坏境温度超过上限值或低于下限值时会自动提示,并在液晶屏上提示温度大于上限值或温度小于下限值。
(3)当单片机检测到DS18B20存在时会在在LCD1602上显示“DS18B20Succes”,反之则显示“DS18B20isWrong,TEMPisNoon”。
1.3、扩展功能
以数字传感器DS1820作为前端采集温度,经过单片机处理后,再通过串口通信,把实时温度值、上限值和下限值显示在用VB语言编辑的计算机软件的界面上并显示出实时温度的变化曲线,当实时温度超过所设定的上限值和下限值时会在用VB语言编辑的计算机软件的界面上提示当前温度超过上限值或下限值,模拟实现设备与计算机的通信,通过计算机对设备的温度检测以及实时监控。
1.4、课题所达到的功能目标
(1)能在LCD1602上准确的显示出实时温度;
(2)独立式按键能设置报警温度的上限值、下限值和查看所设定的上限值、下限值;
(3)当温度大于上限值或低于下限值时在液晶屏上自动提示;
(4)通过串口和PC机连接,能够把实时温度值、上限值和下限值显示在用VB语言编辑的计算机软件的界面上并显示出实时温度的变化曲线,当实时温度超过所设定的上限值和下限值时会在用VB语言编辑的计算机软件的界面上提示当前温度超过上限值或下限值。
1.5、单片机的选择
本系统采用了51单片机,其体积小巧,携带方便,价格便宜。
且USB接口通讯及供电,通讯速度快,无须外接电源。
51单片机有一个全双工的串通信口,非常适合与电脑进行通信。
二、硬件设计说明
1、硬件总体设计方案
1.1、硬件设计目标
本系统中通过温度传感器DS18B20的数据线DQ与主控芯片51单片机的P3.3相连接,DS18B20将采集到的数据送给单片机,经过单片机出来后,显示在8位数据线与单片机P0口的液晶LCD上。
,当坏境温度超过上限值或低于下限值时会自动提示,并在液晶屏上提示温度大于上限值或温度小于下限值。
4个按键K1~K4接到单片机的P1.0~P1.4,来实现对上限值和下限值的查看与设定。
串口经过MAX232的电平转换后R1OUT和T1IN接到单片机的RXD与TXD来实现与用VB语言编辑的计算机软件的界面间的通信。
液晶LCD的RS、
、E分别接到单片机的P2.0~P2.2来实现单片机控制液晶的读写命令和数据的控制。
1.2、硬件功能模块划分
(1)AT89S51:
实现对整个系统的控制。
(2)DS18B20、LCD1602:
温度传感器DS18B20的数据线DQ与主控芯片51单片机的P3.3相连接,DS18B20将采集到的数据送给单片机,经过单片机处理后,显示在8位数据线与单片机P0口的液晶LCD上。
(3)按键输入:
对报警温度上限值TH和下限值TL的设置。
(4)串口通信:
实现与与用VB语言编辑的计算机软件的界面间的通信。
1.3、主控芯片和关键元器件的选型、接口和连接方式定义
1.3.1、主控芯片和关键元器件的选型
(1)主控芯片:
AT89S51
(2)温度采集:
DS18B20
(3)按键:
独立式按键(K1~K4)
(4)显示:
LCD1602
(5)串口:
通过MAX232与单片机的10脚11脚相连
1.3.1.1、AT89S51引脚结构,见图1-1
图1-1单片机封装及引脚结构
引脚功能说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写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口输出其特殊功能寄存器的内容。
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:
来自反向振荡器的输出。
1.3.1.2、DS18B20数字温度传感器介绍
功能介绍
DALLAS最新单线数字温度传感器DS18B20的“一线器件”体积更小、适用电压更宽、更经济Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。
一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
DS18B20、DS1822“一线总线”字化温度传感器同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55°
C~+125°
C,-10~+85°
C范围内,精度为±
0.5°
C。
DS1822的精度较差为±
2°
C。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:
境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
而且新一代产品更便宜,体积更小。
DS18B20、DS1822的特性DS18B20可以程序设定9~12位的分辨率,精度为±
可选更小的方式,更宽的电压适用范围。
分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电依然保存。
DS18B20的性能是新一代产品中最好的!
性能价格比也非常出色!
DS1822DS18B20软件兼容,是DS18B20的简化版本。
省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±
2°
C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。
继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。
DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。
DS18B20的内部结构DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列如下:
DQ为数字信号输入/输出端;
GND为电源地;
VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:
开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位,见表2-1。
表2-1DS18B20内部温度表示形式
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;
如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
见表2-2
表2-2DS18B20转化温度形式
实际温度值
数字输出(二进制)
数字输出(十六进制)
+125℃
0000011111010000
07D0H
+85℃
0000010101010000
0550H
+25.0625℃
0000000110010001
0191H
+10.125℃
0000000010100010
00A2H
+0.5℃
0000000000001000
0008H
0℃
0000000000000000
0000H
-0.5℃
1111111111111000
FFF8H
-10.125℃
1111111101011110
FF5EH
-25.0625℃
1111111001101111
FE6EH
-55℃
1111110010010000
FC90H
1.3.2、接口和连接方式定义
(1)液晶LCD1602的数据和指令选择控制端RS接到单片机的P2.0,读写控制
接到单片节的P2.1,数据读写控制位E接到单片机的P2.2,8位数据线DB0~DB7接到单片机的P0口。
(2)4个按键K1~K4分别接到单片机的P1.0~P1.3。
(3)DS18B20的DQ接到单片机的P3.3.
2、软件设计
(1)流程图
三、软件调试说明
1、软件性能测试
(1)软件性能测试时用Proteus将画好的仿真图调人用Keil编译后的Temp.hex文件,开始仿真,测试每个按键的功能是否以及实时温度和上下限报警是否与预期计划的一致。
(2)软件性能测试结果如下图:
四、课题开发总结
1、总结整个课题的任务完成情况,是否与预期规划的相符合,设计出来的作品性能如何、优缺点
本系统完成的与预期计划相吻合,预期所有功能基本实现,作品性能好,突出的优点是本作品的硬件电路做的相当美观,且电路相当稳定,不仅实现了LCD的显示同样也很好的在VB6.0人机界面上绘制出温度变化曲线,根据我们设定的上限提示温度和下线提示温度,判断当前温度有无高温提示或低温提示,如果温度超限,则给出相应的提示信息。
并达到了远程功能。
2、硬件宏观上的设计要点,达到的性能指标,存在的问题
硬件的设计要点,达到的性能指标与计划预期的一样,没有存在什么问题,可以说此硬件做的相当完美。
3、软件宏观上的设计要点,达到的性能指标、开发编译工具和方法、存在的问题
(1)软件设计要点,达到的性能指标几乎达到计划预期的,在设计这个系统的过程还学会了串口调试工具。
(2)整个电路的设计仿真过程中除了运用了单片机相关软件外还利用了以下软件Multisim8:
用于电路的设计与仿真
串口调试助手与模拟串口:
用于串口的调试与仿真
VB6.0:
用于数据的显示与显示温度变化的曲线
Protel:
电路板的设计
五、用户操作说明
第一步:
将电路板上的串口与电脑的串口相连接;
第二步:
将电路板接上+5V的电源(此时电源指示灯会点亮,会在LCD1602上显示实时温度,如图1所示);
第三步:
在VB界面上点击打开串口(此时会在VB界面上显示实时温度,上限温度,下限温度和实时温度变化的曲线,如图2所示)。
附:
本系统有四个控制按键功能如下
K1:
用于查看上下限温度与温度加减切换
K2:
用于上限温度的调节
K3:
用于下限温度的调节,并兼查看上下限温度时的返回
K4:
设定好上限温度与下限温度时的确定键
如,当要调上限温度时:
首先按下K2,再按K2时上限温度就加1,如果要减1就按下切换按键K1,再按K2即变为减。
六、参考资料
单片机原理及应用教程范立南2006年1月
单片机原理及应用教程刘瑞新2003年07月
程序:
TEMP_ZHEQU24H;
实测温度值存放单元
TEMPLEQU25H
TEMPHEQU26H
TEMP_THEQU27H;
高温报警值存放单元
TEMP_TLEQU28H;
低温报警值存放单元
TEMPHCEQU29H;
正、负温度值标记
TEMPLCEQU2AH
TEMPFCEQU2BH
K1EQUP1.4;
查询按键
K2EQUP1.5;
设置/调整键
K3EQUP1.6;
调整键
K4EQUP1.7;
确定键
BEEPEQUP3.7
RELAYEQUP1.3;
指示灯
LCD_XEQU2FH;
LCD字符显示位置
LCD_RSEQUP2.0;
LCD寄存器选择信号
LCD_RWEQUP2.1;
LCD读写信号
LCD_ENEQUP2.2;
LCD允许信号
FLAG1EQU20H.0;
DS18B20是否存在标志
KEY_UDEQU20H.1;
设定按键的增、减标志
DQEQUP3.3;
DS18B20数据信号
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#60H
MOVA,#00H
MOVR0,#20H;
将20H~2FH单元清零
MOVR1,#10H
CLEAR:
MOV@R0,A
INCR0
DJNZR1,CLEAR
LCALLSET_LCD
LCALLRE_18B20
START:
LCALLRST;
调用18B20复位子程序
JNBFLAG1,START1;
DS1820不存在
LCALLMENU_OK;
DS1820存在,调用显示正确信息子程序
MOVTEMP_TH,#055H;
设置TH初值85度
MOVTEMP_TL,#019H;
设置TL初值25度
LCALLRE_18B20A;
调用暂存器操作子程序
LCALLWRITE_E2;
写入DS18B20
LCALLTEMP_BJ;
显示温度标记
JMPSTART2
START1:
LCALLMENU_ERROR;
调用显示出错信息子程序
SJMP$
START2:
LCALLRST;
调用DS18B20复位子程序
DS18B20不存在
MOVA,#0CCH;
跳过ROM匹配命令
LCALLWRITE
MOVA,#44H;
温度转换命令
LCALLRST
跳过ROM匹配
LCALLWRITE
MOVA,#0BEH;
读温度命令
LCALLREAD;
调用DS18B20数据读取操作子程序
LCALLCONVTEMP;
调用温度数据BCD码处理子程序
LCALLDISPBCD;
调用温度数据显示子程序
LCALLCONV;
调用LCD显示处理子程序
LCALLTEMP_COMP;
调用实测温度值与设定温度值比较子程序
LCALLPROC_KEY;
调用键扫描子程序
SJMPSTART2;
循环
;
***************************键扫描子程序*****************************
PROC_KEY:
JBK1,PROC_K1
LCALLBEEP_BL
JNBK1,$
MOVDPTR,#M_ALAX1
MOVA,#1
LCALLLCD_PRINT
LCALLLOOK_ALARM
JBK3,$
JMPPROC_K2
PROC_K1:
JBK2,PROC_END
JNBK2,$
MOVDPTR,#RST_A1
LCALLSET_ALARM
LCALLRE_18B20;
将设定的TH,TL值写入DS18B20
LCALLWRITE_E2
PROC_K2:
LCALLMENU_OK
LCALLTEMP_BJ
PROC_END:
RET
***************************设定温度报警值TH、TL***************************
SET_ALARM:
LCALLLOOK_ALARM
AS0:
JBK1,AS00
CPL20H.1;
UP/DOWN标记
AS00:
JB20H.1,ASZ01;
20H.1=1,增加
JMPASJ01;