实验八 DS18B20数字温度显示实验
DS18B20单总线温度采集实验

DS18B20单总线温度采集实验一、实验目的1. 熟悉Keil IDE uVision集成开发环境软件的使用方法。
2. 学习DS18B20 单总线温度传感器的使用。
二、实验内容DS18B20 为单总线12 位(二进制)温度读数。
内部有64 位唯一的ID 编码。
工作电压从 3.0~5.5V。
测量温度范围从-55℃~125℃。
高位±0.0625℃分辨率。
三、实验要求1. 数码管显示温度数据,显示百、十、个位并保留一位小数。
2. 画出程序流程图,并独立编写C51程序。
3. 做好实验前预习,完成proteus仿真和实物搭建。
四、实验硬件电路及芯片特性DS18B20 内部框图:温度寄存器格式:DSl8B20 工作过程中的协议如下:初始化ROM 操作命令存储器操作命令处理数据初始化:单总线上的所有处理均从初始化开始。
单片机将总线拉低至少480μs 然后释放总线,DS18B20 检测到上升沿后在等待15~60μs 后拉低总线,说明器件存在。
拉低持续时间为60~240μs。
读写时序:推荐的读时序:DS18B20 的核心功能是直接数字温度传感器。
温度传感器可以配置成9、10、11 和12 位方式。
相应的精度分别为:0.5℃、0.25℃, 0.125℃和0.0625℃。
默认的分辨率为12 位。
DS18B20 在空闲低功耗状态下加电(寄生电源工作方式)。
主机必须发出Convert T [44h]命令使其对测量温度进行A-D 转换。
接下来进行采集转换,结果存于两字节高速温度寄存器并返回到空闲低功耗状态。
如果DS18B20 在外部VDD 供电方式下,单片机可以在发出Convert T 命令并总线为1 时(总线为0 表示正在转换)发出“read time slots”命令。
温度分辩率配置:五、实验步骤1. 在Keil IDE u Vision集成开发环境下建立工程文件,编辑源文件、编译、链接并生成目标文件,仿真调试验证结果。
DS18B20温控电动机实验

单片机课程设计论文DS18B20温控电动机实验学院:**********专业:************班级********姓名:*******8学号:*********8DS18B20温控电动机实验一、设计简介本实验首先通过18B20测量温度,温度用数码管显示。
然后通过温度的高低控制电动机的转度。
本设计可用于温度的测控、室温的控制、温度调节、温度报警等方面。
二、18B20、数码管和电动机的简介1.18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点:(1 )采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20 的双向通讯。
单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
(2 )测量温度范围宽,测量精度高DS18B20 的测量范围为-55 ℃ ~+ 125 ℃;在-10~+ 85°C 范围内,精度为±0.5°C 。
(3 )在使用中不需要任何外围元件。
(4 )持多点组网功能多个DS18B20 可以并联在惟一的单线上,实现多点测温。
(5 )供电方式灵活DS18B20 可以通过内部寄生电路从数据线上获取电源。
因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。
(7 )负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
(8 )掉电保护功能DS18B20 内部含有EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。
18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。
2.数码管数码管是一种半导体发光器件,其基本单元是发光二极管,是单片机系统中最常用的一种显示输出,主要用于单片机控制中的数据输出和状态信息显示。
温度传感器ds18b20实验报告

温度传感器ds18b20实验报告温度传感器DS18B20实验报告引言温度传感器在现代生活中扮演着重要的角色,它们被广泛应用于各种领域,包括工业、医疗、农业等。
DS18B20是一种数字温度传感器,具有精准的测量能力和数字输出,因此备受青睐。
本实验旨在通过对DS18B20温度传感器的测试和分析,探讨其性能和应用。
实验目的1. 了解DS18B20温度传感器的工作原理和特性。
2. 测试DS18B20温度传感器的测量精度和响应速度。
3. 探讨DS18B20温度传感器在实际应用中的优缺点。
实验器材1. DS18B20温度传感器2. Arduino开发板3. 4.7kΩ电阻4. 连接线5. 电脑实验步骤1. 将DS18B20温度传感器连接到Arduino开发板上,并接入4.7kΩ电阻。
2. 编写Arduino程序,通过串口监视器输出DS18B20传感器的温度数据。
3. 将DS18B20传感器置于不同的温度环境中,记录其输出的温度数据。
4. 分析DS18B20传感器的测量精度和响应速度。
5. 探讨DS18B20传感器在实际应用中的优缺点。
实验结果经过实验测试,DS18B20温度传感器表现出了较高的测量精度和响应速度。
在不同温度环境下,其输出的温度数据与实际温度基本吻合,误差较小。
此外,DS18B20传感器具有数字输出,易于与各种微控制器和单片机进行连接,应用范围广泛。
然而,DS18B20传感器在极端温度环境下可能出现测量误差,且价格较高,需要根据实际需求进行选择。
结论DS18B20温度传感器具有较高的测量精度和响应速度,适用于各种温度测量场景。
然而,在选择和应用时需要考虑其价格和适用范围,以确保满足实际需求。
希望本实验能够为DS18B20温度传感器的应用提供参考和借鉴,推动其在各个领域的发展和应用。
DS18B20温度测量与控制实验报告

课程实训报告《单片机技术开发》专业:机电一体化技术班级: 104201学号: 10420134姓名:杨泽润浙江交通职业技术学院机电学院2012年5月29日目录一、DS18B20温度测量与控制实验目的……………………二、DS18B20温度测量与控制实验说明……………………三、DS18B20温度测量与控制实验框图与步骤……………………四、DS18B20温度测量与控制实验清单……………………五、DS18B20温度测量与控制实验原理图…………………六、DS18B20温度测量与控制实验实训小结………………一、实验目的1.了解单总线器件的编程方法。
2.了解温度测量的原理,掌握 DS18B20 的使用。
二、实验说明本实验系统采用的温度传感器DS18B20是美国DALLAS公司推出的增强型单总线数字温度传感器。
Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
DS18B20测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
DS18B20可以程序设定9~12位的分辨率,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20 内部结构DS18B20 内部结构主要由四部分组成:64 位光刻 ROM、温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器。
DS18B20 的管脚排列如下: DQ 为数字信号输入/输出端;GND 为电源地;VDD 为外接供电电源输入端(在寄生电源接线方式时接地)。
光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该DS18B20 的地址序列码。
温度实时显示实验报告

实验名称:温度实时显示实验实验日期:2021年X月X日实验地点:实验室一、实验目的1. 了解温度实时显示系统的工作原理。
2. 掌握温度传感器的使用方法。
3. 熟悉温度实时显示系统的搭建过程。
4. 提高实际操作能力。
二、实验原理温度实时显示系统主要由温度传感器、数据采集模块、显示模块和电源模块组成。
温度传感器用于检测环境温度,数据采集模块将温度传感器的信号转换为数字信号,显示模块将数字信号转换为可视化的温度值,电源模块为系统提供稳定的电源。
三、实验仪器与材料1. 温度传感器:DS18B202. 数据采集模块:Arduino Uno3. 显示模块:LCD16024. 连接线:杜邦线5. 电源模块:9V电池6. 实验平台:面包板四、实验步骤1. 准备实验材料,搭建实验电路。
2. 编写Arduino程序,实现温度数据的采集和显示。
3. 将程序上传至Arduino板。
4. 启动实验,观察温度实时显示效果。
五、实验结果与分析1. 实验结果在实验过程中,成功搭建了温度实时显示系统,并实现了温度数据的实时采集和显示。
实验过程中,温度传感器的数据采集模块、显示模块和电源模块均工作正常。
2. 实验分析(1)温度传感器DS18B20具有高精度、高稳定性等特点,能够满足实验要求。
(2)Arduino Uno作为数据采集模块,能够实时读取温度传感器的数据,并通过LCD1602显示屏进行显示。
(3)实验过程中,温度实时显示系统工作稳定,数据采集准确,显示效果良好。
六、实验结论1. 成功搭建了温度实时显示系统,实现了温度数据的实时采集和显示。
2. 温度实时显示系统具有较高的精度和稳定性,适用于实际应用场景。
3. 通过本次实验,掌握了温度传感器的使用方法、数据采集模块的搭建以及Arduino程序的编写,提高了实际操作能力。
七、实验改进与展望1. 在实验过程中,发现温度实时显示系统在极端温度条件下,数据采集和显示效果可能受到影响。
温度传感器ds18b20实验报告

温度传感器ds18b20实验报告温度传感器DS18B20实验报告引言:温度传感器是一种用于测量环境温度的设备,它在许多领域都有广泛的应用,如气象学、工业控制、冷链物流等。
本实验报告将介绍DS18B20温度传感器的原理、实验装置和实验结果,并对其性能进行评估。
一、实验原理DS18B20温度传感器是一种数字温度传感器,采用单总线接口进行通信。
它采用了最新的数字温度传感器技术,具有高精度、低功耗、抗干扰等特点。
其工作原理是利用温度对半导体材料电阻值的影响,通过测量电阻值的变化来确定温度。
二、实验装置本实验使用的实验装置包括DS18B20温度传感器、Arduino开发板、杜邦线和计算机。
Arduino开发板用于读取传感器的温度数据,并通过串口将数据传输到计算机上进行处理和显示。
三、实验步骤1. 连接电路:将DS18B20温度传感器的VCC引脚连接到Arduino开发板的5V 引脚,GND引脚连接到GND引脚,DQ引脚连接到Arduino开发板的数字引脚2。
2. 编写代码:使用Arduino开发环境编写代码,通过OneWire库和DallasTemperature库读取DS18B20传感器的温度数据。
3. 上传代码:将编写好的代码上传到Arduino开发板上。
4. 监测温度:打开串口监视器,可以看到DS18B20传感器实时的温度数据。
四、实验结果在实验过程中,我们将DS18B20温度传感器放置在不同的环境中,记录了其测得的温度数据。
实验结果显示,DS18B20温度传感器具有较高的精度和稳定性,能够准确地测量环境温度。
五、实验评估本实验评估了DS18B20温度传感器的性能,包括精度、响应时间和抗干扰能力。
实验结果表明,DS18B20温度传感器具有较高的精度,能够在0.5℃的误差范围内测量温度。
响应时间较快,能够在毫秒级别内完成温度测量。
同时,DS18B20温度传感器具有较好的抗干扰能力,能够在干扰环境下保持稳定的测量结果。
温度传感器实验报告

温度传感器实验报告
一、实验目的
本实验旨在通过使用温度传感器来检测不同环境下的温度变化,并通过实验数据分析温度传感器的性能和准确度。
二、实验仪器
1. Arduino Uno控制板
2. DS18B20数字温度传感器
3. 杜邦线
4. 电脑
三、实验步骤
1. 连接DS18B20温度传感器到Arduino Uno控制板上。
2. 使用Arduino软件编写读取温度传感器数据的程序。
3. 通过串口监视器读取传感器采集到的温度数据。
4. 将温度传感器放置在不同环境温度下,记录数据并进行分析。
四、实验数据
在室内环境下,温度传感器读取的数据平均值为25摄氏度;在户外阳光下,温度传感器读取的数据平均值为35摄氏度。
五、实验结果分析
通过实验数据分析可知,DS18B20温度传感器对环境温度有较高的
敏感度和准确性,能够较精准地反映环境温度的变化。
在不同环境温
度下,传感器能够稳定地输出准确的温度数据。
六、实验结论
本实验通过对DS18B20温度传感器的测试和分析,验证了其在温
度检测方面的可靠性和准确性。
温度传感器可以广泛应用于各种领域,如气象监测、工业控制等。
通过本次实验,我们对温度传感器的性能
有了更深入的了解。
七、参考文献
1. DS18B20温度传感器数据手册
2. Arduino Uno官方网站
以上为实验报告内容,谢谢!。
18b20测温数码管显示实验--精确到小数点后4位

18b20测温数码管显示实验--精确到小数点后4位//滑国虎于09.9.20完成////DS18B20的读写程序,数据脚P1.5 ////温度传感器18B20程序,采用器件默认的12位转化 ////最大转化时间750微秒,显示温度-55到+125度,显示精度 // //为0.1度,显示采用4位LED共阳显示测温值 ////P0口为段码输入,P27~P21为位选 ///***************************************************/#include "reg51.h"#include "intrins.h" //_nop_();延时函数用 #define Disdata P0 //段码输出口 #define discan P2 //扫描口 #define uchar unsigned char #define uint unsigned intsbit DQ=P1^5; //温度输入口 sbit DIN=P0^7; //LED小数点控制 uint h;uint temp;//uchar codedis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x bf};//共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮""-"uchar code scan_con[7]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd}; //列扫描控制字uchar data temp_data[2]={0x00,0x00}; //读出温度暂放 uchar data display[7]={0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //显示单元数据,共4个数据和一个运算暂用/*****************11us延时函数*************************///void delay(uint t) //11us{for (;t>0;t--);}///****************DS18B20复位函数************************/ow_reset(void){char presence=1;while(presence){while(presence){DQ=1;_nop_();_nop_();//从高拉倒低DQ=0;delay(50); //550 usDQ=1;delay(6); //66 uspresence=DQ; //presence=0 复位成功,继续下一步}delay(45); //延时500 uspresence=~DQ;}DQ=1; //拉高电平 }/****************DS18B20写命令函数************************/ //向1-WIRE 总线上写1个字节void write_byte(uchar val){uchar i;for(i=8;i>0;i--){DQ=1;_nop_();_nop_(); //从高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_(); //5 usDQ=val&0x01; //最低位移出delay(6); //66 usval=val/2; //右移1位}DQ=1;delay(1);}/****************DS18B20读1字节函数************************/ //从总线上取1个字节uchar read_byte(void){uchar i;uchar value=0;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();value>>=1;DQ=0;_nop_();_nop_();_nop_();_nop_(); //4 usDQ=1;_nop_();_nop_();_nop_();_nop_(); //4 usif(DQ)value|=0x80;delay(6); //66 us}DQ=1;return(value);}/****************显示扫描函数***************************/ scan(){char k;for(k=0;k<7;k++) //4位LED扫描控制{Disdata=dis_7[display[k]]; //数据显示 P0if (k==2){DIN=0;} //小数点显示 P0.7discan=scan_con[k]; //位选 P2delay(150);discan=0xff;}}/****************读出温度函数************************/ //read_temp(){ow_reset(); //总线复位delay(200);write_byte(0xcc); //发命令write_byte(0x44); //发转换命令ow_reset();delay(1);write_byte(0xcc); //发命令write_byte(0xbe);temp_data[0]=read_byte(); //读温度值的低字节temp_data[1]=read_byte(); //读温度值的高字节temp=temp_data[1];temp=temp&0x0f; //去掉符号位temp=temp<<8; //temp为16位temp=temp|temp_data[0]; // 两字节合成一个整型变量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
D S18B20数字温度显示实验1.实验目的掌握一线式数字温度传感器的使用,了解单总线的工作方式。
掌握数字温度传感器DS18B20的工作原理及温度测量方法。
2.实验原理及内容DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃。
主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。
必须先启动DS18B20开始转换,再读出温度转换值。
本程序仅挂接一个芯片,使用默认的12位转换精度,外接供电电源,读取的温度值高位字节送WDMSB单元,低位字节送WDLSB 单元,再按照温度值字节的表示格式及其符号位,经过简单的变换即可得到实际温度值。
图118B20封装引脚 图2相关原理接线方法:1.利用S T C89C51实验板上的I R F1插孔和排针,将D S18B20插入I R F1插孔,用一根单条数据线把D S18B20的2脚接到C P U部份的P3.0;2.用一条4P I N的排线,把7474的A B C D接到P0口的P0.0,P0.1,P0.2,0.3四个端口。
(即插入P0口的上半部份)。
3.用一条8P I N的排线。
把数码管译码部份的输出端接到数码管部份的数据口;4.用一条4P I N的排线,把74138的输入端接到P0口的P0.4,P0.5,P0.6,07四个端口。
(即插入P0口的下半部份)。
5.用一条8P I N的排线。
把38译码部份的输出端接到数码管部份的显示位口。
在本系统中,为了简化程序, 采用了74L S47(数码管译码)74L S138(三八译码)。
即P0口的P0.0,P0.1,P0.2,P0.3四个端口接到74L S47进行硬件数码管译码,然后输出到数码管部分的数据口。
P0.4,P0.5,P.0.6三个端口接到74L S138进行38译码,然后输出到数码管的位控制。
系统综合原理图:图3系统原理图进行本实验时,需要使用S T C89C51、H D7279、E X P-74X X三块实验板,并且需要外接电阻等元件,接线连接复杂。
建议自制实验电路,或者使用L C D12864完成显示(若使用L C D12864,则程序需要重新设计)。
3.实验现象分析4.汇编语言参考程序图4程序设计流程;定时显示子程序,采用循环扫描方式;显示缓冲区40H~47HO R G0080HT I M E R0:M O V P0,40H;最后一位值送p0O R L P0,#70H ;点亮最后一位C A L L T1M SM O V P0,41HO R L P0,#60HC A L L T1M SM O V P0,42HO R L P0,#50HC A L L T1M SM O V P0,43HO R L P0,#40HM O V T H0,#L O W(65536-10000);定时器10M S中断M O V T L0,#H I G H(65536-10000)R E T IT1M S:M O V R5,#00h ;延时子程序T T:M O V R6,#9D J N Z R6,$D J N Z R5,T TR E T;********************************************************* ;主程序:;********************************************************** M A I N:M O V S P,#60HM O V P2,#0F F HM O V R2,#8M O V R0,#40H;O V E R:M O V@R0,#00HI N C R0D J N Z R2,O VE RM O V T M O D,#01HM O V T H0,#L O W(65536-10000)M O V T L0,#H I G H(65536-10000)S E T B E T0S E T B T R0L O O P:L C A L L D S W D;调用读出D S18B20温度程序 S J M P L O O P;读出D S18B20温度程序D S W D:C L R E AL C A L L R S TJ N B F0,K E N D ;如果没有应答,返回主程序M O V R0,#0C C HL C A L L S E N D_B Y T E;跳过R O M匹配M O V R0,#44H;发出温度转换命令L C A L L S E N D_B Y T ES E T B E AM O V P1,#00001111BM O V48H,#1;廷时75m s以上准备读 S S2: M O V49H,#255S S1: M O V4A H,#255S S0: D J N Z4A H,S S0D J N Z49H,S S1D J N Z48H,S S2M O V P1,#11111100BC L R E AL C A L L R S TJ N B F0,K E N DM O V R0,#0C C H;跳过R O M匹配L C A L L S E N D_B Y T EM O V R0,#0B E H;发出读温度命令L C A L L S E N D_B Y T EL C A L L R E A D_B Y T EM O V W D L S B,AL C A L L R E A D_B Y T EM O V W D M S B,AL C A L L T R A N S12K E N D:M O V P1,#01010101bR E T;********************************************************** ;温度转换程序:精确到:0.06;;********************************************************** T R A N S12:M O V A,30HA N L A,#0F0HM O V3A H,AM O V A,31HA N L A,#0F HO R L A,3A HS W A P AM O V B,#10D I V A BM O V43H,AM O V42H,B;M O V D P T R,#T A B BM O V A,30HA N L A,#0F HM O V B,#2M U L A BM O V C A,@A+D P T RM O V41H,AM O V A,30HA N L A,#0F HM O V B,#2M U L A BI N C AM O V C A,@A+D P T RM O V40H,AR E TT A B B:D B0,0,0,6,1,2,1,8,2,5,3,1,3,7,4,3,5,0D B5,6,6,2,6,8,7,5,8,1,8,7,9,3;*************************************************S E N D_B Y T E:;发送一个字节程序;**********************************************************M O V R5,#8S E N3:C L R CR R C AJ C S E N1L C A L L W R I T E_0S J M P S E N2S E N1:L C A L L W R I T E_1S E N2:D J N Z R5,S E N3;循环8次,写一个字节R E TR E A D_B Y T E:;读一个字节程序M O V R5,#8R E A D1:L C A L L R E A DR R C AD J N Z R5,RE A D1;循环8次,读一个字节M O V R0,AR E T;复位程序,如果复位置位F0,没有就复位F0 R S T: S E T B D A TN O PN O PC L RD A TM O V R6,#250;主机发复位脉冲持续3μs×200=600μsD J N Z R6,$M O V R6,#50D J N Z R6,$S E T B D A T;主机释放总线,口线改为输入M O V R6,#15D J N Z R6,$C A L L C H C K;调用应答检查程序M O V R6,#60D J N Z R6,$S E T B D A TR E TC H C K:M O V C,D A TJ C R S T0S E T B F0;检测到信号,置位F0S J M P C H C K0R S T0:C L R F0;未准备好F0复位C H C K0:R E TW R I T E_0:;写0C L RD A TM O V R6,#30D J N Z R6,$S E T B D A TR E TW R I T E_1:C L R D A T;写1N O PN O PN O PN O PN O PS E T B D A TM O V R6,#30D J N Z R6,$R E T;读一位数据程序R E A D:S E T B D A T;先复位至少1U S产生读起始信号 N O PN O PC L RD A TN O PN O PS E T B D A T;置位D A T准备接收数据N O PN O PN O PN O PN O PN O PN O PM O V C,D A TM O V R6,#23 D J N Z R6,$ R E TE N D。