ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:144.16KB ,
资源ID:5274733      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5274733.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字温度计.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字温度计.docx

1、数字温度计绵阳职业技术信息工程系课程实训报告 课程名称: 单片机课程设计 实训题目: 数字温度计 起止时间: 专业班级: 电气自动化091班 学生姓名: 敖 学 号: 0902668 指导教师: 乔老师 绵阳职业技术学院信息工程系年 月 日任 务 书一、 实训任务设计一款基于AT89C2051单片机的数字温度计。测温范围在-55125,误差在0.5以内,采用LED数码管直接显示。二、设计要求1. 基本要求1)用4位共阳LED数码管以动态扫描法实现温度显示。2)控制器使用单片机AT89C2051,温度传感器使用DS18B20,用LED显示温度。2.(1)画出电路原理图;(2)确定元器件及元件的参

2、数; (3)给出全部源程序; (4)进行电路模拟仿真摘 要 此电路是用AT89S51心器件,并利用DS18B20温度传感器和4位共阳极L数码管动态扫描来完成温度显示。电路特点有体积小,灵敏度和精度高,很适应很多对精度要求较高的场合,完成对设备及场地的温度控制,能有效的提高工作人员对环境的变化的反应速度。关键词:AT89S51;DS18B20;LED;温度控制等第一章 绪 论 11.1 概述 11.2 设计目的 11.3 设计任务和内容 1第二章 总体设计及核心器件简介 2.1总体设计 2.AT89C2051第3章 电路模块设计 3.1系统硬件电路的设计 3.2显示电路 3.3温度主程序 3.4

3、读出温度子程序 3.5温度转换命令子程序 3.6显示数据刷新子程序 3.7温度数据的计算处理方法 3.8调试及性能分析第4章 所需器件及软件编程 4.1所需器件列表 4.2主程序框图 4.3源程序第五章 设计心得和存在问题第1章 绪 论1.1 概述近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。数字温度计给人们的生活带来了更多的方便与快捷。1.2 设计目的(1)加强对单片机和C51语

4、言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。(2)用单片机模拟实现具体应用,使个人设计能够真正使用。(3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。(4)提高利用已学知识分析和解决问题的能力。(5)提高实践动手能力。1.3 设计任务和内容1.3.1设计任务结合教材及在网上搜索的参考资料,用AT89C2051的控制DS18B20温度传感器和4位共阳极L数码管动态扫描来完成温度显示。1.3.2设计内容(1)写设计任务书。(2)进行总体设计,画出原理图。(3)用Protel软件画出PCB板并制板。(4)焊接器件和芯片。(5)编写并调试程

5、序。第二章 总体设计及核心器件简介2.1总体设计 方框图所示为数字温度控制器的单体设计方框图。其工作原理为:当该电路上电工作以后,首先刷新显示(LED),然后,温度传感器采集温度送单片机检查温度的高低,由单片机送出信号经过驱动电路送往显示电路或报警电路。 图2-1 2.2 AT89C2051at89c2051是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,片内含2k bytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flas

6、h存储单元,功能强大at89c2051单片机可为您提供许多高性价比的应用场合。 2.1.2 AT89C2051的引脚功能AT89C2051单片机的P口特点如下图:P1口:P1口是一个8位双向I/O端口,其中P1.2P1.7引脚带有内部上拉电阻,P1.0和P1.1要求外部上拉电阻。P1.0和P1.1还分别作为片内精密模拟比较器的同相输入(AIN0)和反相输入(AIN1)。P1口输出缓冲器可吸收20mA电流,并能直接驱动LED显示。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。P1口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流P3口:P3.0P3.

7、5、P3.7是带有内部上拉电阻的7个双向I/O端口。P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O口引脚而只读。P3口输出缓冲器可吸收20mA电流。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。P3口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 图2-22.13 DS18B20DS18B20简介:DS18B20简介 美国美信(Maxim)公司生产的单线数字温度传感器DS1820,可把温度信号直接转换成串行数字信号供微机处理。 DS18B20的主要特性 适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电

8、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温 在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内 温范围55125,在-10+85时精度为0.5 可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温 在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快 测量结果直接输出数字温度信号,以一线总线串行传送给CP

9、U,同时可传送CRC校验码,具有极强的抗干扰纠错能力 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。4个主要的数据部件2.14 温度传感器工作原理DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20的性能特点如下: 独特的单线接口仅需要一个端口引脚进行通信; 多个DS18B20可以并联在惟一的三线上,实现多点组网功能; 无须外部器件; 可通过数据线供电,电压范围为3.05.5; 零待机功耗; 温度以或位数字; 用户可定

10、义的非易失性温度报警设置; 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。DS18B20采用脚封装或脚SOIC封装,其内部结构框图如下图所示。 DS18B20内部结构图64位ROM的位结构如下图()所示。开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。非易失性温度报警触发器和,可通过软件写入户报警上下限。 图(): 64位ROM结构图DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失

11、性的可电擦除的EERAM。高速暂存的结构为8字节的存储器,结构如下图()所示。头2个字节包含测得的温度信息,第3和第4字节和的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时按些寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如图图()所示。低5位一直为,是测试模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为,用户不要去改动,和决定温度转换的精度位数,来设置分辨率,定义方法()见表。 图(): 高速暂存器RAM结构图 图():配置寄存器 表():DS18B20 分辨率

12、的定义规定由表()可见,DS18B20温度转换的时间比较长,而且设定的分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存的第6、7、8字节保留未用,表现为全逻辑。第9字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB,温度值格式如图()所示。2-42-32-22-120212223LS 字节SS

13、SSSS6S5S4MS字节 图():温度格式值当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制值勤。表()是一部分温度值对应的二进制温度数据DS18B20完成温度转换后,就把测得的温度值与RAM、字节内容作比较。若或,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。 二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1

14、001 0001 0191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H 00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H 二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 000

15、1 1001 0001 0191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H 00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H 表(2) 64位ROM有效字节中存储有循环冗余检验码(CRC)。主机热气ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到

16、的ROM数据是否正确。DS18B20的测温原理如图()所示。图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将所对应的一个基数分别置入减法计数器、温度寄存器中,浓厚兴趣计数器和温度寄存器被预置在所对应的一个基数值。斜率累加器减到0温度寄存器预置计数比较器预置减法计数器1低温度系数振荡器器减到0高温度系数振荡器

17、减法计数器2图():测温原理图减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器的预置将加将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。图()中的斜率累加器用于补偿和修正测温过程中的非线形性,其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议

18、进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。34 DS18B20与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图()所示。单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。图():寄生电源供电方式当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD和BND端均接地。由于单线制只有一

19、根线,因此发送接口必须是三态的。第三章 路模块设计3.1系统硬件电路的设计 此电路是用AT89S51心器件,并利用DS18B20温度传感器和4位共阳极L数码管动态扫描来完成温度显示。如下图所示: 图3-03.2 显示电路显示电路采用位共阳LED数码管,从P1口输出段码,列扫描用P3.0P3.3口来实现,列驱动用9021三极管。3.3 温度主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值,温度测量每1s进行一次。其程序读出温度流程图:3.4 读出温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。计算温度子程序流程图如下: 图3

20、-33.5 温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转换时间约为750ms。在本程序设计中,采用1s显示程序延时法等待转换的完成。 温度转换命令子程序流程图如下: 图3-43.6 显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,降幅好显示移入下一位。显示数据刷新子程序流程图: 3.7 温度数据的计算处理方法从DS18B20读取出的二进制值必须先转换成十进制值,才能用于字符的显示。因为DS18B20的转换精度为912位可选项的,为了提高精度采用12位。在采用12位转换精度时,温度寄存器里的值是以

21、0.0625为步进的,即温度值为温度寄存器里的二进制值乘以0.625,就是实际的二进制温度值。通过观察表(2)发现一个十进制值和二进制值之间有很明显的关系,就是把二进制的高字节的低半字节和低字节的低半字节化成十进制后,就是温度值的小数部分。小数部分因为是半个字节,所以二进制值范围是0F,转换成十进制小数值就是0。0625的倍数(015)。这样需要4位的数码管来显示小数部分实际应用不必有这么高的精度,采用1位数码管来显示小数,可以精确到0.1。3.8 调试及性能分析系统的调试以程序为主。硬件调试比较简单,首先检查电路的焊接是否正确,然后可用万用表测试或通电检测。软件调试可以先编写显示程序并进行硬

22、件的正确性检验,然后分别进行主程序、读出温度子程序、温度子程序、显示数据刷新等子程序的编程及调试,由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读写编程时必须严格地保证读写时序,否则将无法读取测量结果。本程序采用单片机汇编编写,用wave3.2编译器编程调试。软件调试到能显示温度值,而且在有温度变化时(例如用手去接触)显示温度能改变就基本完成。性能测试可用制作的温度计和已有的成品温度计来同时测量比较,由于DS18B20的精度很高,所以误差指标可以限制在0.1以内,另外-55+125的测温范围使得该温度计完全适合一般的应用场合,其低电压供电特性可做成用电池供电的手持电子温

23、度计。DS18B20温度计还可以在高低温报警、远距离多点测温控制等方面进行应用开发,但在实际设计中应注意以下问题: DS18B20工作时电流高达1.5mA,总线上挂接点数较多且同时进行转换时,要考虑增加总线驱动,可用单片机端口在温度转换时导通一个MOSFET供电。 连接DS18B20的总线电缆是有长度限制的,因此在用DS18B20进行长距离测温系统设计时,要充分考虑总线分布电容和阻抗匹配等问题。在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环

24、,这一点在进行DS18B20硬件连接和软件设计时要给予一定的重视。第4章 所需器件及软件编程4.1 所需的器件如下列表:单片机:AT89C2051电容:10uf 1个 30uf 2个电阻:6.8千欧 1个 4.7千欧 5个 510欧 9个晶振:12HZ 1个LED数码管: 4个晶体管(三极管): 4个DS18B20: 1个4.2 主程序框图如图: 4.3 源程序;*;常数定义;*SHIJIAN EQU 0E0HSHIJIAH EQU 0B1HSHIJIA1 EQU 36H;*;工作内存定义;*BBIT DATA 20HTIMEE BIT BBIT.1TIM BIT BBIT.2TII DATA

25、 26HTIIH DATA 27HMP DATA 28HTIIC DATA 29H;*;引脚定义;*MP1 BIT P3.7;*;中断向量区;*ORG 0000HLJMP STARTORG 000BHLJMP T0IT;*;系统初始化;*START: MOV SP, #40HCL: MOV R0, #20H MOV R1, #60HCL1: MOV R0, #00H INC R0 DJNZ R1, CL1 MOV TMOD, #00100001B MOV TH0, #SHIJIAN MOV TL0, #SHIJIAH SJMP INITERROR: NOP LJMP START NOPINIT

26、: NOP SETB ET0 SETB TR0 SETB EA MOV PSW, #00H CLR TIM LJMP MAIN;*;定时器0中断服务程序;*T0IT: PUSH PSW MOV PSW, #10H MOV TH0, #SHIJIAH MOV TL0, #SHIJIAN INC R7 CJNE R7, #32H, T0IT1 MOV R7, #00H SETB TIME1SOKT0IT1: POP PSW RETI;*;主程序;*MAIN: LCALL DISP1 JNB TIME1SOK, MAIN CLR TIME1SOK JNB TIM, MAIN2 LCALL RE1 L

27、CALL CONVTEMP LCALL DISPBCD LCALL DISP1MAIN2: LCALL RE SETB TIM LJMP MAIN;*;子程序;*;RESET DS18B20;*DS1820: SETB MP1 NOP NOP CLR MP1 MOV R6, #0A0H DJNZ R6, $ MOV R6, #0A0H DJNZ R6, $ SETB MP1 MOV R6, #32H DJNZ R6, $ MOV R6, #3CHLOOP1820: MOV C, MP1 JC DS1820OUT DJNZ R6, LOOP1820 MOV R6, #064H DJNZ R6, $ SJMP DS1820 RETDS1820OUT: SETB MP1 RET;*;从ds18b20中读出一个字节的数据;*RDS1820: MOV R7, #08H SETB MP1 NOP NOPRDS1820LOOP: CLR MP1 NOP NOP NOP SETB MP. MOV R6, #07H DJNZ R6, $ MOV C, MP1 MOV R6, #3CH DJNZ R6, $ RRC A SETB MP1 DJNZ R6, RDS1820LOOP MOV R6, #3CH DJNZ R6, $ RET;*;从d

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1