数字式温度测量电路的设计.docx
- 文档编号:27956172
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:28
- 大小:268.11KB
数字式温度测量电路的设计.docx
《数字式温度测量电路的设计.docx》由会员分享,可在线阅读,更多相关《数字式温度测量电路的设计.docx(28页珍藏版)》请在冰豆网上搜索。
数字式温度测量电路的设计
泰山职业技术学院
毕业设计(论文)
题目:
数字式温度测量电路设计
系部:
汽车电子工程系
专业:
应用电子
学号:
********
*******
职称:
指导老师
二OO年月日
泰山职业技术学院
毕业论文(设计)任务书
课题名称:
数字式温度测量电路设计
系部:
汽车与电气工程系_________
专业:
应用电子_________________
******___________________
学号:
_________________________
*******_____________________
二〇〇年月日
一、毕业论文(设计)的目的与要求:
1.测控范围-50℃~150℃
2.误差小于0.2℃
3.非线性度小于0.2%
4.功耗小于5W
5.主要部件采用中大规模集成芯片,数字显示读数。
二、毕业论文(设计)的内容:
1.方案总体设计
2.控制系统硬件电路设计
3.软件流程图设计,汇编程序编写
4.电气原理图的绘制
三、毕业论文(设计)进程的安排
序号
论文(设计)各阶段名称
日期
备注
四、任务执行日期:
自_______年_______月_______日起,至________年_______月_______日止。
学生(签字)__________
指导教师(签字)__________
系主任(签字)__________
摘要
温度是一种最基本的环境参数,人们生活与环境温度息息相关,在工业生产过程中需要实时测量温度,在工业生产中也离不开温度的测量,因此研究温度的测量方法和控制具有重要的意义。
本设计是一款简单实用的小型数字温度计,所采用的主要元件有传感器18B20,单片机AT89S52,,四位共阴极数码管一个,电容电阻若干。
本次数字式温度测量计的设计共分为五部分,主控制器,LED显示部分,传感器部分,复位部分,时钟电路。
本论文首先是对其工作原理进行了叙述,然后对其各个电路进行分析与设计,最后完成整个系统的设计。
【关键词】数字式温度测量电路、单片机、AT89C52、温度传感器、DS18B20
Digitaltemperaturemeasurementcircuitdesign
Author:
Directedby:
Abstract:
Thetemperatureisabasicenvironmentalparametersofpeople'slivesarecloselyrelatedtotheambienttemperatureinindustrialprocessesrequirereal-timemeasurementsoftemperature,isalsoinseparablefromthetemperaturemeasurementinindustrialproductionoftemperaturemeasurementandcontrolofimportantsignificance.
Thisisasimpleandpracticaldesignsmalldigitalthermometer,themaincomponentsofthesensor18B20MCUAT89S52is,fourdigitalcathodetubeone,capacitiveresistanceofcertainThedesignofthedigitaltemperaturegaugeisdividedintofiveparts,themaincontroller,LEDdisplay,sensorparts,resetpartoftheclockcircuit.Firstly,itsworkingprincipleisdescribedanditsvariouscircuitanalysisanddesign,tofinalizethedesignoftheentiresystem.
Keywords:
Microcontroller,AT89C52,temperaturesensor,DS18B20
第一章概述
1.1电路功能和组成
数字式测量电路应具有下列基本功能;
1、能把温度转换为成比列的模拟电信号(电流或电压等)。
2、把模拟电信号变换成数字信号。
3、最后用过数字电路(计数、译码和显示)直接指示出温度值。
根据上述基本功能的要求,可画出数字式测温电路的方框图,如图1所示。
它主要包括;温度变换处理器、A/D转换器和计数、译码、显示三大部分。
由图可以看出,在电路组成上数字式测温电路与其它数字式测量电路(比如数字式电压表等),有许多相同之处,差别仅在于测温电路多了温度变换和处理部分,这部分的作用是;
1、要把温度(非电量)转换成与之成比例的电信号
2、对转换后的电压进行线性化,零点校正等处理并加以放大。
图1数字式温度测量电路组成框图
同其它数字式测量电路一样,A/D转换器也是数字式测量电路的核心组成部分。
1.2设计方案的考虑
为了实现图1所示各方框的功能,可以有很多种不同的方法,设计时应根据不同的设计要求和具体的情况进行选择。
1、温度变换电路
关键是确定温度传感器,常用的传感器有热电偶,铂电阻,半导体热敏电阻等。
它们有各自的性能和应用范围,比如热电偶适于高温测量(常用于500°C以上的温度范围)而热敏电阻比较低,常用于温度低于200°C的场合。
近年来集成温度传感器已被广泛采用。
它的主要优点是测温精度高,重复性好。
线性优良,使用方便且适于远距离传送。
不足之处是它的适用温度范围不是很宽。
电压放大电路应有高的共模仰制比、低噪声个高输入电阻、这样才能对传感器输出的微弱电压进行有效的放大,采用测量放大器电视最理想的方法。
2、A/D转换器
利用V/F转换器实现A/D转换。
该方法的有点是转换精度高、电路简单、成本较和抗干扰能力强,尤其适于在转换速度不高又需要远距离信号传输的场合下应用。
3、计数、译码和显示电路
这部分内容在数字电子电路课程中都已进行了详细的讨论,本设计电路也没有其它特殊要求,但应注意的是要在固定时间内对A/D转换后的数字量进行计数。
根据以上对组成功能块的初步讨论,可以画出温度测量电路较为详细的方框图,见图2所示,图中增加了一个控制门电路,由它产生一个门控信号(时序脉冲),只有在其脉冲宽度内才允许计数器计数,这样才能实现上述的在固定时间内对数字信号进行计数的要求。
为了实现精确的温度测量,要求这个门控信号的脉冲宽度要十分精确和稳定。
图2数字式温度计组成方框图
1.3设计要求
1、技术指标
(1)测量范围:
-50°C~+150°C。
(2)测量精度:
误差<0.2%。
(3)非线性度:
<0.2%。
(1)主要部件采用中、大规模集成电路芯片。
(3)功耗小(<5W)
2、设计内容
(1)数字式温度计组成方框图,确定设计方案。
(2)分析各单元电路的工作原理和特性,并有必要的计算。
(3)说明主要集成电路芯片的功能、特点和基本工作原理。
(4)简述测量电路的调试方法。
(5)绘出完整的电路图。
(6)完成设计说明书
第二章、软件设计
1、系统总体方案设计
本次课程设计采用的是protues软件仿真,用Keil软件进行编译。
Protues软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
软件部分由主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。
开始
初始化
调显示子程序
得出温度总子程序
返回
图1主程序流程
2、主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度,其程序流程见图3-1所示。
3、读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图3-2所示
图2读出温度子程序流程
4、二进制转换BCD码命令子程序
二进制转换BCD码命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
二进制转换BCD码命令子程序流程图,如图4
图4二进制转换BCD码流程图
5、计算温度子程序
将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图5所示。
图5 测量温度流程图
6、温度数据显示子程序
显示数据子程序主要是对显示缓冲器中的示数据进行刷新操作,查表送段码至LED,开位码显示,采用动态扫描方式。
7、实验仿真
图6
系统仿真图如图6所示,没有加上复位电路和时钟电路,这是protues的一个缺陷,在没有全部电路的情况下依然能够进行仿真。
调试结果分析:
本次数字温度计能够比较精确的测量一般温度,测量范围是-55~160,并且能够测出小数。
8、系统原理图
复位电路时钟电路
显示电路
单片机设计
P0口上拉电阻温度传感器
第三章、源程序代码
;*************************************************
;DS18B20的读写程序,数据脚P3.4*
;显示数据通过P1口传输,P3.0控制小数位的显示*
;P3.1控制个位的显示,P3.2控制十位的显示*
;P3.3控制百位的显示,P3.1控制小数点的显示*
;显示温度-55到+125度,显示精度为0.1度*
;显示采用4位LED共阴显示测温值*
;*************************************************
TEMPER_LEQU40H;用于保存读出温度的低8位
TEMPER_HEQU41H;用于保存读出温度的高8位
FLAG1EQU38H;是否检测到DS18B20标志位
TEMPLEQU30H;用于保存读出正确温度值的低8位
TEMPHEQU31H;用于保存读出正确温度值的高8位
TEMPHCEQU32H;温度转换寄存器低8位
TEMPLCEQU33H;温度转换寄存器高8位
BUF1EQU34H;显示缓冲寄存器小数位
BUF2EQU35H;显示缓冲寄存器个数位
BUF3EQU36H;显示缓冲寄存器十数位
BUF4EQU37H;显示缓冲寄存器百数位
TEMPDINBITP3.4;数据脚定义
DINBITP3.1;小数点控制
;**********************************************
ORG0000H;主程序入口地址
AJMPMAIN;转主程序
ORG0003H;外中断0中断入口
DB00H,00H,00H,00H,00H,00H,00H;
RETI;跳至INTEX0执行中断服务程序
ORG000BH;定时器T0中断入口地址
DB00H,00H,00H,00H,00H,00H,00H;
RETI;跳至定时器T0执行中断服务程序
ORG0013H;外中断1中断入口
DB00H,00H,00H,00H,00H,00H,00H;
RETI;跳至INTEX1执行中断服务程序
ORG001BH;定时器T1中断入口地址
DB00H,00H,00H,00H,00H,00H,00H;
RETI;中断返回(不开中断)
ORG0023H;串行口中断入口地址
DB00H,00H,00H,00H,00H,00H,00H;
RETI;中断返回(不开中断)
;**********************************************
;两位数码管来显示温度,显示范围00到99度,显示精度为1度
;因为12位转化时每一位的精度为0.0625度,我们不要求显示小数所以可以抛弃29H的低4位
;将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度
;无需乘于0.0625系数
;**********************************************
MAIN:
MOVSP,#50H;设置堆栈
MOVP1,#0FFH;
LPTEMP:
LCALLGET_TEMPER;调用读温度子程序
LCALLCONVTEMP;温度BCD码计算处理子程序
LCALLDISPBCD;显示区BCD码温度值刷新子程序
MOVP0,TEMPLC
MOVP2,TEMPHC
;*************************************
LCALLDISPLAY;调用数码管显示子程序
;*************************************
AJMPLPTEMP;循环
;*************************************
;这是DS18B20复位初始化子程序
;*************************************
INIT_1820:
SETBTEMPDIN
NOP
CLRTEMPDIN;主机发出延时537微秒的复位低脉冲
MOVR1,#3
TSR1:
MOVR0,#107
DJNZR0,$
DJNZR1,TSR1
SETBTEMPDIN;然后拉高数据线
NOP
NOP
NOP
MOVR0,#25H;延时
TSR2:
JNBTEMPDIN,TSR3;等待DS18B20回应
DJNZR0,TSR2
LJMPTSR4;DS1820不存在
TSR3:
SETBFLAG1;置标志位,表示DS1820存在
CLRP3.7;检查到DS18B20就点亮P3.7LED
LJMPTSR5
TSR4:
CLRFLAG1;清标志位,表示DS1820不存在
CLRP3.1
LJMPTSR7
TSR5:
MOVR0,#117
TSR6:
DJNZR0,TSR6;时序要求延时一段时间
TSR7:
SETBTEMPDIN;结束
RET
;****************************************
;读出转换后的温度值
;****************************************
GET_TEMPER:
SETBTEMPDIN;
LCALLINIT_1820;先复位DS18B20
JBFLAG1,TSS2
RET;判断DS1820是否存在?
若DS18B20不存在则返回
TSS2:
CLRP3.6;DS18B20已经被检测到!
!
MOVA,#0CCH;跳过ROM匹配
LCALLWRITE_1820
MOVA,#44H;发出温度转换命令
LCALLWRITE_1820
;*****************************************
;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒
;*****************************************
LCALLDISPLAY;显示温度
;*****************************************
LCALLINIT_1820;准备读温度前先复位
MOVA,#0CCH;跳过ROM匹配
LCALLWRITE_1820
MOVA,#0BEH;发出读温度命令
LCALLWRITE_1820
LCALLREAD_18200;将读出的温度数据保存到35H/36H
RET
;*******************************************
;写DS18B20的子程序(有具体的时序要求)
;*******************************************
WRITE_1820:
MOVR2,#8;一共8位数据
CLRC;C清0
SETBTEMPDIN;/
NOP;/
NOP;/
WR1:
CLRTEMPDIN;
MOVR3,#6;延时
DJNZR3,$
RRCA;数据右移
MOVTEMPDIN,C;写入一位数据
MOVR3,#23;延时
DJNZR3,$
SETBTEMPDIN;拉高数据端口
NOP
DJNZR2,WR1;判断是否写完
SETBTEMPDIN;拉高数据端口
RET
;*************************************
;处理温度BCD码子程序
;*************************************
CONVTEMP:
MOVA,TEMPH;
ANLA,#80H;判断最高位
JZTEMPC1;判断温度是否在零下?
CLRC;温度值补码变成原码
MOVA,TEMPL;
CPLA
ADDA,#01H;
MOVTEMPL,A;
MOVA,TEMPH;-
CPLA;
ADDCA,#00H;
MOVTEMPH,A;TEMPHCHI=符号位
MOVTEMPHC,#0BH;置"-"标志
SJMPTEMPC11;
TEMPC1:
MOVTEMPHC,#0AH;置"+"标志不显示
;**************************************
TEMPC11:
MOVA,TEMPHC;计算小数位温度BCD值
SWAPA
MOVTEMPHC,A;
MOVA,TEMPL;
ANLA,#0FH;乘0.0625
MOVDPTR,#TEMPDOTTAB;
MOVCA,@A+DPTR;
MOVTEMPLC,A;TEMPLCLOW=小数部分BCD
;**************************************
MOVA,TEMPL;计算整数位温度BCD值
ANLA,#0F0H;
SWAPA;
MOVTEMPL,A;
MOVA,TEMPH;
ANLA,#0FH;
SWAPA;
ORLA,TEMPL;
MOVTEMPER_L,A;//
LCALLHEX2BCD1;调用单字节十六进制转BCD子程序
;************************************
MOVTEMPL,A;
ANLA,#0F0H;
SWAPA;
ORLA,TEMPHC;TEMPHCLOW=十位数BCD
MOVTEMPHC,A;
MOVA,TEMPL;
ANLA,#0FH;
SWAPA;TEMPLCHI=个位数BCD
ORLA,TEMPLC;
MOVTEMPLC,A;
MOVA,R7;
JZTEMPOUT;
ANLA,#0FH;
SWAPA;
MOVR7,A;
MOVA,TEMPHC;TEMPHCHI=百位数BCD
ANLA,#0FH;
ORLA,R7;
MOVTEMPHC,A;
TEMPOUT:
RET;
;**************************************
;小数部分分码表
**************************************
TEMPDOTTAB:
DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06H
DB06H,07H,08H,08H,09H,09H;
*************************************
;显示区BCD码温度值刷新子程序
;**************************************
;温度暂存器内的2字节中,高字节的低半字节和低字节的高半字节组成一个字节,
;这个字节的二进制值转换为十进制后,就是温度值的百、十、个位值,而剩下的低字节化为
;十进制后,就是温度值的小数部分.
;**************************************
DISPBCD:
MOVA,TEMPLC;温度数据移入显示寄存器
ANLA,#0FH;取低字节的低4位(小数部分)
MOVBUF1,A;小数部分放入寄存器
MOVA,TEMPLC;取低字节的高4位(个位数)
SWAPA;
ANLA,#0FH;
MOVBUF2,A;个位数放入寄存器
MOVA,TEMPHC;取高字节的低4位(十位数)
ANLA,#0FH;
MOVBUF3,A;十位数放入寄存器
MOVA,TEMPHC;取高字节的高4位(百位数)
SWAPA;
ANLA,#0FH;
MOVBUF4,A;百位数放入寄存器
MOVA,TEMPHC;
ANLA,#0F0H;
CJNEA,#10H,DISPBCD0;百位数=0?
SJMPDISPOUT;
;*************************************
;最高位为0和正数的符号位都不显示
;*************************************
DISPBCD0:
MOVA,TEMPHC;
ANLA,#0FH;
JNZDISPOUT;十位数是0?
MOVA,TEMPHC;
SWAPA;
ANLA,#0FH;
MOVBUF4,0AH;符号位不显示
MOVBUF3,A;十位数显示符号
DISPOUT:
:
RET;
;**************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字式 温度 测量 电路 设计
