DS18B20测温系统课程设计任务书Word格式文档下载.docx
《DS18B20测温系统课程设计任务书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《DS18B20测温系统课程设计任务书Word格式文档下载.docx(26页珍藏版)》请在冰点文库上搜索。
温度是表示物体冷热程度的物理量,是一种最基本的环境参数,它与我们的日常生活及工农业生产都细细相关。
温度的测量已成为我们生产和生活中的需要,随着时代的进步和社会的发展,基于单片机控制的数字式温度计的应用越来越广泛,已经深入到生产和生活中的各个领域。
本设计介绍一种基于单片机控制的数字式温度计,采用单总线温度传感器测温和LED数码管显示,不仅测温准确,测量范围广,而且读数方便。
关键词:
单片机AT89S52;
温度传感器DS18B20;
LED数码管
1、绪论
随着微电子技术和计算机技术的发展,单片机微控处理器也有了突飞猛进的发展。
单片机微控处理无疑是人们的首选,它的优点也是不可否定的,如比体积小、耗电少、控制简单、可靠性好、成本低等优点。
其中基于8051单片机的数字温度计就是一个典型的例子。
人们对温度测量的要求越来越高,要为现代人工作、生活提供更好的、更方便的设施就需要从数单片机技术入手,向着数字化、智能化控制方向发展。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温准确和输出温度采用数码管显示等优点。
主要应用于家庭、生产车间和其它对温度测量要求比较准确的场所。
本设计使用控制器单片机AT89S52,使用测温传感器DS18B20,四位共阳极LED数码管显示实时温度,准确度达到0.1摄氏度。
2、总体方案设计分析
2.1、设计要求
本设计要求设计一个DS18B20测温系统。
要求如下:
1、编程读取DS18B20数据;
2、精度达0.1度,温度范围0-99度;
3、LED显示;
4、学习1-Wire总线协议方式。
2.2、总体设计框图
根据设计要求,设计总体的设计框图如图2.1所示。
控制器采用PDIP封装形式AT89S52,温度传感器为美国DALLAS公司生产的DS18B20,四位共阳LED数码管显示,外部5V电源供电。
图2.1总体设计框图
3、硬件电路设计
3.1、硬件基本知识介绍
单片机是单片微型计算机(SingleChipMicrocomputer)的简称,是将CPU、存储器、总线、I/O接口电路集成在一片超大规模集成电路芯片上,是典型的嵌入式微控制器。
单片机具有体积小、功能全、可靠性好、价格低廉的突出优点,因此单片机问世后便广泛应用于工业控制、仪器仪表、交通运输、通信设备、办公设备、家用电器等众多领域,使得许多领域的自动化水平和自动化程度得以大幅度提高,成为现代电子系统中最重要的智能化器件之一。
AT89S52是ATMEL公司生产的51系列单片机,是一种低功耗、高性能CMOS8位微控制器,具有8K系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash不仅允许程序存储器在常规编程器上编程,还适用于在线编程下载,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
1、8k字节Flash;
2、256字节RAM;
3、32位I/O口线;
4、看门狗定时器;
5、2个数据指针;
6、三个16位定时器/计数器;
7、一个6向量2级中断结构;
8、全双工串行口;
9、片内晶振及时钟电路。
另外,AT89S52的工作频率可降至0Hz静态逻辑操作,支持两种软件可选择节电模式:
空闲模式和掉电保护模式。
在空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作;
在掉电保护方式下,RAM内容被保存,振荡器停止振荡,单片机一切工作停止,直到下一个中断或硬件复位为止。
采用PDIP封装形式的AT89S52引脚图定义如图3.1所示。
图3.1AT89S52引脚定义
1、DS18B20数字温度传感器介绍
DS18B20数字温度传感器该是美国DALLAS公司生产的单总线器件,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
因此用DS18B20数字温度传感组成的测温系统,具有线路简单、测量精度高、硬件系统体积小等优点。
它使用一根总线通信,可以挂很多同样的数字温度计,实现多点温度测量,使测量误差大大减小,此外温度传感器可使用总线提供的电压来工作,可以在无法供给传感器电源的情况下使用,十分方便。
2、DS18B20数字温度传感器的特点
(1)只要求一个端口即可实现通信,工作电源:
3~5V/DC;
(2)在DS18B20中的每个器件上都有独一无二的序列号;
(3)实际应用中不需要外部任何元器件即可实现测温;
(4)测温范围-55℃~+125℃,固有测温分辨率0.5℃;
(5)数字温度计的分辨率用户可以从9位到12位选择;
(6)内部有温度上、下限告警设置。
3、DS18B20的引脚介绍
DS18B20有To-92和8-PinSOIC两种封装形式,本设计选用的是To-92封装形式的。
TO-92封装的DS18B20的引脚排列如图3.2所示,其引脚功能描述见表3.3。
表3.3DS18B20详细引脚功能描述
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
图3.2TO-92封装的DS18B20的引脚排列
4、DS18B20温度传感器的部分温度对应值如表3.4所示。
表3.4 部分温度对应值表
温度/℃
二进制表示
十六进制表示
+125
0000011111010000
07D0H
+85
0000010101010000
0550H
+25.0625
0000000110010000
0191H
+10.125
0000000010100001
00A2H
+0.5
0000000000000010
0008H
0000000000001000
0000H
-0.5
1111111111110000
FFF8H
-10.125
1111111101011110
FF5EH
-25.0625
1111111001101111
FE6FH
-55
1111110010010000
FC90H
5、DS18B20的1-Wire总线协议方式
(1)1-wire单总线是Maxim全资子公司Dallas的一项专有技术,与目前多数标准串行数据通信方式如SPI、I2C、MICROWIRE不同,它采用单根信号线既传输时钟又传输数据,而且数据传输是双向的。
它具有节省I/O口线资源,结构简单,成本低廉,便于总线扩展和维护等诸多优点。
(2)1-wire单总线适用于单个主机控制一个或多个从机设备的系统。
当只有一个从机位于总线上时,主机可按照单节点系统操作;
而当多个从机位于总线上时,系统按照多节点系统操作。
(3)由于DS18B20采用的就是这种1-Wire总线协议方式,即在一根数据线上实现数据的双向传输,而对AT89S52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的操作。
(4)由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的通信协议时序要求,来保证各位数据传输的正确性和完整性。
该协议定义了几种操作的时序:
初始化时序、写时序、读时序。
所有时序操作都是将单片机作为主机设备,单总线器件作为从机设备,而每一次命令和数据的传输都是从单片机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,单片机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
6、DS18B20的工作时序
(1)DS18B20的初始化时序
初始化时序如图3.3所示。
主机总线在t0时刻发送一低电平复位脉冲信号(最短为480us),接着在tl时刻释放总线并进入接收状态,DSl820在检测到总线的上升沿之后等待5~60us,接着DS1820在t2时刻发出一低电平存在脉冲(持续60~240us),低电平存在脉冲如图中虚线所示。
图3.3DS18B20的复位时序图
(2)DS18B20的写时序
主机总线在t0时刻从高拉至低电平时就产生写时间隙,从t0时刻开始15us之内,主机应将需要写入的数据位送到总线上,DSl820在t1后15~60us期间对总线进行采样。
若总线为低电平,则写入的位是0;
若总线为高电平,则写入的位是1。
若要求连续写入两位以上数据,那么两位数据之间的时间隙应大于1us,以保证数据的准确性。
DS18B20的写时序图如图3.4所示。
图3.4DS18B20的写时序图
(3)DS18B20的读时序
主机总线在t0时刻从高电平拉至低电平时,总线只须保持低电平7us之后在t1时刻将总线拉高,此时产生读时间隙。
读时间隙在t1时刻后,t2时刻前有效,t2距t0为15us,也就是说在t2时刻前主机必须完成读位操作,并在t0后的60us~120us内释放总线。
DS18B20的读时序图如图3.5所示。
图3.5DS18B20的读时序图
LED数码管是一种半导体发光器件,其基本单元是发光二极管。
7段LED数码管就是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,它可以显示“0~9”十个数字、小数点和一些简单的英文字母。
由于LED数码管具有颜色丰富、亮度高、功耗低、回应速度快等优点,因此,LED数码管广泛应用于各类仪器、仪表、家用电器等的数位显示电路。
现在市场上有很多种类的LED数码管,其中按显示数位上分可分为1位、2位、4位等数码管;
按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。
市售七段1位和4位LED数码管实物如图3.6所示。
图3.6市售1位和4位LED数码管实物图
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,其单元连接方式如图3.7
(1)所示。
共阳数码管在使用时应将COM接到正电源上,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,其单元连接方式如图3.7
(2)所示。
共阴数码管在应用时应将COM接到地(GND)上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
图3.7LED数码管内单元连接方式
数码管要正常工作显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们所需要的字符,因此根据数码管的驱动方式的不同,又可分为静态显示式和动态显示式两类。
(1)静态显示驱动
静态显示驱动也称直流显示驱动。
静态显示驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用译码器译码进行驱动。
它优点是编程简单、显示亮度高;
缺点是占用I/O端口多。
实际应用时须使用译码器进行驱动,这就增加了硬件电路的复杂性。
(2)动态显示驱动
动态显示驱动是单片机中应用最为广泛的一种显示方式之一。
动态显示驱动是将所有数码管的8个显示笔划“a、b、c、d、e、f、g、dp”的同名端连在一起,另外将每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制完成。
当单片机输出字符码时,所有数码管都接收到相同的字符码,单片机通过对位选通电路的控制,就可以使被选通的位显示出字符。
通过分时轮流控制各个数码管的选通,就可以使各个数码管轮流受控显示不同的字符,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,只要扫描的频率足够快,不会有闪烁感产生,但扫描频率过快也会使数码管显示亮度降低。
动态显示驱动能够节省大量的I/O端口,而且功耗更低。
动态显示驱动原理图如图3.8所示。
图3.87段LED动态显示驱动原理图
3.2、DS18B20温度传感器与单片机接口电路
DS18B20使用单总线协议工作,它与单片机的连接电路如图3.9所示。
图3.9DS18B20温度传感器与单片机接口电路
3.3、7段LED数码管与单片机接口电路
由于单片机I/O端口带负载能力的限制,在I/O端口与7段LED数码管之间加入一级驱动电路,以保证单片机有足够的功率驱动数码管正常工作。
本设计采用动态显示方式驱动数码管,所使用的驱动芯片为8D锁存器74LS573,由三极管2AS1015组成了数码管的位选通电路,7段LED数码管与单片机接口电路图如图3.10所示。
图3.107段LED数码管与单片机接口电路
注:
完整的系统硬件电路原理图及模拟硬件电路图如附录Ⅰ所示。
4、软件设计
4.1、KeilμVision3
单片机开发中除必要的硬件外,同样离不开开发软件,来完成系统程序的编写、编译、调试。
本设计所使用的开发软件是KeilμVision3,Keil软件是目前最流行开发MCS-51系列单片机的软件之一,软件开发界面如图4.1所示。
图4.1KeilμVision3。
软件开发界面
我们使用汇编语言编写的源程序要编译为单片机可执行的机器码,生成“.HEX”或“.BIN”文件,再烧写入单片机的程序存储器中才能运行。
编译机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了,大都使用机器汇编。
机器汇编是通过汇编软件将源程序变为机器码,MCS-51单片机早期使用汇编软件A51进行汇编,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行的开发MCS-51系列单片机的软件,这一点从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
KeilC51是51系列兼容单片机C语言软件开发系统,它提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解,在开发大型软件时更能体现高级语言的优势。
uVision的主要构成如图4.1所示,大致描述了uVision所提供的工作环境和用户的基本操作流程。
图4.2uVision所提供的工作环境和用户的基本操作流程。
4.2、DS18B20测温系统的程序设计
1、主程序流程图如图4.2所示。
图4.2主程序流程图
2、初始化DS18B20子程序流程图如图4.3所示。
图4.3初始化DS18B20子程序流程图
3、读取温度值子程序如图4.4所示。
图4.4读取温度值子程序流程图
4、温度读取转换子程序如图4.5所示。
图4.5温度读取转换子程序流程图
5、温度显示子程序如图4.6所示。
图4.6温度显示子程序流程图
1、初始化单片机RAM子程序
INIT:
MOVR0,#7FH
CLRA
II:
MOV@R0,A
DJNZR0,II
MOVSP,#07H
LJMPSTART
以上为初始化单片机的RAM程序,它的作用是在单片机上电复位时,将RAM单元内的杂乱数据清零,比如清除显示缓存区,温度数据缓存区等,保证程序更稳定地运行。
2、初始化DS18B20子程序
INIT_18B20:
SETBPORT
NOP
NOP
CLRPORT
MOVR0,#0FAH
DJNZR0,$
SETBPORT
MOVR0,#19H
INI2:
JNBPORT,INI3
DJNZR0,INI2
CLRFLAG
LJMPINI4
INI3:
SETBFLAG
MOVR0,#64H
INI4:
RET
初始化DS18B20子程序按照初始化时序要求编写,初始化过程如下:
首先拉低总线发送长度为500us复位脉冲(最短为480us的低电平信号),接着释放总线并进入接收状态,DSl8B20在检测到总线的上升沿之后等待15~60us发出存在脉冲(低电平持续60~240us)。
若单片机检测到存在脉冲,则子程序返回,否则继续等待。
3、读取温度子程序
GET_TEMP:
LCALLINIT_18B20
MOVA,#0CCH
LCALLWRITE_18B20
MOVA,#44H
LCALLDISP
LCALLINIT_18B20
MOVA,#0CCH
MOVA,#0BEH
LCALLREAD2_18B20
RET
首先判断总线上是否有传感器存在,若没有则子程序返回,若有则依次写入跳过ROM指令、温度转换指令和温度读取指令将温度数据读取到指定的缓存区中。
其中跳过ROM指令作用是可以快速地对传感器中的ROM进行操作,快速地读取到温度数据,提高了温度测量速度;
温度转换指令的写入和温度数据的读出部分是分别通过调用WRITE_18B20(读)、READ2_18B20(写)子程序来完成,它们实际上是一段按位发送,按位读取的子程序,它的发送和读取是按照DS18B20读、写的时序要求编写,具体程序详见附录Ⅱ。
4、温度读取转换子程序
CHANGE:
MOVA,#0CH
MOV30H,A
MOVDPTR,#DOT
MOVA,21H
ANLA,#0FH
MOVCA,@A+DPTR
MOVB,#10
DIVAB
MOV31H,A
MOVA,20H
SWAPA
ANLA,#0F0H
MOV20H,A
MOVA,21H
SWAPA
ADDA,20H
MOVB,#10
MOV32H,B
MOV33H,A
RET
温度数据转换子程序作用是将读取来的温度数据转换为按十位、个位和小数位分开的三个字节的十进制数据,其转换过程如下:
先处理小数位,将它转换成十进制代码后存入显示缓存区的31H单元,接着将十位和个位数据取出转换为十进制代码后存入33H和32H,最后再将摄氏度符号“C”的地址偏移量存入30H,为后面温度显示作准备。
5、显示子程序
DISP:
MOVR0,#30H
MOVR1,#7FH
ST1:
MOVA,@R0
MOVDPTR,#TAB
CJNER0,#32H,NODOT
ANLA,#7FH
NODOT:
MOVP0,A
MOVA,R1
MOVP2,A
MOVR7,#0FFH
DJNZR7,$
INCR0
JNBACC.4,ST2
MOVP2,#0FFH
RRA
MOVR1,A
LJMPST1
ST2:
MOVP2,#0FFH
显示程序主要由LED段代码转换、数码管扫描部分和小数点叠加部分组成,LED段代码转换部分采用查表的方式将十进制温度数据转换为LED段代码。
扫描数码管部分程序始终按照显示缓存区的首地址逐个将十进制温度数据转换为对应的LED段代码,送往对应显示位的数码管进行显示。
小数点叠加部分程序将小数点显示到个位数码管上。
为了使DS18B20测温系统能在更低和更高的温度下也能正常测量,本设计对原设计要求进行了程序升级,现在的系统测量温度范围为:
-55℃~+125℃,测量精度为0.1℃,完整程序详见附录Ⅱ。
5、综合调试
1、对照硬件原理图,搭接硬件系统。
硬件实物图如图5.1、图5.2所示。
2、焊接完成后,在插单片机前进行了通电测试,各测试位置的电压及电流均在正常的偏差范围内。
3、将程序烧写进单片机内,插到芯片座上,通电观察,系统并未按照预想的结果那样直接读出环境温度,经检测各个I/O端口电平状态发现LED数码管在准备焊接元件时拿错了,设计图纸是按照共阳的设计的,而焊接时误用了共阴的。
将共阴数码管拆下改换成共阳数码管后,再次进行各项检测通过后,插上单片机,系统工作正常。
图5.1硬件实物图正面
图5.2硬件实物图背面
4、将系统显示的温度值与所处相同环境下标准液体温度计温度值进行比较,所测温度基本相同。
由上述调试现象可知,系统达到设计要求。
总结及课设体会
为期5周的单片机综合训练结束了,本次综合实训完成了基于单片机控制的DS18B20测温系统的设计制作,从原理图的绘制、元器件的选择到最后的焊接,都是我们自己独立完成的。
可以说系统很简单但这其中却涵概了许多内容,这就需要熟悉和掌握很多相关知识,同时还要将所设计的系统通过硬件电路真正的实现。
于是图书馆和网络就成了我很好的助手。
在查阅资料的过程中,我学会了判断优劣、取舍相关知识方法,不知不觉中我的查阅资料能力也得到了很好的提高。
我们学习的知识是有限的,在以后的工