标题:
一个STM32的DS18B20驱动程序分享
[打印本页]
作者:
123920
时间:
2018-2-8 16:39
标题:
一个STM32的DS18B20驱动程序分享
DS18B20测温程序
stm32单片机源程序如下:
#include<stm32f10x.h>
#include<Ds18b20.h>
#include<Gpio.h>
#include<SysTick.h>
/*Ds18b20复位*/
void Init_Ds18b20()
{
u8 i=0;
/*设置IO口为输出模式*/
Gpio_Config_Mode_Out();
/*拉低总线*/
DS18B20_DQ_OUT_Low;
/*延迟480us*/
Delay_us(480);
/*释放总线*/
DS18B20_DQ_OUT_High;
/*设置IO口为输入模式*/
Gpio_Config_FLOATING_In();
/*等待复位信号 注意不能无限等待*/
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)&&(i<200))
i++;
}
/*写一个字节*/
void Write_one_byte(u8 a)
{
u8 i=0;
u8 b=0x01;
u8 c=0;
/*设置IO口为输出模式*/
Gpio_Config_Mode_Out();
for(i=0;i<8;i++)
{
c=b&a;
if(c)
{
/*拉低总线*/
DS18B20_DQ_OUT_Low;
/*延迟15us产生写时隙*/
Delay_us(15);
/*释放总线*/
DS18B20_DQ_OUT_High;
/*保持40us*/
Delay_us(40);
}
else
{
/*拉低总线*/
DS18B20_DQ_OUT_Low;
/*至少保持60us低电平*/
Delay_us(60);
/*释放总线*/
DS18B20_DQ_OUT_High;
}
b=b<<1;
}
/*释放总线*/
DS18B20_DQ_OUT_High;
}
/*读一个字节*/
u8 Read_one_byte()
{
u8 a=0;
u8 i=0;
for(i=0;i<8;i++)
{
/*设置IO口为输出模式*/
Gpio_Config_Mode_Out();
/*拉低总线*/
DS18B20_DQ_OUT_Low;
/*延迟1us产生读时隙*/
Delay_us(1);
/*释放总线*/
DS18B20_DQ_OUT_High;
/*设置IO口为浮空输入模式*/
Gpio_Config_FLOATING_In();
if(DS18B20_DQ_IN)
{
a=a>>1;
a=a|0x80;
}
else
{
a=a>>1;
}
/*延迟50us保证时间要求*/
Delay_us(50);
/*设置IO口为输出模式*/
Gpio_Config_Mode_Out();
/*释放总线*/
DS18B20_DQ_OUT_High;
}
return(a);
}
/***************
温度获取子函数
入口参数: 无
出口参数: 温度
****************/
u8 wen_du_huo_qu()
{
u16 a=0;
u8 b=0;
/*复位DS18B20*/
Init_Ds18b20();
/*写跳过ROM指令*/
Write_one_byte(0xCC);
/*写温度转换指令*/
Write_one_byte(0x44);
/*延迟等待转换完成*/
Delay_us(20);
/*写读暂存器指令*/
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
DS18B20程序.rar
(1.66 MB, 下载次数: 553)
2018-2-8 16:39 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
luoteyy1996
时间:
2018-7-8 16:18
想问一下最后的返回值为10进制还是16进制啊
作者:
qwqwqw222
时间:
2018-7-14 10:51
谢谢,刚好需要参考一下
作者:
静静听水声
时间:
2018-7-15 08:59
赞一个!
作者:
gogogogo
时间:
2018-9-6 17:31
我想下载没有黑币怎么办
作者:
xiaozhouzhou
时间:
2018-11-9 22:58
求下载
作者:
爱生活!
时间:
2018-11-10 12:27
谢谢楼主分享 刚好需要
作者:
zhc_y2000
时间:
2018-11-19 18:53
谢谢楼主分享 刚好需要
作者:
moshaoxi168
时间:
2018-12-4 21:54
谢谢楼主
作者:
sbit=TT
时间:
2019-1-6 15:01
感谢楼主~~~~~~~~
作者:
704470054
时间:
2019-3-9 17:29
感谢楼主
作者:
michaelgo
时间:
2019-5-9 20:01
感谢楼主
作者:
colinh
时间:
2019-5-10 14:47
帮顶下,谢谢分享
作者:
hbthgsli
时间:
2019-5-11 20:13
赞一个!
作者:
hwb_51hei
时间:
2019-6-19 10:16
谢谢楼主分享,试试能使用么
作者:
zyb329321151
时间:
2019-7-4 15:19
下载看看,看能否使用。
作者:
wcm136
时间:
2019-7-11 10:05
下载下来参考一下
作者:
xswyzao
时间:
2019-7-17 16:40
多谢楼主分享,正好要用
作者:
xiaogua
时间:
2019-7-18 13:38
18B20,好多年前接触的东西啊.
作者:
zhaomingli
时间:
2019-10-16 08:46
DS18B20 编程还是比较 麻烦的,延时函数 调用 太多,影响主程序的运行
得用定时器 来调度 程序来实现延时,详细见 见附件
21STM32F10x_DS18BD20源程序说明.zip
(97.94 KB, 下载次数: 25)
2019-10-16 08:46 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
wxh126
时间:
2019-12-16 09:11
18B20,好多年前接触的东西啊.
作者:
HWL0541
时间:
2020-2-25 18:59
正在做stm32 的 ds18b20
作者:
Z69644084
时间:
2020-3-12 17:42
这个是stm32的都能用吗
作者:
闲云孤鹤
时间:
2021-4-3 09:23
想看看用定时器怎么读温度
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1