基于DS18B20的lcd1602的温度检测系统.docx
- 文档编号:7067051
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:50
- 大小:940.52KB
基于DS18B20的lcd1602的温度检测系统.docx
《基于DS18B20的lcd1602的温度检测系统.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的lcd1602的温度检测系统.docx(50页珍藏版)》请在冰豆网上搜索。
基于DS18B20的lcd1602的温度检测系统
1.1、来源
在人类的生活环境中,温度扮演着极其重要的角色。
无论你生活在哪里,从事什么工作,无时无刻不在与温度打着交道。
温度无时无刻不在,同样也时时刻刻都在变化,为了让人们能更直观的看出此时此刻此地的实时温度,我就利用了单片机来完成这一功能。
1.2、意义
温度的检测与控制在现代经济与社会中有举足轻重的地位,与我们的生活息息相关,密不可分,越发占有一席之地。
例如在储粮仓库、智能楼宇、空调控制及其他的工农业生产和科学研究中应用广泛。
在温度的检测与控制方面,DS18B20小型温度检测系统及其数字温度传感器有许多突出的优点,其通过单总线与单片机连接,系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度检测,因此对于我们来设计并研究基于DS18B20的温度检测系统有主要的现实意义,从一方面讲这不仅对于工农业的发展,更对于国防的巩固与建设起到重要的作用;另一方面,本设计能够在一定程度上提高自己的单片机开发能力。
1.3、目的
(1)本实验要实现的是通过DS18B20温度传感器采集温度并在LCD上显示,并学会使用单片机控制DS18B20此类单总线器件,并对数字温度传感器DS18B0进行时序分析。
(2)更进一步了解LCD1602的应用。
(3)掌握单片机与PC的远程通信。
2、课题承担人员及分工说明
*********:
(1)主要负责电路板的制作、焊接与调试。
(2)电路的仿真。
(3)温度主要程序的编写与调试。
**********:
(1)Protel画板,材料的收集。
(2)串口的调试与程序编写。
(3)VB界面的设计和上位机程序的编写。
二、课题总体设计说明
1、说明总体开发计划和课题所达到的功能目标和技术指标
1.1、总体开发计划
1.1.1、基本功能
(1)以数字传感器DS1820作为前端采集温度,经过单片机处理后,将外部的温度显示在液晶屏上。
(2)可用通过独立式按键来设定温度的上限值和下限值,当坏境温度超过上限值或低于下限值时蜂鸣器会自动报警,并在液晶屏上提示温度大于上限值或温度小于下限值。
(3)当单片机检测到DS18B20存在时会在在LCD1602上显示“DS18B20Succes”,反之则显示“DS18B20isWrong,TEMPisNoon”。
1.1.2、扩展功能
以数字传感器DS1820作为前端采集温度,经过单片机处理后,再通过串口通信,把实时温度值、上限值和下限值显示在用VB语言编辑的计算机软件的界面上并显示出实时温度的变化曲线,当实时温度超过所设定的上限值和下限值时会在用VB语言编辑的计算机软件的界面上提示当前温度超过上限值或下限值,模拟实现设备与计算机的通信,通过计算机对设备的温度检测以及实时监控。
1.2、课题所达到的功能目标和技术指标
(1)能在LCD1602上准确的显示出实时温度;
(2)独立式按键能设置报警温度的上限值、下限值和查看所设定的上限值、下限值;
(3)当温度大于上限值或低于下限值时蜂鸣器会报警;
(4)通过串口和PC机连接,能够把实时温度值、上限值和下限值显示在用VB语言编辑的计算机软件的界面上并显示出实时温度的变化曲线,当实时温度超过所设定的上限值和下限值时会在用VB语言编辑的计算机软件的界面上提示当前温度超过上限值或下限值。
总之,课题所达到的功能和技术指标与前期计划的一样。
2、计划课题总体设计方案,比较几个备选方案,确定最终方案
(1)本系统的温度检测有两套方案
方案一:
采用AD590,使用AD590作为温度传感器,需要进行电流电压变换,电压放大以及A/D转换。
方案二:
采用DS18B20作为温度传感器进行温度测量。
DS18B20可以满足从-55摄氏度到+125摄氏度测量范围,在一秒内把温度转化成数字,测得的温度值的存储在两个八位的RAM中,单片机直接从中读出数据转换成十进制就是温度,使用方便。
另外采用外加电源供电对DS18B20的VDD引脚供电。
它的好处是无须MOSFET,而且在温度转换期间总线可自由搭载其它器件。
它试用于对性能要求不高,成本严格控制的应用,是经济型产品。
它具有线性好、精度适中、灵敏度高、体积小和使用方便等优点,得到广泛应用。
因为AD590需要模拟转数字电路,精确度低,测温点数少对线阻有要求,电路繁多,成本也较高,故本系统采用方案二。
(2)本系统的显示有两套方案
方案一:
数码管显示
方案二:
液晶显示采用1602字符型LCD,它是一种专门用于显示字母、数字、符号等点阵式LCD。
其有显示质量高、数字接口、功耗低、体积小等优点。
因为数码管只能显示数字和简单的字母,LCD可以显示字符,图形等,并能更形象的体现出字符与图像。
故本系统采用方案二。
(3)按键的选择
方案一:
行列式按键
方案二:
独立式按键
独立式按键电路配置灵活,硬件结构简单,但每个按键必须占用一根I/O口线。
在按键数量较多时,I/O口浪费较大。
故只在按键数量不多时,采用这种按键。
因为本系统只用到4个按键且I/O口够用,所以采用方案二。
(4)单片机的选择
本系统采用了51单片机,其体积小巧,携带方便,价格便宜。
且USB接口通讯及供电,通讯速度快,无须外接电源。
51单片机有一个全双工的串通信口,非常适合与电脑进行通信。
三、硬件设计说明
1、硬件总体设计方案
1.1、硬件设计目标
本系统中通过温度传感器DS18B20的数据线DQ与主控芯片51单片机的P3.3相连接,DS18B20将采集到的数据送给单片机,经过单片机出来后,显示在8位数据线与单片机P0口的液晶LCD上。
蜂鸣器经过三极管9012的驱动后接到单片机的P3.7,来实现当实时温度大于下限或高于上限的报警。
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脚相连
(6)报警:
蜂鸣器
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)蜂鸣器接到单片机的P3.7。
(4)DS18B20的DQ接到单片机的P3.3.
2、硬件单元设计
(1)主控电路:
实现对整个系统的控制
(2)串口通信电路:
串口经过MAX232的电平转换后R1OUT和T1IN接到单片机的RXD与TXD来实现与用VB语言编辑的计算机软件的界面间的通信。
(3)液晶LCD1602、DS18B20电路:
温度传感器DS18B20的数据线DQ与主控芯片51单片机的P3.3相连接,DS18B20将采集到的数据送给单片机,经过单片机处理后,显示在8位数据线与单片机P0口的液晶LCD上。
(4)按键、蜂鸣器电路:
按键K1用来查看所设置的上限温度TH、下限温度TL和设置上限温度TH、下限温度TL增加或减少的切换,K2用来设置上限温度TH,K3用来设置下限温度TL和查看上限温度和下限温度的退出,K4是设置好上限温度和上限温度的确定键;蜂鸣器用来当实时温度大于TH或TL的报警。
四、软件设计说明
1、软件总体设计方案
1.1、软件设计目标
(1)结构合理
程序应该采用结构模块化设计。
这不仅有利于程序的进一步扩充,而且也有利于程序的修改和维护。
在程序编程时,要尽量使得程序的层次分明。
易于阅读和理解,同时还可以简化程序减小程序对于内存的使用量,当程序中有经常需要加以修改或变化的参数时,应该设计成独立的参数传递群序,避免程序的频繁修改。
(2)操作性能好
操作性能好是指使用方便。
这点是、对数据采集系统来说是很重要的。
在开发程序时,应该考虑如何降低对操作人员专业知识的要求。
(3)系统应设计一定的检测程序
例如状态检测利于诊断程序,以便系统发生故障时容易确定故障部位,对于重要的参数要定时存储,以防止因掉电而丢失数据。
(4)提高程序的执行速度。
1.2、软件功能模块划分
子程序名
标号
参数
读取温度子程序
RE_TEMP
累加器A
温度数据处理子程序
SET_DATA
无
按键扫描子程序
P_KEY
无
设定报警值TH、TL子程序
SET_ALARM
R5
菜单显示子程序
LCD_PRINT
无
显示信息区子程序
LOOK_ALARM
累加器A
LCD的第二行显示高温度子程序
SHOW_LINE2H
30H
LCD的第二行显示低温度子程序
SHOW_LINE2L
30H
温度值比较子程序
TEMP_COMP
无
显示高、温度及加热标记子程序
TEMP_BJ3
R0、R1
报警上下限写入暂存器子程序
WR_THL
无
报警值拷贝到EEROM子程序
WRITE_E2
无
报警值拷贝回暂存器子程序
RE_THL
无
处理温度BCD码子程序
CON_TEMP
R4
显示区BCD码温B度刷新子程序
DISP_BCD
70H、71H、72H、73H
DS18B20复位初始化子程序
RESET_1820
无
写入DS18B20子程序
WRITE_1820
A
读出DS18B20子程序
READ_1820
25H、26H、27H、28H
LCD1602显示子程序
SET_LCD
无
LCD初始化子程序
INIT_LCD
无
LCD显示子程序
CONV
无
写指令子程序
WR_COMM
无
写数据子程序
WR_DATA
无
清楚LCD字符子程序
CLR_LINE
无
鸣响子程序
SPK_B2
无
延时子程序
DELAY
无
显示“OK”信息子程序
XS_S
无
显示“ERROR”信息子程序
XS_WRONG
无
显示温度标记“C”子程序
TEMP_BJ
无
自定义字符子程序
SECT_DATA
R3
串口发送子程序
SEND1
无
2、软件设计
2.1、主程序
主程序首先设置堆栈为5FH,设置定时器工作方式T1为方式2,设置串口方式。
接着开始启动定时器,调用LCD初始化子程序,调用DS18B20复位子程序去判断DS18B20是否存在,如果存在调用显示“success”子程序,接着调用上下限写入暂存器子程序,把EEROM里的温度报警值拷贝回暂存器,调用读取温度子程序,调用处理显示子程序,调用实际温度值与标记温度值比较子程序,调用按键扫描子程序后返回到调用读取温度子程序;如果DS18B20不存在,则调用显示“wrong”信息子程序后返回到调用DS18B20复位子程序。
(1)流程图
(2)重要代码
2.2、键扫描子程序
按键扫描子程序首先判断按键K1是否按下,如果按下就掉用鸣响子程序,接着判断K1是否放开,直到K1放开,存M-ALAX表,调用显示字符子程序,然后去判断K3是否按下,直到K3按下,调用鸣响子程序,调用显示“OK”信息子程序,最后放回;如果K1没有按下去判断K2是否按下,如果没按下就跳到返回,如果有按下就调用鸣响子程序,然后去判断K3是否放开直到K3放开才存TA1表,接着调用显示字符子程序,调用设定报警TH、TL子程序,调用报警上下限写入暂存器子程序,调用报警值拷贝EEROM子程序,最后跳到调用显示“OK”信息子程序。
(1)流程图
(2)重要代码
2.3、LCD显示子程序
LCD显示子程序开始先让LCD初始化,接着光标定位,显示字符,最后放回。
(1)流程图
(2)重要代码
五、软硬件调试说明
1、硬件性能测试
(1)LCD测试:
通过单片机小系统将所需要的字符送给LCD,LCD能正常显示出所送内容,且LCD的亮度可调。
(2)按键与蜂鸣器:
通过单片机小系统使蜂鸣器受按键的控制,即按下按键蜂鸣器响,放开即停。
(3)串口:
先用串口调试助手,让单片机发出简单的字符,串口调试助手能正常接收到数据即可。
再将串口与VB相连接。
注意:
串口硬件电路图的连接关键所在,首先串口是通过MAX232再与单片机连,在这MAX232的外围电路就相当重要,其外围要连接4个电解电容最好都用10UF的注意极性不要连反了。
其次串口的发送、接收要与MAX232的相对应。
当然单片机的发送、接收也同样要与MAX232的相对应。
最关键的是波特率的设置,单片机的波特率一定要与计算机的串口一样。
(4)硬件调试时存在的问题:
串口的PC_RXD与PC_TXD接反,芯片MXA232的16脚没有接+5V的电源,15脚没有接地。
(5)解决办法:
查阅串口原理图连接的相关资料,修改电路板。
(6)硬件的最终调试结果如下图1、图2、图3、图4所示。
图1、当实时温度超大于限值时的报警
图2、用串口与用VB语言编的界面相连接时当实时温度大于上限温度的报警
图3、当实时温度超小于限值时的报警
图4、用串口与用VB语言编的界面相连接时当实时温度小于上限温度的报警
2、软件性能测试
(1)软件性能测试时用Proteus将画好的仿真图调人用Keil编译后的Temp.hex文件,开始仿真,测试每个按键的功能是否以及实时温度和上下限报警是否与预期计划的一致。
(2)软件性能测试结果如下图:
(3)软件性能测试存在的问题:
实时温度的百位数字一致闪烁。
(4)解决办法:
由于考虑平时的室温根本不会超过100摄氏度,做一将软件中的百位地址73H直接赋0。
六、课题开发总结
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即变为减。
八、参考资料
书名
出版社
编者
单片机初级教程
北京航空航天大学
何立民
单片机应用实训教程
清华大学出版社
张永枫
单片机典型外围器件及应用实例
电子工业学出版社
求是科技
单片机原理及应用
电子工业学出版社
张迎新
单片机应用实现教程
西安电子科技大学出版社
张永枫
九、附件
1、硬件设计的总电路原理图、PCB版图
1.1、原理图
1.2、PCB图
2、元器件清单(器件名称、型号、在原理图中的编号)
器件名称
型号
原理图中的编号
器件名称
型号
原理图中的编号
电阻
1K
R1、R2
三级管
9012
Q10
4.7K
R8、R9
晶振
12M
Y1
10K
R4~R6
温度传感器
DS18B20
U3
200
R3
液晶
LCD1602
U2
电容
10uF
C6~C9
单片机
AT89S51
U1
20P
C2、C3
MAX232
U2_MAX232
22uF
C1、C4
串口
JP4
104
C5
蜂鸣器
BELL
排阻
103
P0_Pull
按键
RES、K1~K4
3、硬件电路板外观图片、PROTEUS仿真效果图
3.1、硬件电路板外观图片
正面
背面
3.2、PROTEUS仿真效果图
;数字温度计汇编语言源程序如下:
;******************************温度值存放单元*****************
TEMP_ZHEQU24H;实时温度值存放单元
TEMPLEQU25H;低温度值存放单元
TEMPHEQU26H;高温度值存放单元
TEMP_THEQU27H;高温报警值存放单元
TEMP_TLEQU28H;低温报警值存放单元
TEMPHCEQU29H;存十位数的BCD码
TEMPLCEQU2AH;存个位数的BCD码
;****************************按键输入引脚定义******************
K1EQUP1.0
K2EQUP1.1
K3EQUP1.2
K4EQUP1.3
SPKEQUP3.7;蜂鸣器
ZFEQU22H.1
XEQU2FH;设置显示位置
;****************************LCD控制引脚*************************
RSEQUP2.0
RWEQUP2.1
EEQUP2.2
FLAGEQU21H.0;温度传感器标志位
KEY_UDEQU21H.1
DQEQUP3.3;温度传感器数据采集口
;*****************************主程序******************************
ORG0000H
LJMPMAIN
ORG0023H
ORG30H
MAIN:
MOVSP,#5FH
MOVTMOD,#20H;定时器T1为方式2(自动再装入8位计数器)
MOVTH1,#0F3H;设置定时器初值,
MOVTL1,#0F3H
MOVPCON,#00H
MOVSCON,#50H;串口工作方式1,10为为1帧,REN=1允许接收
SETBTR1;定时器启动
MOVTEMP_TH,#27
MOVTEMP_TL,#20
ACALLSET_LCD;LCD初始化设置子程序
TOOP:
ACALLRESET_1820;调用18B20复位子程序
JNBFLAG,TOOP1;DS1820不存在,则跳转
ACALLXS_S;调用显示"SUCCES"信息子程序
ACALLWR_THL;将报警上下限写入暂存寄存器子程序
ACALLRE_THL;把E2ROM里温度报警值拷贝回暂存器
JMPTOOP2
TOOP1:
ACALLXS_WRONG;显示"WRONG"信息
SJMPTOOP;返回继续判断
TOOP2:
ACALLRE_TEMP;调用读取温度数据子程序
ACALLSET_DATA;调用处理显示温度数据子程序
ACALLTEMP_COMP;实际温度值与标记温度值比较子程序
ACALLP_KEY;调用按键扫描子程序
JMPTOOP2;循环
;;****************************读取温度数据子程序**************************
RE_TEMP:
JNBFLAG,TOOP1;判断DS18B20是否存在?
ACALLRESET_1820;18B20复位子程序
MOVA,#0CCH;跳过ROM匹配
ACALLWRITE_1820
MOVA,#44H;发出温度转换命令
ACALLWRITE_1820
ACALLRESET_1820;调用复位子程序
MOVA,#0CCH;跳过ROM匹配
ACALLWRITE_1820
MOVA,#0BEH;发出读温度命令
ACALLWRITE_1820
ACALLREAD_1820;调用读取子程序
RET
;****************************温度数据处理显示子程序**************************
SET_DATA:
ACALLCONV_TEMP;处理温度BCD码子程序
ACALLDISP_BCD;显示区BCD码温度值刷新子程序
ACALLCONV;LCD显示子程序
MOVA,#0CBH;设定第二行起始地址
ACALLTEMP_BJ;显示温度标记"℃"
ACALLzhfu
RET
;****************************按键扫描子程序************************************
P_KEY:
;按键K1处理
JBK1,PK1;K1键未按,则跳转到PK1处
ACALLSPK_BZ;K1键按下,发出一声响声
JNBK1,$;等按键放开
MOVDPTR,#M_ALAX1;存M_ALAX1表
MOVA,#1
ACALLLCD_PRINT;显示字符
ACALLLOOK_ALARM;显示信息区子程序
JBK3,$;等待K3按下(返回)
ACALLSPK_B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DS18B20 lcd1602 温度 检测 系统