STM32的DS18B20驱动

目录

复位脉冲和应答脉冲

初始化

读时序

 写时序

 温度转换

 获取温度

运行结果: 


首先我用的是一块STM32F103VCT6

复位脉冲和应答脉冲

将总线切换为输出模式,主机先拉低电平480us,再拉高15~60us,我直接拉高60us,将总线切换为输入模式,读取ds18b20的应答,设置延时为240us,没超时的话最后切换为输出模式,拉高总线。

uint8_t DS18B20_Rst(void)	   
{        
	uint8_t retry=0;
	DS18B20_IO_OUT();   //设置为输出
	W1DQ_Write(0);  	//拉低DQ
	delay_us(480);      //拉480us
	W1DQ_Write(1);  	//DQ=1 
	delay_us(60);       //60US

	DS18B20_IO_IN();    //设置为输入 
	//等待ds18b20回应
  while (!W1DQ_Read()&&retry<240)
	{
		retry++;
		delay_us(1);
	};	 
	if(retry>=200)
		return -1;
	else 
		retry=0;
	
	DS18B20_IO_OUT();
  W1DQ_Write(1);
	delay_us(240);  
	return retry;
}
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值