蓝桥杯国赛之温度传感器

一、温度传感器

DS18B20是Maxim(美信公司)生产的温度传感器,单片机可以通过1-Wire协议与DS18B20通信,最终读取温度。1-Wire总线的硬件接口非常简单,只需将DS18B20的数据引脚连接到单片机的一个IO口即可。

引脚功能:

特性:

1.测温范围 :-55℃~+125℃,固有测温误差1℃

2.支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个

3.分辨率:从9位到12位的可编程分辨率

4.最多在750ms内将温度转换为12位数字

 温度暂存器:

 

 一般使用0,1,4字节,前面两个字节是与温度有关的,后者是配置寄存器用于配置温度计的精度和最大转换时间。

高字节前五个字节表示温度的正(0000 0)负(1111 1),紧接着后7位是温度的整数部分,低四位是温度的小数部分。

 

DS18B20精度设置:

 

 

二、程序

DS18B20的DQ连接PA6,需要连接TDQ与P1的跳线帽。

//rom和功能指令
#define OW_SKIP_ROM 		0xCC
#define DS18B20_CONVERT 	0x44
#define DS18B20_READ 		0xBE

float ds18b20_read(void)
{
	uint8_t low_temp,high_temp;
	
	ow_reset();                 // 初始化
	ow_byte_wr(OW_SKIP_ROM);    // 跳过rom
	ow_byte_wr(DS18B20_CONVERT);//转换温度
	delay_us(750000);
	 
	ow_reset();                 // 初始化
	ow_byte_wr(OW_SKIP_ROM);    // 跳过rom
	ow_byte_wr(DS18B20_READ);	// 读暂存器
	
	low_temp = ow_byte_rd();    // 读取温度低字节
	high_temp = ow_byte_rd();   // 读取温度高字节
	
	return ((high_temp<<8)|low_temp)/16.0;

}

DS18B20常用的ROM命令和功能指令

 

 

DS18B20采集到的温度是16位的,若高5位位1则是负温度,需要对采集到的数值进行取反并且加一才是真正温度。若高5位为是0,则采集的温度是整数,有的将它进行与操作0x07ff,这里默认它是零上温度,有无这步都可以。

返回值除以16.0是为了得到实际温度,从测量值到实际温度的转换,DS18B20的精度为0.0625度,即读回数据的最低位代表0.0625度,实际测量值x0.0625即可。


 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Super.Bear

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值