基于单片机控制的总线式多路高精度温度采集系统_第1页
基于单片机控制的总线式多路高精度温度采集系统_第2页
基于单片机控制的总线式多路高精度温度采集系统_第3页
基于单片机控制的总线式多路高精度温度采集系统_第4页
基于单片机控制的总线式多路高精度温度采集系统_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 目 录1引言12总体设计方案1 2.1设计思路 12.2硬件设计框图22.3软件设计框图23设计组成及原理分析 2 3.1传感器模块设计2 3.1.1 ds18b20内部结构2 3.1.2 时序3 3.1.3 ds18b20控制字 4 3 .1 .4 ds18b20高速暂存器 4 3 .1 .5 64位rom结构 4 3.2 显示电路的设计 4 3.3 软件设计 64总结与体会 8参考文献 8附录 1 9附录 2 10基于单片机控制的总线式多路高精度温度采集系统摘要:本设计主要内容是基于单片机控制的单总线式多路高精度温度采集系统,该系统用多个ds18b20与单片机连接实现温度测量和采集,并用

2、74ls245驱动六位数码管显示ds18b20所测的温度及ds18b20的路数。关键词:电子线路 51单片机 ds18b20 温度采集1 引言近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。单片微型计算机是随着超大规模集成电路技术的发展而诞生的,由于它具有体积小、功能强、性价比高等特点,所以广泛应用于电子仪表、家用电器、节能装置、军事装置、机器人、工业控制等诸多领域,使产品小型化、智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具

3、体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。本文主要介绍单片机在温度测量采集中的应用。本系统采用单片机at89c51为中心器件来设计,系统实用性强、操作简单、扩展性强。2 总体设计方案2.1 设计思路2.1.1 总体结构整个温度采集系统由温度传感器模块和温度转换模块以及显示电路模块组成,由于ds18b20包含了温度传感模块与温度转换模块,所以整个系统由温度传感器ds18b20和单片机以及六位数码管显示电路组成,ds18b20的使用,使硬件电路简单。2.1.2方案确立(1)传感器的选择ds18s20是美国dallas公司生产的单总线数字温度传感器。它可以把温度信号直接转换成串行数字

4、信号供单片机处理,特别适合构成多点温度巡回检测系统。由于每片ds18s20都含有惟一的产品号,所以从理论上来说,在一条总线上可以挂接任意多个ds18s20芯片。从ds18s20读出或写入信息仅需一根口线(单线接口)。读/写及温度变换功率来源于数据总线,总线本身也可以向所挂接的ds18s20供电,而无需额外电源。ds18s20提供9位温度读数,构成多点温度检测系统而无需任何外围硬件。1线热电偶测量温度是将传统的热电偶与一款新推出的多功能芯片ds2760结合起来,组成一种可直接将冷结温度信号数字化的变送器。该变送器可以通过单条双绞线与pc机(或微控制器)主机通信。其显著的优势之一是,每一个变送器都

5、可赋予单独的64位地址,这大大方便了总线主机的识别和选通。采用这种独特的地址识别之后,多个传感器可以形成一个网络,由软件自动识别和处理来自特定传感器的数据。与热电偶有关的信息可以由多功能芯片本身存储,不过这种独特的识别方法还可以让参考数据储存在总线主机中。由于ds18b20电路简单,轻巧方便且温度可直接转换成数字信号,所以选择ds18b20.(2)串并口显示的选择并口显示用74ls245驱动,串口显示用74ls164驱动,并口驱动速度快,但占用太多i/o口,由于本系统i/o口闲置多,从速度方面考虑用并口显示。2.2 硬件设计方框图(如图1)89c51复位电路晶振电路显示电路传感器电路图1 设计

6、方框图2.3 软件设计方框图(如图2)图2 软件设计方框图电路原理图与软件见附录3 设计原理分析3.1 传感器模块设计dallas公司最新单线数字温度系统ds18b20是新的“一线器件”,其体积更小、适用电压更宽、更经济。dallas半导体公司的数字化温度传感器ds18b20是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,用户可轻松地组建传感器网络,为测量系统构建引入了全新的概念。其测量温度的范围为 -55 +125度,在 10 +85 度范围内,可以程序设定 912 位的分辨率精度为正负0.5度。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰能力

7、。适合于恶劣环境的温度测量。从性价比出发,其已经能够胜任我们一般设计的要求。3.1.1 1 ds18b20 内部结构(1) 64 位光刻rom (其中的64位序列号是出厂前被光刻好的,它可以看作该ds18b20的地址序列码,并且其中的48位为该ds18b20的自身唯一序列号。其作用就是使每一个ds18b20都不相同,这样就可以实现一根总线上挂多个ds18b20的目的)图3 ds18b20引脚图ds18b20封装及引脚排列(如图3)(2) 温度传感器 (完成对温度的测量)(3) 非挥发的温度报警触发器th和tl、(4) 配置寄存器 (出厂时被设定为12位数据格式)2.引脚功能说明dq 数字信号输

8、入输出端gnd 电源地vcc 为外接供电电源输入端3. ds18b20的性能特点:采用单总线专用技术,既可通过串行口线,也可通过其它i/o口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位) 测温范围为-55-+125,测量分辨率为0.0625内含64位经过激光修正的只读存储器rom适配各种单片机或系统机用户可分别设定各路温度的上、下限内含寄生电源。3.1.2 时序ds18b20的执行序列 初始化(发一个不少于480 s的低脉冲); 执行rom命令,主要用于定位; 执行ds18s20的存储控制命令,用于转换和读数据; ds18s20的i/o信号有复位脉冲、回应脉冲

9、、写0、读0、写1和读1等几种。3.1.3 18b20控制命令字表1 18b20的rom命令指令说明读rom(33h)读18b20的序列号匹配rom(55h)继续读完64位序列号的命令,用于多个18b20时定位跳过rom(cch)此命令执行后的在存储器打操作针对在线所有18b20搜rom(f0h)识别总线上各器件的编码,为操作各器件做准备报警搜索(ech)公温度越限的器件对此命令作出响应表2 18b20存储控制命令 指令 说明温度转换(44h)启动在线18b20做温度ad转换读数据(beh)从高速暂存器读9位温度值和crc值写数据(4eh)将数据写入高速暂存的第3和第4字节中复制(48h)将高

10、速暂存器中第3和第4字节复制到eeram读eeram(b8h)将eeram内容写入高速暂存器中第3和第4字节读电源供电方式(b4h)了解18b20的供电方式3.1.4 ds18b20高速暂存器共9个存储单元,如表3所示:表3 存储单元序号 寄存器名称 作 用 序号 寄存器名称 作 用 0 温度低字节 以16位补码形式存放 4 配置寄存器 1 温度高字节 5、6、7 保留 2 th/用户字节1 存放温度上限 8 crc 3 hl/用户字节2 存放温度下限 以12位转化为例说明温度高低字节存放形式及计算:12位转化后得到的12位数据,存储在18b20的两个高低两个8位的ram中,二进制中的前面5位

11、是符号位。如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625才能得到实际温度。 3.1.5 64位rom结构,如图4所示lsbmsb8位检验crc 48位序列号 8位工厂代码(10h) 图4 64位rom结构图3.2 显示电路的设计led显示器接口方法(1)以硬件为主的接口方法,如图5 图5 以硬件为主的接口电路 (2)以软件为主的接口方法如图6 图6 以软件为主的接口电路由于并口驱动数码管有速度上的优势,故本设计使用74ls245并口驱动.原理图如图7图7 74ls245并口驱动数码管3.3

12、 软件设计3.3.1 主程序主程序的主要功能是负责温度的实时显示、读出并处理ds18b20的测量温度值,温度测量每1s进行一次,其程序流程图如图8所示。3.3.2 读出温度子程序读出温度子程序的主要功能是读出ram中的9字节,在读出时需要进行crc校验,校验有错时不进行温度数据的改写。其程序流程图如图9所示。3.3.3 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辩率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图10所示。3.3.4 计算温度子程序计算温度子程序将ram中读取值进行bcd码的转换运算,并

13、进行温度值正负的判定,其流程图如图11所示。3.3.5 显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲区中的显示数据进行刷新操作,流程图如图12所示。y 发ds18b20复位命令发匹配rom命令 发读取温度命令 读取操作,crc校验 9字节完?crc校验正?确?移入温度暂存器结束nny初始化调用显示子程序 1s到?初次上电读出温度值温度计算处理显示数据刷新 发温度转换开始命令nyny 图8 主程序流程图图9 读出温度子程序流程图 发ds18b20复位命令 发匹配rom命令发温度转换开始命令 结束图10 温度转换命令子程序流程图 开始 温度零下?温度值取补码置“”标志计算小数位温度bcd值

14、 计算整数位温度bcd值 结束置“+”标志ny温度数据移入显示寄存器 十位数0? 百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号) 结束nnyy 图11计算温度流程图 图12显示数据刷新流程图4 总结与体会 衷心的感谢学校给我们这次锻炼自己动手能力的机会,以及各个辅导老师的热心帮助,使我们圆满顺利的完成了此次实习。通过本次课程设计,使我学到了许多书本上无法学到的知识,也使也深该体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。参考文献1康华光.模拟电子技术基础. 北京:高等教育出版社,20062康华光.数字电子技

15、术基础.北京:高等教育出版社,20063潘永雄,沙河.电子线路cad实用教程. 陕西:西安电子科技大学出版社,20074廖常初.现场总线概述j.电工技术,1999.6附录1附录2多路温度采集系统源程序如下:;-数据定义-ds18sl equ 41h ;用于保存读出温度的低8位 ds18sh equ 40h ;用于保存读出温度的高8位ds18fig equ 8h ;是否检测到ds18b20标志位a_bit1 equ 31h ;数码管个位数存放内存位置b_bit1 equ 32h ;数码管十位数存放内存位置d_bit1 equ 35h ;数码管百位数存放内存位置ds18cd1 equ 42h ;d

16、s18cd1-ds18cd8暂存64位romds18cd2 equ 43h ;从低到高ds18cd3 equ 44hds18cd4 equ 45hds18cd5 equ 46hds18cd6 equ 47hds18cd7 equ 48hds18cd8 equ 49hds1864b equ 4ahds18ads equ 4bhds18dq equ p1.0 ;30h,31h,32h,33h: x 个位 十位 x;-程序开始-org 0000hljmp mod7org 0030hmod7: mov sp,#60hlcall get_temper ;调用读温度子程序lcall readcodeajm

17、p mod7init_1820: ;ds18b20初始化setb ds18dqclr ds18dq ;延时,500us低mcmov r7,#250djnz r7,$mov r7,#150djnz r7,$setb ds18dq ;释放总线lcall delay60us ;15-60us的等待时间mov r6,#4setdsdq:lcall delay60usjnb ds18dq,setdsdqfh ;60-240us内是否有返回信号,为0跳djnz r6,setdsdqmov r7,#250djnz r7,$clr ds18figretsetdsdqfh:setb ds18figmov r7,

18、#250djnz r7,$mov r7,#100djnz r7,$ret;-数据处理-temp0: inc aajmp temp1tempcov: mov a,ds18sl ;数据处理子程序tempcovmov b,#16div abjb b.3,temp0temp1: mov 34h,a ;将ds18sl的高四位右移四位,存入34h中(温度值)mov a,b ;将ds18sl的低四位x10/16得小数后一位数.mov b,#10mul abmov b,#16div abmov 30h,a ;将小数后一位数.存入30h中mov a,ds18sh ;ds18sh中存放高8位数,权重16mov b

19、,#16mul abadd a,34h ;34h中存入温度值的整数部分mov b,#10div abmov 31h,b ;个位存入31h中mov b,#10 ;div ab ;mov 32h,b ;十位存入32h中mov b,#10 ;div ab ;mov 35h,b ;百位存入33h中mov a,ds18shmov 33h,#10h ;jb acc.7,exit7mov 33h,#00hexit7: retget_temper: ;读出转换后的温度值,并显示setb ds18dqlcall init_1820 ;先复位ds18b20jb ds18fig,tss2ret ;判断ds1820是

20、否存在?若ds18b20不存在则返回tss2: mov ds18ads,#0ds18jx:lcall ds18codpmov a,ds18adsadd a,#9mov ds18ads,acjne a,#63,ds18jxretds18codp:lcall mrcovt ;转换指定的ds18b20的温度lcall mrrdtedp ;显示温度rettemp:lcall init_1820jb ds18fig,next4retnext4:mov ds18ads,#9mov a,#0cch ;skip romlcall write_1820mov a,#44h ;温度转换命令lcall write_

21、1820lcall delay1slcall mrrdtedpret;写ds18b20的子程序(有具体的时序要求)write_1820: ;写ds18b20mov r5,#8ds18jxwe:setb ds18dq ;初始化clr ds18dqclr ds18dqmov r7,#5djnz r7,$ ;拉低15us内,写入数据clr crrc amov ds18dq,clcall delay60us ;持续60ussetb ds18dq ;写完一个位djnz r5,ds18jxweretread_1820_code: ;读取code 64位mov r4,#8 ;读8次数mov r1,#ds18

22、cd1 ;低位地址存在r1ds18jxrd3:mov r5,#8 ;8位数据ds18jxrd2:setb ds18dqclr ds18dq ;前两句完成初始化nopnop ;延时至少1ussetb ds18dq ;上升沿,并在,15us内读数mov r7,#5djnz r7,$mov c,ds18dqrrc alcall delay60us ;读时序,最少60usdjnz r5,ds18jxrd2mov r1,ainc r1djnz r4,ds18jxrd3setb ds18dqret;读ds18b20的程序,从ds18b20中读出两个字节的温度数据read_18200:mov r4,#2 ;

23、读两次数mov r1,#ds18sl ;低位地址存在r1ds18jxrd1:mov r5,#8 ;8位数据ds18jxrd:setb ds18dqclr ds18dq ;前两句完成初始化nopnop ;延时至少1ussetb ds18dq ;上升沿,并在,15us内读数mov r7,#5djnz r7,$mov c,ds18dqrrc alcall delay60us ;读时序,最少60usdjnz r5,ds18jxrdmov r1,adec r1djnz r4,ds18jxrd1setb ds18dqretread_1820_1: ;读取1位setb ds18dqclr ds18dqclr

24、 ds18dqclr ds18dqsetb ds18dqmov r7,#5djnz r7,$jb ds18dq,wefhlcall delay10mswefh:lcall delay60usretreadcode: ;读取64位rom,并显示出来setb ds18dqlcall init_1820jb ds18fig,nextretnext:mov a,#33hlcall write_1820lcall read_1820_codelcall displaycdretds1864sen: ;送出64个位的数据mov r4,#8mov dptr,#ds18tabds1864sen1:mov a,

25、ds1864bmovc a,a+dptrlcall write_1820inc ds1864bdjnz r4,ds1864sen1retmatchrom:lcall init_1820mov a,#55h ;march romlcall write_1820mov ds1864b,ds18adslcall ds1864senretmrcovt: ;匹配rom并发出温度转换命令lcall matchrommov a,#44h ;发出温度转换命令lcall write_1820lcall delay1sretmrrdtedp: ;匹配rom并显示转换温度lcall init_1820lcall m

26、atchrommov a,#0beh ;发出读取命令 lcall write_1820lcall read_18200lcall tempcovlcall display ;调用数码管显示子程序ret;-写入e存储器和读e存储器-ds18wee: ;写入e存储器mov a,#48hlcall write_1820lcall delay10mslcall read_1820_1retds18rde: ;读出e存储器的内容lcall init_1820jnb ds18fig,ds18rde1retds18rde1:lcall matchrommov a,#08bh ;读出e中的值放到scratch

27、padlcall write_1820nopjb ds18dq,rderetrde: lcall read_18200ret;-显示部分子程序-ds18disp: ;显示是第几个ds18b20mov a,ds18adsadd a,#8mov dptr,#ds18tabmovc a,a+dptrmov b,#16div ablcall dispmov a,blcall dispretdisplay:lcall ds18dispmov a,33hlcall dispmov a,32hlcall dispmov a,31hlcall dispmov a,30hlcall dispretdisplaycd: ;rom的编码显示.mov r1,#ds18cd1mov r4,#8displaycd1:mov a,r1mov b,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论