基于51单片机的DS18B20温度传感器的应用_第1页
基于51单片机的DS18B20温度传感器的应用_第2页
基于51单片机的DS18B20温度传感器的应用_第3页
基于51单片机的DS18B20温度传感器的应用_第4页
基于51单片机的DS18B20温度传感器的应用_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

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

文档简介

基于51单片机的DS18B20温度传感器的应用DS18B20是一种数字温度传感器,基于单线总线接口协议,能够以较高的精度测量环境温度。在嵌入式系统中,DS18B20广泛应用于温度监测、智能控制等方面。本文将介绍基于51单片机的DS18B20温度传感器的应用。一、硬件设计1.电路连接DS18B20与51单片机相连需要使用三根线。其中,一根线为VDD,连接至单片机的正电源,并在电路中添加滤波电容;另一根线为GND,连接至单片机的负电源;最后一根线为DQ,连接至单片机的IO口,作为数据传输的线路。2.电路图具体电路图如下所示:![DS18B20电路图](/YmLY4us.png)二、软件设计1.时序要求DS18B20采用单线总线接口协议,因此数据的传输需要严格遵守时序要求。具体的时序如下:![DS18B20时序图](/PXAvVG1.png)通过上图可以看出,DS18B20的数据传输采用了采样保持技术(SamplingandHold),该技术可以较好地解决信号传输过程中的抖动问题。2.代码实现下面是DS18B20温度传感器的部分代码实现:```c#defineDQP0_5unsignedcharTemperH,TemperL;unsignedintTemper;/*DS18B20复位序列*/voidDS18B20_Reset(){unsignedchari;DQ=0;/*拉低DQ线*/for(i=250;i>0;i--);/*延时>=480us*/DQ=1;/*拉高DQ线*/for(i=250;i>0;i--);/*延时15~60us,保持高电平*/}/*数据传输*/unsignedcharDS18B20_DataTrans(unsignedchardat){unsignedchark=0,i;for(i=0;i<8;i++)/*8位数据传输*/{DQ=0;/*拉低DQ线,开始传输一位数据*/DQ=dat&0x01;/*写入数据*/for(k=250;k>0;k--);/*延时60us*/DQ=1;/*释放DQ线*/dat>>=1;}for(i=0;i<8;i++)/*读取应答信号*/{DQ=0;DQ=1;for(k=20;DQ&&k>0;k--);/*等待应答信号结束*/if(k==0)/*应答信号错误*/{break;}}if(i==8)/*应答信号有效*/{return1;}else{return0;}}/*读取一个字节*/unsignedcharDS18B20_ReadByte(){unsignedchark=0,i,dat=0;for(i=0;i<8;i++)/*8位数据传输*/{DQ=0;/*拉低DQ线,开始传输一位数据*/DQ=1;/*释放DQ线*/for(k=20;DQ&&k>0;k--);/*等待数据线的数据稳定*/dat>>=1;if(DQ){dat|=0x80;/*读入数据*/}}returndat;}/*DS18B20读取温度数据*/voidDS18B20_ReadTemper(){DS18B20_Reset();/*复位*/DS18B20_DataTrans(0xCC);/*跳过ROM操作命令*/DS18B20_DataTrans(0x44);/*温度转换命令*/while(!DS18B20_ReadByte());/*等待转换完成*/DS18B20_Reset();/*复位*/DS18B20_DataTrans(0xCC);/*跳过ROM操作命令*/DS18B20_DataTrans(0xBE);/*读暂存器命令*/TemperL=DS18B20_ReadByte();/*读低8位温度值*/TemperH=DS18B20_ReadByte();/*读高8位温度值*/Temper=(TemperH<<8)|TemperL;/*合成16位温度值*/}```三、应用示例在本次应用中,我们需要将DS18B20采集到的温度值显示在1602液晶屏上。以下是部分代码实现:```c/*1602液晶屏写命令*/voidWriteCMD(unsignedcharcmd){LCD_RS=0;/*选择命令寄存器*/LCD_RW=0;/*选择写操作*/LCD_DB=cmd;/*写入命令*/Delay1ms();LCD_EN=1;/*使能*/Delay1ms();LCD_EN=0;/*失能*/}/*1602液晶屏写数据*/voidWriteData(unsignedchardat){LCD_RS=1;/*选择数据寄存器*/LCD_RW=0;/*选择写操作*/LCD_DB=dat;/*写入数据*/Delay1ms();LCD_EN=1;/*使能*/Delay1ms();LCD_EN=0;/

温馨提示

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

评论

0/150

提交评论