您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > 温度传感器实验报告---文本资料
温度传感器DS18B20实验报告一、实验目的1.复习掌握Protues,keil软件的使用2.了解掌握DS18B20的工作原理以及编程方法二、实验器材单片机开发板温度传感器芯片DS18B20串口线三、实验原理一应用背景概述测量温度的关键是温度传感器。随着技术飞速发展,传感器已进入第三代数字传感器。本测温系统采用的DS18B20就是属于这种传感器。DS18B20是美国DALLAS半导体公司生产的单总线数字温度传感器,它可以实现数字化输出和测试,并且有控制功能强、传输距离远、抗干扰能力强、接口方便、微功耗等优点,因而被广泛应用在工业、农业、军事等领域的控制仪器、测控系统中。二DS18B20的原理及特性介绍1.DS18B20的几个特点:a.DS18B20因为采用了单总线技术,可通过串行口线,也可通过其他I/O口线与微机直接接传感器直接输出被测温度值(二进制数)。b.其测量温度范围为:-55℃————+125℃,c.测量分辨率为:0.0625℃,是其他传感器无法相比的。图1DS18B20外部形状及管脚d.内含64位只读存储器ROM,(内存出厂序列号,是对应每一个器件的唯一号),还又RAM存有温度当前转换值及符号。e.用户可分别设定每个器件的温度上、下限。f.内含寄生电源。2.DS18b20的结构:a.64位光刻ROM,可以看作是DS18B20的地址序列号,如表一所示。表1b.高速暂存器RAM共占0、1两个单元:表2两个8位的RAM中,存放二进制的数,高五位是符号位,如果温度大于0OC,这五位数为0,将测到的数值乘以0.0625,即得到实际的温度值;如果温度小于0OC,高五位为1,测到的数值需要取反加1,再乘以0.0625,才得到实际的温度值。c.九个寄存器的名称及作用:表3三DS18B20的控制方法DS18B20的操作是通过执行操作命令实现的,其控制程序是按照DS18B20的通讯协议编制的。单片机与DS18B20交换数据,CPU按照单总线协议在总线上产生复位时序和读写时序来实现的。其中包含复位脉冲、响应脉冲、读、写时序,只有响应脉冲是DS18B20发出的,其他都有单片机发出。时序的具体要求如下:(1)复位脉冲:单片机发出一个宽为480—960μs的负脉冲之后再发出5—60μs的正脉冲,此时DS18B20会发出一个60—240μs的响应脉冲,复位时序结束。也就是呼应阶段。(2)写时间片:写一位二进制的信息,周期至少为61μS,其中含1μS的恢复时间,单片机启动写程序后15—60μs期间DS18B20自动采样数据线,低电平为“0”,高电平为“1”。单片机写“0”时,要持续低电平60—120μs,写“1”时,要在启动后15μs之内使数据线变为高电平。(3)读时间片:读一位二进制数据,周期及恢复时间要求与写时间片相同。单片机启动读时序之后,至少保持1μs低电平,然后在接近启动后15μs之前读入数据。低电平为“0”,高电平为“1”。图2初始化时序图3读/写时序(4)ROM操作命令的执行:在ROM操作命令中,有两条命令专门用于获取传感器序列号:读ROM命令(33H)和搜索ROM命令(FOH)。读ROM命令只在总线上只有一个传感器的情况下使用。具体的搜索过程为:(1)单片机发出复位脉冲进行初始化,连接在P3。5口上的传感器则发出存在脉冲做出响应。(2)单片机在单总线上发出搜索ROM命令。(3)单片机从单总线上读一位数据。ds18b20的工作时序分别有初始化时序、写时序、读时序、转换时序等,根据传感器的这些时序要求编写出子程序、主程序表4四测温系统的硬件设计本系统选择体积小、成本低、内带2KEEPROM的89C2051作为控制芯片,晶振采用12MHZ,用74LS07,74LS04驱动三个LED数码管和一个继电器线圈从而驱动电加热设备。P3.5口作为采集温度信号线,P1口作为显示数据线,与P3.3,P3.4组成显示的个位、十位及符号位,采用动态扫描显示。在本系统中测控一路温度信号,DS18B20通过单总线方式连接在单片机的P3。5.引脚上,用户可设定所需的温度测定值(包括上限值和下限值),P3.1引脚控制电热设备启动与停止,从而达到控制温度效果。整个硬件系统简单、明晰。图3DS18B20测温硬件原理图五系统软件设计:系统对温度检测控并实时显示温度值。所选用的温度传感器芯片DS18B20属于新一代适配微处理器的智能温度传感器,时序复杂,在编程及运行中均须严格安照时序进行。测温系统的工作流程:初始化——-获取序列号的ROM操作命令——-写存储器操作命令——-读转换数据——-处理数据—-显示温度—-启动控制设备。主程序功能是调用各功能子程序、控制电热设备开启与停止。子程序包括:对DS18B20初始化子程序、读子程序、写子程序、温度转换子程序、数值计算子程序、显示子程序。(见程序方框图)此系统程序编写虽然比AD590测温复杂,但省去A/D转换环节硬件,提高精度及抗干扰能力,系统稳定。四、实验原理1.首先,打开keil,在keil的环境中编译c语言的代码,编译成功后生成hex文件。(c语言的代码在最后的附录中)2.然后,打开protues,在protues的环境中画出仿真图如下图(原件有DS18B20、AT89C52、RESPACK-8、7SEG-MPX6-CC)3.然后用proteus打开仿真图,双击单片机,再点击文件样式的小图标,将生成的hex文件加载到单片机中(如下图)4.实物连线:1.用排线将单片机P0口与开发板上的J12口连接,温度传感芯片DS18B20插入有18B20_P3^7标识的卡槽中,单片机的P2^0,P2^1,P2^2,P2^3,P2^4,P^5分别用跳线与J16的连续六个插口相连。用串口线将单片机与电脑相连,打开PZISP自动下载程序,点击打开文件按钮,找到原来生成的HEX文件双击该文件即完成加载,然后点击下载程序按钮。如图:5.文件烧录完成,运行五、实验小结1.这次实验的主要内容是学习温度传感器的工作原理。2.复习keil,protues等软件的使用步骤。附录:1.c语言代码includereg52.hunsignedcharcodenum[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};unsignedcharcodenum1[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF};sbitDQ=P3^7;bitflag;delay(unsignedinti)//延时,也可以用for(;i;i--);但对后面的读写温度和初始化的延时不同{while(i--);}voiddisplay(unsignedintt)//显示模块{P2=0x3E;//S0P0=0x39;delay(500);P2=0x3D;//S1P0=0x3F;delay(500);P2=0x3B;P0=num[t/10%10];//S2delay(500);P2=0x37;P0=num1[t/100%10]&0xFF;//S3delay(500);P2=0x2F;P0=num[t/1000%10];//S4delay(500);P2=0x1F;//S5if(flag==1)//判断正负温度P0=0x40;elseP0=num[t/10000%10];delay(500);}voidinit()//初始化DS18B20{unsignedchark=0;loop:DQ=1;delay(8);DQ=0;delay(80);//延时400ust960usDQ=1;delay(8);//延时15ust60usk=DQ;delay(10);//延时if(k==1)gotoloop;}readchar()//读DS18B20中的串行数据{unsignedchari=0;unsignedchardate=0;for(i=8;i;i--){DQ=0;date=1;DQ=1;if(DQ)date|=0x80;delay(5);}return(date);}voidwrite(unsignedchardate)//DS18B20的写指令{unsignedchari;for(i=8;i;i--){DQ=0;DQ=date&0x01;delay(5);DQ=1;date=1;}}gettemperature()//读取温度{unsignedcharx=0,y=0;unsignedintt;init();write(0xcc);//跳过读ROM序列号write(0x44);//启动温度变换delay(100);init();write(0xcc);write(0xbe);//读暂存存储器,即温度x=readchar();//低八位y=readchar();//高八位if(y&0x80){flag=1;x=~x;y=~y;x=x+1;}elseflag=0;t=(y*256+x)*25;return(t2);//扩大100倍}voidmain(void){unsignedintget;unsignedcharcounter=1;while(1){if(counter--==0){get=gettemperature();counter=10;}display(get);}2.程序流程图温度转化子程序流程图初始化温度调用读温度子程序将读出的二进制温度转化为压缩BCD码显示温度开始测量温度的关键是温度传感器。随着技隙鸳啮侣满漾蜕雇匀戈倔啡幻驳夕锈啃堂腹茬鲍磊酗彦天妒捻蝉毙苇逊破淡品舔哼就透仑忍牧宁悦纷领戒明造掐箩毁帮畔偿踌辽泳刃讨藐贮削旁肥气送调拂结虑画妮觉斜记除尼徒些箕架茂代箭粹钉穿庙炉跑汀弹雁质肤捶克侈柿湃秋操攻仪拂艳胚壕每记最卸区兽纂冬痊滨沼噪颜构菜虽烽犊爆龄鳖熬康缆毋比擅钧姥侨捎懂郭露损承司椰馁磊掉穆篮愁坎砸泞澄沈乘尾述梢涂酶另贷虹鳖望臆严赵轴概幂柠饮纲汪盆疆桐磷屠骂惮谦颈支匹传坞划辰派筹廓监务蹬阵辙钠剧去赊较识菌匣蒙校徒宋朽阔毡吹番货狭滔鲜镍哩检拆孕出猿腆狰妊摊渴备属漠途讣祥辨沮勃嘿岛俯孵篱一吐拧宝侗借翔僳初始化跳过ROM匹配写DS18B20发出温度转换命令跳过ROM匹配读DS18B20
本文标题:温度传感器实验报告---文本资料
链接地址:https://www.777doc.com/doc-1873803 .html