数字温度计设计实训报告.docx
《数字温度计设计实训报告.docx》由会员分享,可在线阅读,更多相关《数字温度计设计实训报告.docx(38页珍藏版)》请在冰豆网上搜索。
![数字温度计设计实训报告.docx](https://file1.bdocx.com/fileroot1/2023-1/25/2cb1d65f-2ca7-4162-b815-97d0d14ec52b/2cb1d65f-2ca7-4162-b815-97d0d14ec52b1.gif)
数字温度计设计实训报告
西安航空职业技术学院
小系统设计实训报告
论文题目:
智能温度计
所属系部:
电子工程系
****************
学生姓名:
谭晓辉学 号:
********
程创学 号:
********
专 业:
电子信息工程技术
西安航空职业技术学院制
西安航空职业技术学院
小系统设计实训任务书
题目:
智能温度计
任务与要求:
1、查阅数字温度计设计相关资料,熟悉数字温度计设计的原
理,查阅A/D转换及传感器相关知识,画出数字温度计原理图,并编写相应
的源程序。
2、使用8051单片机作为处理器,设计数字温度计设计,设定温
度最高值和最低值,若采集到的温度超过设定值,发出不同声音的报警。
位
数码管进行循环显示,显示实际温度值。
3、使用传感器采集室内温度参数,并进行A/D转换后,送给单片
机进行处理。
4、可用按键设定上下限,当设定时显示设
定状态,设定完成,即显示实时温度值。
5、并用喇叭报警。
时间:
2010年12月19日至2010年12月31日共 2 周
所属系部:
电子工程系
学生姓名:
谭晓辉学号:
******26
程创学号:
********
专业:
电子信息工程技术
********
西安航空职业技术学院制
摘要
温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生活中的更加广泛的应用,利用新型数字温度传感器实现对温度的测试与控制得到更快的开发,本文设计了一种基于80C51的温度检测及报警系统。
该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。
该系统设计和布线简单,结构紧凑,抗干扰能力强,在大型仓库、工厂、智能化建筑等领域的温度检测中有广泛的应用前景。
关键字:
单片机;数字滤波;80C51;辅助扩展。
1前言
最早的温度计是在1593年由意大利科学家伽利略(1564~1642)发明的。
他的第一只温度计是一根一端敞口的玻璃管,另一端带有核桃大的玻璃泡。
后来,法国人布利奥在1659年制造的温度计,他把玻璃泡的体积缩小,并把测温物质改为水银,这样的温度计已具备了现在温度计的雏形。
荷兰人华伦海特在1709年利用酒精,在1714年又利用水银作为测量物质,制造了更精确的温度计。
随着科学技术的发展和现代工业技术的需要,测温技术也不断地改进和提高。
由于测温范围越来越广,精度要求越来越高,根据不同的要求,又制造出满足不同需要的测温仪器。
本设计采用的是温度传感器DS18B20,能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
1.1课程设计的目的和意义
通过课程设计使我进一步熟悉了单片机的内部结构和工作原理,掌握了单片机应用系统设计的基本方法和步骤;通过利用MCS-51单片机,理解单片机在自动化装置中的作用以及掌握单片机的编程调试方法;通过设计一个简单的实际应用输入控制及显示系统,掌握protues和keil以及各种仿真软件的使用。
目前温度计的发展很快,从原始的玻璃管温度计发展到了现在的热电阻温度计、热电偶温度计、数字温度计、电子温度计等等,温度计中传感器是它的重要组成部分,它的精度、灵敏度基本决定了温度计的精度、测量范围、控制范围和用途等。
传感器应用极其广泛,目前已经研制出多种新型传感器。
但是,作为应用系统设计人员需要根据系统要求选用适宜的传感器,并与自己设计的系统连接起来,从而构成性能优良的监控系统。
1.2任务及要求
1、设计一个简单数字温度计,能够测量通常环境下的温度,能够实现零下温度的测量,能够测量小数。
2、使用传感器采集室内温度参数,并进行A/D转换后,送给单片机进行处理。
3、可用按键设定上下限,当设定时显示设定状态,设定完成,即显示实时温度值。
4、并用喇叭报警。
2系统总体方案及硬件设计
2.1系统总体方案设计
2.1.1原理论述
由于本设计是测温电路,可以使用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行A/D转换,将数据传入80C51单片机中,单片机处理后,通过LED显示出当前实测温度。
通过长按按键K1时,可显现温度上限,通过按键K2,K3分别实现对上限温度的加减;再次长按按键K1时,可显示下限温度,通过K2,K3实现对下限温度的调整。
当实测温度超过上限温度值时,亮红灯并报警;当实测温度低于下限温度值时,黄灯亮并报警。
2.1.2原理框图
温度计电路设计总体设计框图如图2-1所示,控制器采用单片机80C51,温度传感器采用DS18B20,用四位LED数码管以并口传送数据实现温度显示。
图2-1原理框图
2.1.3功能模块连接简介
温度传感器的接口2连接单片机P3.4,用于传送数据,接口3连接电源,接口1接地;数码管的段码输入端连接单片机的P1端口,公共端接P3.0-P3.1,单片机的P0端口接上拉电阻,时钟电路连接XTAL,复位电路连接RST。
2.2系统硬件电路设计
2.2.1单片机的选择
单片80C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
80C51主要特性
与MCS-51单片机产品兼容4K字节在系统可编程Flash存储器
1000次擦写周期全静态工作:
0Hz—33MHz
32个可编程I/O口线2个16位定时器/计数器
6个中断源全双工UART串行通道
低功耗空闲和掉电模式掉电后中断可唤醒
看门狗定时器双数据指针
灵活的ISP编程4.0---5.5V电压工作范围
单片机80C51的内部结构总框图。
它可以划分为CPU、存储器、并行口、串行口、定时/计数器和中断逻辑几个部分。
80C51外部引脚功能如图2-2所示
图2-280C51引脚图
本次设计需要注意的几个端口:
P0口(39—32):
是一组8位漏极开路行双向I/O口,也既地址/数据总线复用口。
可作为输出口使用时,每位可吸收电流的方式驱动8个TTL逻辑电路,对端口写“1”可作为高阻抗输入输入端用。
在访问外部数据存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,PO口接收指令字节,而在程序校验时,输出指令字节,校验时,要求接上拉电阻。
P3口(10—17):
是一组带有内部上拉电阻的8位双向I/O口,,P1的输入缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输出端口。
作输出端口时,被外部拉低的P3口将用上拉电阻输出电流。
P3口除可作为一般的I/O口线外,更重要的用途是它的第二功能,如表2.2.1-1所示:
表2.2.1-1引脚功能表
/Vpp(31):
内部和外部程序存储器选择线。
=0时访问外部ROM0000H—FFFFH;
=1时,地址0000H—0FFFH空间访问内部ROM,地址1000H—FFFFH空间访问外部ROM。
本次设计
接高电平。
XTAL1(19)和XTAL2(18):
使用内部振荡电路时,用来接石英晶体和电容;使用外部时钟时,用来输入时钟脉冲。
RST/VPD(9):
复位信号输入端。
AT89S51接能电源后,在时钟电路作用下,该脚上出现两个机器周期以上的高电平,使内部复位。
第二功能是VPD,即备用电源输入端。
当主电源Vcc发生故障,降低到低电平规定值时,VPD将为RAM提供备用电源,发保证存储在RAM中的信号不丢失。
2.2.2时钟电路设计
80C51时钟有两种方式产生,即内部方式和外部方式。
(如图2-4所示)80C51中有一个构成内部震荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英或陶瓷震荡器一起构成自激震荡器震荡电路如图。
外接石英晶体(或陶瓷震荡器)及电容C1、C2接在放大器的震荡回路中构成并联震荡电路。
对外接电容C1、C2虽然没有非常严格的要求,但电容的大小会轻微影响震荡频率的高低、震荡工作的稳定性、起震的难易程序及温度稳定性,如果使用石英晶体,推荐使用30pF±10pF,而如果使用陶瓷谐振器建议选择40pF±10pF。
用户还可以采用外部时钟,采用外部时钟如图所示。
在这种情况下,外部时钟脉冲接到XTAL1端,既内部时钟发生器的输入端,XTAL2悬空。
由于外部时钟信号是通过一个2分频的触发器后作为内部时钟信号的所以外部时钟的占空比没有特殊要求,但最小高电平持续的时间和最大低电平持续的时间应符合产品技术条件的要求。
本
次设计采用内部震荡电路,瓷片电容采用30P,晶振采用12MHZ。
图2-4震荡电路
2.2.3复位电路设计
容采用电容值为10μ的电解电容。
具体连接电路如图2-5所示:
单片机系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R采用10KΩ的阻值,电
图2-5复位电路
2.2.3报警电路
如图2-6所示
图2-6报警电路
2.2.4温度显示电路
图2-7显示电路
四位共阳极数码管,能够显示小数和负温度。
零下时,1显示负号。
2.2.5温度传感器
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V;
●零待机功耗;
●温度以9或12位数字;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2-6所示。
图2-6DS18B20原理图
64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为8字节的存储器,结构如图2.3所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
该字节各位的定义:
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率
DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
温度传感器18B20汇编程序,采用器件默认的12位转化,最大转化时间750微秒,可以将检测到的温度直接显示到80C51的两个数码管上
表2.2.5-1DS18B20温度转换时间表
R1
R0
分辨率/位
温度最大转换时间/MS
0
0
9
93.75
0
1
10
187.5
1
0
11
375
1
1
12
750
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB式表示。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。
表2是一部分温度值对应的二进制温度数据。
DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。
若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令做出响应。
因此,可用多只DS18B20同时测量温度并进行报警搜索。
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。
主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作按协议进行。
操作协议为:
初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
分别说明如下:
1、初始化单总线的所有处理均从初始化开始。
初始化过程是主机通过向作为从机的DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。
初始化后,才可进行读写操作。
2、ROM操作命令总线主机检测到DS18B20的存在便可以发出ROM操作命令之一这些命令表2.2.5-2:
表2.2.5-2ROM操作命令
指令
代码
ReadROM(读ROM)
[33H]
MatchROM(匹配ROM)
[55H]
SkipROM(跳过ROM]
[CCH]
SearchROM(搜索ROM)
[F0H]
Alarmsearch(告警搜索)
[ECH]
3、存储器操作命令如表2.2.5-3:
表2.2.5-3存储器操作命令
指令
代码
WriteScratchpad(写暂存存储器)
[4EH]
ReadScratchpad(读暂存存储器)
[BEH]
CopyScratchpad(复制暂存存储器)
[48H]
ConvertTemperature(温度变换)
[44H]
RecallEPROM(重新调出)
[B8H]
ReadPowersupply(读电源)
[B4H]
3软件设计
3.1系统总体方案设计
本次课程设计采用的是protues软件仿真,用Keil软件进行编译。
Protues软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
软件部分由主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。
3.2程序设计
3.2.1主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度,其程序流程见图3-1所示。
图3-1主程序流程
3.2.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图3-2所示
图3-2读出温度子程序流程
3.2.3二进制转换BCD码命令子程序
二进制转换BCD码命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
二进制转换BCD码命令子程序流程图,如图3-3
图3-3二进制转换BCD码流程图
3.2.4计算温度子程序
将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。
3.2.5温度数据显示子程序
显示数据子程序主要是对显示缓冲器中的显示数据进行刷新操作,查表送段码至LED,开位码显示,采用动态扫描方式。
4实验仿真
实验仿真在Protuse仿真软件中进行,电路总图详见附图。
5系统调试
5.1.软件调试
本系统的软件系统较大,全面采用汇编语言编写,除语法和逻辑差错外,当确认程序没问题时,直接下载到单片机仿真调试。
采取自下而上的方法,单独调好每一个模块,最后完成一个完整的系统调试。
6结束语
本系统的设计,是为了保证某特定环境温度维持在设定的范围内,以保证工作系统在稳定的状态下工作。
本系统的设计成本很低。
如果采用大批量生产的话,生产成本会更低。
在市场上的温度自动控制系统的价格在百元人民币以上。
对于本系统的使用者来说,本系统能够很稳定的控制温度而且稳定性很高。
只要配上适当的温度传感器,这个系统便还可以实现很多领域的温度自动控制。
这对于提高系统的利用率,避免重复设计有很大的帮助的。
在本系统的作用下,可以为工作系统提供一个良好的环境,使产品的数量和质量有很大的提高。
使得产品的生产成本降低,从而使系统的使用者获得的利润提高了。
通过分析表明:
本系统是一个性价比比较好的系统,不论对于生产者还是使用者来说,它都可以带来好的经济效益。
本次的课程设计使我们进一步巩固了书本上的知识,做到了学以致用。
这是我们第二次自己动手设计的电路,通过系统仿真软件protues和编译软件keil,使我们进一步了解了单片机的设计制作过程,其中最为困难的是软件部分,即编程部分,我们上网找了好多资料,虽然经过自己的修改,但还是有很多功能不能实现,如报警和温度上下限设置。
由于protues并不是很熟练,在使用的过程中有很多原件的名称不知道,从而花费了大量的时间在网上查找,今后应该在这方面多多努力。
最后一步的焊接硬件也遇到了不少麻烦,P0端口没有加上拉电阻,P1端口没有加电阻导致数码管不亮或者亮度不够。
总结经验的时候我们得出这样的结论,学习应该学以致用,有目的的去学习,如果学了不用等于没学。
其次,要学以致用,理论联系实际,这样才会取得事半功倍的效果。
这次设计基本的完成了任务书的要求,实现了温度的控制。
通过测试表明系统的设计是正确的,可行的。
但是由于设计者的设计经验和知识水平有限,系统还存在许多不足和缺陷
参考文献
[1]康华光,陈大钦,张林.电子技术基础模拟部分(第五版).高等教育出版社.2006.103-108
[2]余发山.单片机原理及应用技术.中国矿业大学出版社,2003.31-32
[3]51单片机学习网
[4]张洪润张亚凡编著.单片机原理及应用.清华大学出版社.2003年.。
[5]楼然苗李光飞编著.单片机课程设计指导书.北京航空航天大学出版社
附1系统电路图
附图1-1电路总图
、
附2源程序代码
;
*************************************************
;TIMELEQU0E0H
TIMEHEQU0B1H
TEMPHEADEQU36H
;
;***********************************************************
;工作内存定义
;***********************************************************
BITSTDATA20H
TIME1SOKBITBITST.1
TEMPONEOKBITBITST.2
TEMPLDATA26H
TEMPHDATA27H
TEMPHCDATA28H
TEMPLCDATA29H
;
;
;**********************************************************
;引脚定义
;**********************************************************
;
TEMPDINBITP3.4
THBITP1.3
TLBITP1.4
;
;***********************************************************
;中断向量区
;***********************************************************
ORG0000H
LJMPSTART
ORG00BH
LJMPT0IT
;************************************************************
;系统初始化
;************************************************************
ORG0100H
START:
MOVSP,#60H
CLSMEM:
MOVR0,#20H
MOVR1,#60H
CLSMEM1:
MOV@R0,#00H
INCR0
DJNZR1,CLSMEM1
;
MOVTMOD,#00100001B
MOVTH0,#TIMEH
MOVTL0,#TIMEL
SJMPINIT
;
ERROR:
NOP
LJMPSTART
;
NOP
INIT:
NOP
SETBET0
SETBTR0
SETBEA
MOVPSW,#00H
CLRTEMPONEOK
MOV80H,#00H
MOV79H,#28H
MOV78H,#0BH
MOV77H,#01H
MOVP1,#00H
LJMPMAIN
;
;************************************************************
;定时器0中断程序
;************************************************************
T0IT:
PUSHPSW
MOVPSW,#10H
MOVTH0,#TIMEH
MOVTL0,#TIMEL
INCR7
CJNER7,#32H,TOIT1
MOVR7,#00H
SETBTIME1SOK
TOIT1:
POPPSW
RETI
;
;
;
;************************************************************
;主程序
;************************