【蓝桥杯单片机11】单总线温度传感器DS18B20的基本操做框架
www.xmf393.com / 广东职业技术学院 欧浩源函数
单总线数字温度传感器DS18B20几乎成了各种单片机甚至ARM实验板的标配模块来,在蓝桥杯的往届省赛和国赛中,这个内容考查的频率也至关的高。无论是单片机学习仍是蓝桥杯备赛,都应掌握DS18B20的基本操做,也就是把传感器的数据读出来。学习
一、关于DS18B20你应该知道
在蓝桥杯“单片机设计与开发”赛项中,会提供一个关于DS18B20的库文件,里面有传感器复位、写字节和读字节三个函数。因此,你不必定要把单总线的时序搞清楚,但你必定要把DS18B20的基本操做流程弄明白。
DS18B20单线通讯功能是分时完成的,它有严格的时隙概念,若是出现序列混乱,器件将不响应主机,所以读写时序很重要。
经过单线总线端口访问DS18B20的协议以下:
步骤1: 复位初始化
步骤2: ROM操做指令
步骤3: DS18B20功能指令
DS18B20的高速暂存存储器由9个字节组成,当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。在上电状态下,DS18B20默认的精度为12位。启动后它保持低功耗等待状态。当须要执行温度测量和AD转换时,总线控制器必须发出温度转换命令。在那以后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度寄存器中,DS18B20继续保持等待状态。单片机可经过单线接口能够读到该数据,读取时低位在前,高位在后。spa
二、三个重要的DS18B20指令
<1> CCH:跳过ROM指令,忽略64位ROM地址,直接向DS18B20发起各类温度转换指令。
<2> 44H:温度转换指令,启动DS18B20进行温度转换,转换时间最长为500ms(典型值为200ms),结果保存在高速RAM中。
<3> BEH:读暂存器指令,读取高速暂存存储器9个字节的内容。设计
三、读取一次DS18B20温度的基本操做
<1> 主机对DS18B20进行复位初始化。调试
<2> 主机向DS18B20写0xCC命令,跳过ROM。blog
<3> 主机向DS18B20写0x44命令,开始进行温度转换。接口
<4> 等待温度转换完成。资源
<5> 主机对DS18B20进行复位初始化。开发
<6> 主机向DS18B20写0xCC命令,跳过ROM。
<7> 主机向DS18B20写0xBE命令,依次读取DS18B20发出的从第0一第8,共九个字节的数据。若是只想读取温度数据,那在读完第0和第1个数据后就再也不理会后面DS18B20发出的数据便可,或者经过DS18B20复位,中止数据的输出。
具体的代码实现,能够参考一下框架:
四、单元实训题目
注意:若是你利用大赛提供的DS18B20的库文件,也就是onewire.c和onewire.h,进行程序设计的时候,没能正确的读出温度传感器的数值,对库文件中代码的时序进行适当的调整便可。至于怎么调整,调整多少,要实际调试。
【注】:更多的资源和资料、MM模式源码下载、IO模式源码资源,详见“小蜜蜂笔记”如下连接: