NO11 蓝桥杯单片机之DS18B20数字温度计

DS18B20数字温度计这个模块和以往单片机学习的模块可能不同,这里还要知道其头文件(.h)和.c文件代码的理解。

具体这个温度计是怎么实现检测温度的,呃呃呃呃呃这可能就要去查阅专业资料,涉及的知识体系应该很庞大,以下就温度计怎么使用的流程来讲讲。

【进阶强化-01】单总线温度传感器DS18B20的基本原理与应用开发-小蜜蜂笔记 (xmf393.com)

1 DS18B20数字温度计 .c文件代码的理解

芯片手册的阅读起来可能太多,可以看看小蜜蜂老师对.c文件里代码的理解。

单总线数字温度传感器DS18B20的基本原理及开发要点-小蜜蜂笔记 (xmf393.com)

以下结合小蜜蜂老师的文章写一些东东。

1.1 延时函数

延时函数就和我们平时训练的差不多,这里定义的是整数类型t

//单总线延时函数
void Delay_OneWire(unsigned int t)
{
  while(t--);
}

1.2  初始化函数(主要是用于复位操作)

总线用DQ表示,0表示拉低,1表示释放总线;定义一个initflag作为复位的标志。

拉低总线(DQ=0)->  释放总线(DQ=1) -> 复位标志置一(initflag=1) ->  返回复位标志

//DS18B20芯片初始化
bit Init_DS18B20(void)
{
	bit initflag = 0;

	DQ = 0;
	Delay_OneWire(80); 
	DQ = 1;
	Delay_OneWire(10); 
	initflag = DQ;    
	Delay_OneWire(20);
  
	return initflag;
}

1.3 写入函数

注意这里是把dat写入,而且是一位一位写。DQ = dat&0x01;   就保证了每次只写一个数据。

//DS18B20的写操作底层驱动代码参考--51版
void Write_DS18B20(unsigned char dat)
{
	unsigned char i;
	for(i=0;i<8;i++)             
	{
		DQ = 0;		     //先拉低总线电平10~15us						
		DQ = dat&0x01;	     //向总线写入一个位数据			
		Delay_OneWire(5);    //维持状态20~45us
		DQ = 1;	             //释放总线			
		dat >>= 1;           //准备发送下一个数据位			
	}
}

1.3 读取函数

读取函数最终返回的是是dat的值,这里也是dat按位来读取,

//DS18B20的读操作底层驱动代码参考--51版
unsigned char Read_DS18B20(void)
{
	unsigned char i;
	unsigned char dat;
	for(i=0;i<8;i++)
	{
		DQ = 0;              //先将总线电平拉低10~15us
		dat >>= 1;	     					
		DQ = 1;		     //
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值