基于AT89C51单片机的数字温度计设计.docx
- 文档编号:8443081
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:20
- 大小:166.93KB
基于AT89C51单片机的数字温度计设计.docx
《基于AT89C51单片机的数字温度计设计.docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的数字温度计设计.docx(20页珍藏版)》请在冰豆网上搜索。
基于AT89C51单片机的数字温度计设计
编号:
本科毕业论文
基于AT89C51单片机的数字温度计
摘要
温度是生产过程和科学实验中非常关键的一项物理量,在日常生活、农业、工业、各种高新技术的开发和研究中也是一个非常普遍和常用的参数,许多地方都要使用温度计对温度进行测量。
随着人们生活水平的不断提高,对于温度计的要求也越来越高,使之能为人们的工作、科研、生活提供更好、更方便的服务。
传统的测温元件有热电偶和热电阻,而热电偶和热电阻测出的一般都是电压,再转换成对应的温度值,这些方法相对比较复杂,需要比较多的外部硬件支持。
现在温度计向着数字化、智能化方向发展。
本文采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件,可以设计一种相对比较简单的方式来测量温度。
DS18B20可以直接读出被测温度值,具有低成本和易使用的特点。
在数字温度计电路中设计了一种基于单片机AT89C51芯片的一种温度测量及报警电路。
硬件电路采用数字温度传感器DS18B20来测量温度,将温度值转换成相应的数字量传给单片机,经单片机AT89C51芯片处理后使用1602LCD液晶模块显示出具体的温度值。
在系统软件方面主要通过用C语言编程实现对各个电路的控制。
数字温度计主要是对温度进行采集、显示,所以系统软件程序主要包括主程序、读出温度子程序、计算温度子程序、显示温度子程序等几大块。
单片机通过软件可以控制各个硬件电路间数据的处理。
电路中可以设置温度报警上下限,超过上限或低于下限时可以自动报警。
关键词:
1602LCD液晶模块;DS18B20数字温度传感器;AT89C51
Abstract
Thetemperatureisverycriticalintheproductionprocessandscientificexperimentsaphysicalquantity,indailylife,agriculture,industry,andavarietyofhigh-techdevelopmentandresearchisaverycommonandfrequentlyusedparameters,manyplaceshavetousethethermometertotemperaturemeasurements.Withthecontinuousimprovementofpeople'slivingstandard,therequirementsofthethermometerisalsogettinghigherandhigher,soforthepeople'swork,scientificresearch,lifetoprovidebetterandmoreconvenientservices.Traditionalcomponentsofthetemperaturethermocoupleandthermalresistance,thermocoupleandthermalresistancearegenerallymeasuredvoltage,convertedtothecorrespondingtemperaturevalue,thesemethodsarerelativelycomplex,requiringmoreexternalhardwaresupport.Thermometertowarddigital,intelligentdirection.
Inthispaper,animprovedsmarttemperaturesensorDS18B20DALLASSemiconductor,followingtheDS1820afterthelaunchofthedetectiondevices,andcandesignarelativelysimplewaytomeasurethetemperature.DS18B20canbedirectlyreadoutthemeasuredtemperaturevalue,low-costandeasytousefeatures.DigitalthermometercircuitdesignbasedonatemperaturemeasurementandalarmcircuitofAT89C51chip.ThehardwarecircuitusingadigitaltemperaturesensorDS18B20tomeasurethetemperature,thetemperaturevalueisconvertedintothecorrespondingdigitalpassmicrocontrollerAT89C51chipprocessing1602LCDmoduledisplaysaspecifictemperature.SystemsoftwarebyusingtheCprogramminglanguagetoachievecontrolofeachcircuit.Digitalthermometerfortemperatureacquisition,display,systemsoftwareprogramincludesthemainprogram,readoutthetemperaturesubroutinetocalculatetemperaturesubroutineshowthatthetemperaturesubroutineseverallargepieces.SCMsoftwarecancontroltheprocessingofthedatabetweenthevarioushardwarecircuit.Temperaturealarmcircuitcanbesettothelowerlimitexceedsthelimitorbelowthelowerlimitcanautomaticallyalarm.
Keywords:
1602LCDmodule;DS18B20digitaltemperaturesensor;AT89C51
1绪论
1.1数字温度计研究背景
温度是我们日常生活和生产中经常接触到的物理量,但是它是看不到的。
最早的温度计是在1593年由意大利科学家伽利略(1564~1642)发明的。
后来又相继出现华氏温度计、列式温度计、摄氏温度计,均用水银和酒精等制作,传统意义上的温度计测温精度不高,而且现在世界上大多数国家统一使用摄氏温度计。
随着科学技术的发展和现代工业生产的需要,测温技术也在不断地改进和提高。
由于测温范围变得越来越广,根据不同的测温精度要求,又制造出不同需要的测温仪器:
气体温度计、电阻温度计、温差电偶温度计、高温温度计等。
在测温电路中可以使用热敏电阻之类的器件利用其感温效应,将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,电路设计比较复杂[1]。
数字温度计恰恰是以读数方便、准确的特点进入我们的生活。
随着温度感应元件灵敏度的增强,数字温度将会渐渐取代普通的温度计。
数字温度计是通过一定的电路和温度传感器进行测量,将温度用数字准确的显示出来。
数据显示比较直观而且测量精度比较高,测温范围也比较大。
1.2数字温度计研究目的和意义
温度测量在物理实验、医疗卫生、食品生产等领域有特别重要的意义。
传统所使用的温度计通常都是精度为1℃和0.1℃的水银、煤油或酒精温度计。
这些温度计的刻度间隔通常都很密,不容易准确分辨,读数困难,而且他们的热容量还比较大,达到热平衡所需要的时间较长,因此很难读准温度值,并且使用非常不方便。
数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温准确、其输出温度采用数字显示等优点,主要用于日常生活和科研实验中测温比较准确的场所。
数字温度计采用温度传感器DS18B20作为测温元件。
DS18B20是DALLAS公司生产的一线式数字温度传感器,温度测量范围为-55℃~+125℃,测温分辨率可达0.0625℃,被测温度用扩展的16位数字量方式串行输出。
多个DS18B20可以接在一根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路[2]。
数字温度计设计采用温度传感器DS18B20测量出环境的温度,通过核心器件单片机AT89C51处理数据,最后用LCD液晶模块显示数值,并且可以设定报警温度。
如果测量温度在设定范围之外,发出报警信号。
1.3数字温度计研究主要工作
利用数字温度传感器DS18B20设计了一种基于单片机的数字温度测量系统,测量的结果使用1602LCD液晶模块直接显示出来。
主要工作如下:
1.温度测试基本范围-55℃~+125℃。
2.精度误差小于±0.5℃。
3.LCD液晶显示。
4.可以设定温度的上下限报警功能(上限120℃,下限-50℃)。
当温度超过上限温度时红灯亮起并且发出急促的报警声,当温度低于下限温度时黄灯亮起并且发出低沉的报警声。
2系统硬件电路设计
2.1数字温度计总体设计方案
数字温度计的总体设计方案如图2-1所示,主控制器采用单片机AT89C51,温度传感器采用DS18B20,用1602LCD液晶模块实现温度显示。
图2-1总体设计方框图
2.2电源设计
如图2-2电源设计原理图所示将220V交流电压经过调压、整流、滤波以后变成5V直流电压。
AC2为外接220V电源接口,经过TRAN1变压成为9V电源。
9V的直流电源经过7805稳压电路调节和滤波电路后输出稳定的+5v直流电源[3]。
图2-2电源设计原理图
2.3主控制器AT89C51
2.3.1单片机AT89C51结构和性能
AT89C51是美国ATMEL公司生产的低功耗,高性能8位微处理器,片内含4k字节的可反复擦写1000次的Flash只读程序存储器。
器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及引脚相兼容。
AT89C51功能强大、低价位并且可灵活应用于各种控制领域[4]。
AT89C51芯片的主要性能特点[5]:
1、4kBytesFlash片内程序存储器;
2、128bytes的随机存取数据存储器(RAM);
3、32个外部双向输入/输出(I/O)口;
4、5个中断优先级、2层中断嵌套中断;
5、两个外部中断源;
6、2个16位可编程定时器/计数器;
7、全双工串行通信口;
8、看门狗(WDT)电路;
9、片内振荡器和时钟电路;
10、与MCS-51兼容;
13、可编程串行通道;
14、低功耗的闲置和掉电模式;
15、4.5-5.5v工作电压。
2.3.2AT89C51管脚说明
AT89C51芯片的引脚图[6]如图2-3。
图2-3AT89C51引脚图
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收、输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,作为输入。
因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3.3
(外部中断1)P3.7
(外部数据存储器读选通)。
RST:
复位信号输入端,高电平有效。
:
功能为内外程序存储器选择控制端。
当引脚为高电平时,单片机访问片内程序存储器。
引脚为低电平时,单片机则访问外部程序存储器。
XLAT1:
片内振荡器反相放大器和时钟发生器的输入端。
XLAT2:
片内振荡器反相放大器的输出端。
2.3.3单片机晶振电路和复位电路
单片机系统里都含有晶振电路和复位电路,他们在单片机系统里作用非常大。
晶振电路结合单片机内部电路产生单片机正常运行所需要的时钟频率,单片机一切指令的执行都依靠单片机晶振电路提供的时钟频率。
单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。
单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,复位电路内部的会让系统复位[7]。
晶振电路和复位电路与单片机接口如图2-4所示
图2-4晶振电路和复位电路
2.4DS18B20
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
2.4.1DS18B20引脚功能
图2-5DS18B20引脚图
DS18B20详细引脚功能描述如表2-1
表2-1DS18B20详细引脚功能描述
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
2.4.2DS18B20性能特点
DS18B20的性能特点如下[8]:
1.采用单总线技术,与单片机通信只需要一根I/O线,在一根线上可以挂接多个DS18B20。
2.每只DS18B20具有一个独有的,不可修改的64位序列号,根据序列号访问地应的器件。
3.5V低压供电,可以本地供电,也可以采用寄生电源方式。
4.测温范围为-55℃~+125℃,在-10℃~85℃范围内误差为±0.5℃。
5.可编辑数据为9~12位。
6.用户可自设定报警上下限温度。
7.DS18B20可将检测到温度值直接转化为数字量,并通过串行通信的方式与主控制器进行数据通信。
2.4.3DS18B20测温原理
DS18B20其内部结构框图如图2-6所示。
图2-6DS18B20内部结构
64位ROM结构的开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
温度报警触发器TH和TL,可通过软件写入用户报警上下限。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为9字节的存储器,结构如图2-7所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝是易失的,每次上电复位时被刷新。
第5个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
该字节各位的定义如图2-7所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,用来设置分辨率[9]。
温度LSB
温度MSB
TH用户字节1
TL用户字节2
配置寄存器
保留
保留
保留
CRC
TM
R1
R0
1
1
1
1
1
图2-7DS18B20字节定义
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据以0.0625℃/LSB形式表示。
由表2-2可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。
表2-3是部分温度值对应的二进制温度数据。
DS18B20的测温原理是这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1和温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置值将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。
其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值等于被测温度值[10]。
表2-2DS18B20温度转换时间表
R1
R0
分辨率/位
转换精度
温度最大转换时间/ms
0
0
9
0.5
93.75
0
1
10
0.25
187.5
1
0
11
0.125
375
1
1
12
0.0625
750
表2-3部分温度对应值表
温度/℃
二进制表示
十六进制表示
+125
0000011111010000
07D0H
+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
FE6FH
-55
1111110010010000
FC90H
另外,由于DS18B20单线通信功能是分时序完成的,它有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作按协议进行。
操作协议为:
初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据[11]。
2.4.4DS18B20温度传感器与单片机的接口电路
DS18B20与单片机的接口电路如图2-8。
图2-8DS18B20与单片机的接口电路
DS18B20可以采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,0脚接电源。
为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉。
由于单线制只有一根线,因此发送接口必须是三态的。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:
初始化时序、读时序、写时序。
所有时序都是将单片机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从单片机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,单片机需启动读时序完成数据接收。
DS18B20在启动温度转化命令后将测量的温度值存储在高速暂存RAM中,单片机再通过读取温度值指令读取高速暂存RAM中的9字节内容进行温度计算[12]。
DS18B20的三条控制命令,指令约定代码操作说明:
CCH:
跳过扫描温度传感芯片序列号;44H:
启动DS18B20进行温度转换;BEH:
读度温度值[13]。
DS18B20的复位时序:
(1)先将数据线置高电平“1”;
(2)延时(该时间要求的不是很严格,但是尽可能的短一点);
(3)数据线拉到低电平“0”;
(4)延时750微秒(该时间的时间范围可以从480到960微秒);
(5)数据线拉到高电平“1”;
(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制);
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒;
(8)将数据线再次拉高到高电平“1”后结束。
DS18B20的读时序:
对于DS18B20的读时隙分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从单片机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。
DS18B20在完成一个读时序过程,至少需要60us才能完成。
(1)将数据线拉高“1”;
(2)延时2微秒;
(3)将数据线拉低“0”;
(4)延时15微秒;
(5)将数据线拉高“1”;
(6)延时15微秒;
(7)读数据线的状态得到1个状态位,并进行数据处理;
(8)延时30微秒。
DS18B20的写时序:
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
总线单片机使用写“1”时间隙向DS18B20写入逻辑1,使用写“0”时间隙向DS18B20写入逻辑0。
所有的写时隙必须有最少60us的持续时间,相邻两个写时隙必须要有最少1us的恢复时间。
两种写时隙都通过单片机拉低总线产生。
对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
(1)数据线先置低电平
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C51 单片机 数字 温度计 设计