数字温度计DS18B20课程设计报告材料.docx
- 文档编号:12253781
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:36
- 大小:229.04KB
数字温度计DS18B20课程设计报告材料.docx
《数字温度计DS18B20课程设计报告材料.docx》由会员分享,可在线阅读,更多相关《数字温度计DS18B20课程设计报告材料.docx(36页珍藏版)》请在冰豆网上搜索。
数字温度计DS18B20课程设计报告材料
基于单片机的DS18B20数字温度计设计
学生姓名:
侯晋启
专业名称:
自动化专业
班级:
2014级自动化1班
学号:
20144786
摘要
本设计采用的主控芯片是ATMEL公司的AT89C51单片机,数字温度传感器是DALLAS公司的DS18B20。
本设计用数字传感器DS18B20测量温度,测量精度高,传感器体积小,使用方便。
所以本次设计的数字温度计在工业、农业、日常生活中都有广泛的应用。
单片机技术已经广泛应用社会生活的各个领域,已经成为一种非常实用的技术。
51单片机是最常用的一种单片机,而且在高校中都以51单片机教材为蓝本,这使得51单片机成为初学单片机技术人员的首选。
本次设计采用的AT89C51是一种flash型单片机,可以直接在线编程,向单片机中写程序变得更加容易。
本次设计的数字温度计采用的是DS18B20数字温度传感器,DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。
本设计根据设计要求,首先设计了硬件电路,然后绘制软件流程图及编写程序。
本设计属于一种多功能温度计,温度测量范围是-55℃到125℃。
温度值的分辨率可以被用户设定为9-12位,可以设置上下限报警温度,当温度不在设定的范围内时,就会启动报警程序报警。
本设计的显示模块是用液晶显示屏1602实现温度显示。
在显示实时测量温度的模式下还可以通过查询按键查看设定的上下限报警温度。
一、实验设计概述
本系统所设计的数字温度计采用的是DS18B20数字温度传感器测温,测温上下限为10°C~40°C。
DS18B20直接输出的就是数字信号,与传统的温度计相比,具有读数方便,测温范围广,测温准确,上下限报警功能。
其输出温度采用LCD1602显示,主要用于对测温比较准确的场所。
该设计控制器使用的是51单片机AT89C51,AT89C51单片机在工控、测量、仪器仪表中应用还是比较广泛的。
测温传感器使用的是DS18B20,DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。
显示是用液晶显示屏1602实现温度显示。
蜂鸣器用来实现当测量温度超过设定的上下限时的报警功能。
二、系统总体方案及硬件设计
2.1系统总体设计框图
由于DS18B20数字温度传感器具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠,所以在该设计中采用DS18B20数字温度传感器测量温度。
温度计电路设计总体设计框图如图2-1所示,控制器采用单片机AT89C51,温度传感器采用DS18B20,显示采用液晶显示1602,报警采用蜂鸣器、LED灯实现,键盘用来设定报警上下限温度。
单
片
机
测温电路
按键输入电路
驱动电路
显示电路
报警电路
时钟、复位电路
图2-1温度计电路总体设计框图
2.2各模块简介
(1)控制模块
AT89C51单片机是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含有8kb的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
在单芯片上,拥有灵巧的8位CPU和在系统可编程的Flash,使得AT89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89C51具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89C51可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
(2)显示模块
显示电路采用液晶显示屏1602。
LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表2-1所示:
表2-1:
LCD1602引脚说明
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
表10-13:
引脚接口说明表
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
本实验设计采用14脚接口。
1602液晶模块内部的控制器共有11条控制指令,如表2-2所示:
表2-2:
LCD1602控制指令
序号
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清显示
0
0
0
0
0
0
0
0
0
1
2
光标返回
0
0
0
0
0
0
0
0
1
*
3
置输入模式
0
0
0
0
0
0
0
1
I/D
S
4
显示开/关控制
0
0
0
0
0
0
1
D
C
B
5
光标或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
6
置功能
0
0
0
0
1
DL
N
F
*
*
7
置字符发生存贮器地址
0
0
0
1
字符发生存贮器地址
8
置数据存贮器地址
0
0
1
显示数据存贮器地址
9
读忙标志或地址
0
1
BF
计数器地址
10
写数到CGRAM或DDRAM)
1
0
要写的数据内容
11
从CGRAM或DDRAM读数
1
1
读出的数据内容
(3)温度传感器模块
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.0~5.5v;零待机功耗;温度以9或12位二进制数字表示;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20采用3脚TO-92封装或8脚SO或µSOP封装,其其封装形式如图2-2所示。
图2-2DS18B20的封装形式
DS18B20的64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM。
高速暂存RAM的结构为8字节的存储器,结构如图2-3所示。
图2-3DS18B20的高速暂存RAM的结构
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率,DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值,该字节各位的定义如表2-3所示。
表2-3:
配置寄存器
D7D6D5D4D3D2D1D0
TM
R1
R0
1
1
1
1
1
配置寄存器的低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率,“R1R0”为“00”是9位,“01”是10位,“10”是11位,“11”是12位。
当DS18B20分辨率越高时,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位s=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位s=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。
输出的二进制数的高5位是符号位,最后4位是温度小数点位,中间7位是温度整数位。
表2-4是一部分温度值对应的二进制温度数据。
表2-4DS18B20输出的温度值
温度值
二进制输出
十六进制输出
+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
FF6Fh
-55℃
1111110010010000
FC90h
DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。
若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。
因此,可用多只DS18B20同时测量温度并进行报警搜索。
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。
主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
DS18B20传感器的操作指令如表2-5所示。
传感器复位后向传感器写相应的命令才能实现相应的功能。
表2-5DS18B20的指令表
指令
指令代码
功能
读ROM
0x33
读DS1820温度传感器ROM中的编码(即64位地址)
符合ROM
0x55
发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备。
搜索ROM
0xF0
用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。
为操作各器件作好准备。
跳过ROM
0xCC
忽略64位ROM地址,直接向DS1820发温度变换命令。
适用于单片工作。
告警搜索命令
0xEC
执行后只有温度超过设定值上限或下限的片子才做出响应。
温度变换
0x44
启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。
结果存入内部9字节RAM中。
读暂存器
0xBE
读内部RAM中9字节的内容
写暂存器
0x4E
发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。
复制暂存器
0x48
将RAM中第3、4字节的内容复制到EEPROM中。
重调EEPROM
0xB8
将EEPROM中内容恢复到RAM中的第3、4字节。
读供电方式
0xB4
读DS1820的供电模式。
寄生供电时DS1820发送“0”,外接电源供电DS1820发送“1”。
DS18B20传感器为单总线结构器件,在读写操作之前,传感器芯片应先进性复位操作也就是初始化操作。
DS18B20的初始化时序如图2-4所示。
首先控制器拉高数据总线,接着控制器给数据总线一低电平,延时480μs,控制器拉高数据总线,等待传感器给数据线一个60-240μs的低电平,接着上拉电阻将数据线拉高,这样才初始化完成。
图2-4DS18B20初始化时序
DS18B20传感器的读写时序
1.写时序
DS18B20传感器的读写操作是在传感器初始化后进行的。
每次操作只能读写一位。
当主机把数据线从高电平拉至低电平,产生写时序。
有两种类型的写时序:
写“0”时序,写“1”时序。
所有的时序必须有最短60μs的持续期,在各个写周期之间必须有最短1μs的恢复期。
在数据总线由高电平变为低电平之后,DS18B20在15μs至60μs的时间间隙对总线采样,如果为“1”则向DS18B20写“1”,如果为“0”则向DS18B20写“0”。
如图2-5的上半部分。
对于主机产生写“1”时序时,数据线必须先被拉至低电平,然后被释放,使数据线在写时序开始之后15μs内拉至高电平。
对于主机产生写“1”时序时,数据线必须先被拉至低电平,且至少保持低电平60μs。
2.读时序
在数据总线由高电平变为低电平之后,数据线至少应保持低电平1μs,来自DS18B20的输出的数据在下降沿15μs后有效,所以在数据线保持低电平1μs之后,主机将数据线拉高,等待来自DS18B20的数据变化,在下降沿15μs之后便可开始读取DS18B20的输出数据。
整个读时序必须有最短60μs的持续期。
如图2-5的下半部分。
读时序结束后数据线由上拉电阻拉至高电平。
图2-5DS18B20传感器的读写时序
(4)调节模块介绍
调节模块是由六个按键接地后直接接单片机的I/O口完成的。
当按键没有按下时单片机管脚相当于悬空,默认下为高电平,当按键按下时相当于把单片机的管脚直接接地,此时为低电平。
程序设计为低电平触发。
K1键:
查看上下限温度报警值。
K2键:
返回实时温度。
K3键:
上调温度上限值。
K4键:
下调温度下限值。
K5键:
上调温度下限值。
K6键:
下调温度下限值。
(5)报警模块介绍
报警模块是由一个npn型的三极管9012驱动的12V蜂鸣器,两个发光二极管组成的。
低温报警时,蜂鸣器工作,蓝色发光二极管发光。
高温报警时,蜂鸣器工作,红色发光二极管发光。
三、系统硬件设计
3.1单片机电路设计
图3-1单片机最小系统原理图
单片机最小系统是由晶振电路,上电复位、按键复位电路,ISP下载接口和电源指示灯组成。
原理图如图3-1所示。
3.2.DS18B20温度传感器电路设计
DS18B20温度传感器是单总线器件与单片机的接口电路采用电源供电方。
电源供电方式如图3-2,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
图3-2DS18B20电源供电方式
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
3.3显示电路设计
显示电路是由液晶显示屏1602进行显示的,由单片机P0口输出时,需要加上一个上拉电阻稳定电压,本设计采用排阻来实现。
显示电路的总体设计如图3-3所示。
图3-3显示电路
3.4按键电路设计
按键电路是用来实现调节设定报警温度的上下限和查看上下报警温度的功能。
电路原理图如图3-4所示。
图3-4按键电路原理图
3.5报警电路设计
报警电路是在测量温度大于上限或小于下限时提供报警功能的电路。
该电路是由一个蜂鸣器和一个红色的发光二极管组成,具体的电路如图3-6所示。
图3-5报警电路原理图
四、软件设计
4.1主程序设计
主程序需要调用3个子程序,分别为:
•实时温度显示子程序:
驱动数码管把实时温度值送出在液晶显示屏显示
•查询记录温度值子程序:
查询过去存储的温度值,最多可查询10个值
•温度设定、报警子程序:
设定报警温度值,当温度超过该值时产生报警,即驱动蜂鸣器鸣叫、8个发光二极管发光
主程序流程图:
开始
显示实时温度
温度设定、报警
定时器初始化、启动
查询记录温度值
图4-1主程序流程图
4.2DS18B20程序设计
读温度值模块需要调用4个子程序,分别为:
●DS18B20初始化子程序:
让单片机知道DS18B20在总线上且已准备好操作
●DS18B20写字节子程序:
对DS18B20发出命令
●DS18B20读字节子程序:
读取DS18B20存储器的数据
●延时子程序:
对DS18B20操作时的时序控制
1.读温度值模块流程图:
图4-2读温度值子程序流程图
2.DS18B20初始化子程序流程图:
图4-5DS18B20初始化子程序流程图
3.DS18B20写字节和读字节子程序流程图:
图4-6DS18B20写字节子程序流程图图4-7DS18B20读字节子程序流程图
4.3按键程序设计
按键是用来查看上下报警温度值以及设定上下限报警温度的。
具体的程序流程图如图3-5所示。
图4-9按键程序流程图
五、实验设计结果
此次实验设计完成比较理想,仿真实验结果符合设计结果。
LCD1602能实时显示DS18B20检测到的温度。
当前温度超过设定的上下限温度报警值时,蜂鸣器和发光二极管能正常发出警报。
并且通过按键可以完成以下操作:
K1键:
查看上下限温度报警值。
K2键:
返回实时温度。
K3键:
上调温度上限值。
K4键:
下调温度下限值。
K5键:
上调温度下限值。
K6键:
下调温度下限值。
六、实验设计总结
此次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我们所学到的知识运用到实践中去。
在大学课堂的学习只是给我们灌输专业知识,而我们应把所学的知识应用到我们现实的生活中去。
这次的设计不仅使我们将课堂上学到的理论知识与实际应用结合了起来,而且使我们对电子电路、电子元器件、印制电路板等方面的知识有了更进一步的认识,同时在软件编程、相关软件的使用等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。
此次单片机设计也为我们以后进行更复杂的单片机系统设计提供了宝贵的经验。
本次设计的另一个重点就是软件程序的设计,其中需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论,有些东西是很难理解的,更谈不上掌握。
通过此次的综合设计,我们初步掌握了单片机系统设计的基本原理。
充分认识到理论学习与实践相结合的重要性,对于书本上的很多知识,不但要学会,更重要的是会运用到实践中去。
在以后的学习中,我们会更加注重实践方面的锻炼,多提高自己的动手实践能力。
七、实验设计程序
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P3^7;//ds18b20与单片机连接口
sbitRS=P2^5;
sbitRW=P2^6;
sbitE=P2^7;
sbitk=P1^0;
sbitk_=P1^1;
sbitk1=P1^4;
sbitk2=P1^5;
sbitk3=P1^6;
sbitk4=P1^7;
sbitled_red=P2^2;
sbitled_blue=P2^3;
sbitbeep=P3^0;
uintH,L,L1;
uintM,M1;
uintgw=40;
uintdw=10;
unsignedcharcodestr1[]={"temperature:
"};
unsignedcharcodestr2[]={""};
unsignedcharcodestr3[]={"HI:
"};
unsignedcharcodestr4[]={"LO:
"};
unsignedcharcodestr5[]={"-0123456789"};
uchardatadisdata[5];
uchardatadisbj[50];
uinttvalue;//温度值
uchartflag;//温度正负标志
ucharbjflag;//低温报警正负标志
/*************************lcd1602程序**************************/
voiddelay1ms(unsignedintms)//延时1毫秒(不够精确的)
{unsignedinti,j;
for(i=0;i for(j=0;j<100;j++); } voidwr_com(unsignedcharcom)//写指令// {delay1ms (1); RS=0; RW=0; E=0; P0=com; delay1ms (1); E=1; delay1ms (1); E=0; } voidwr_dat(unsignedchardat)//写数据// {delay1ms (1);; RS=1; RW=0; E=0; P0=dat; delay1ms (1); E=1; delay1ms (1); E=0; } voidlcd_init()//初始化设置// {delay1ms(15); wr_com(0x38);delay1ms(5); wr_com(0x08);delay1ms(5); wr_com(0x01);delay1ms(5);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 温度计 DS18B20 课程设计 报告 材料
![提示](https://static.bdocx.com/images/bang_tan.gif)