基于STM32的 DS18b20 驱动程序

上传人:马*** 文档编号:141547917 上传时间:2022-08-24 格式:DOC 页数:8 大小:42.50KB
收藏 版权申诉 举报 下载
基于STM32的 DS18b20 驱动程序_第1页
第1页 / 共8页
基于STM32的 DS18b20 驱动程序_第2页
第2页 / 共8页
基于STM32的 DS18b20 驱动程序_第3页
第3页 / 共8页
资源描述:

《基于STM32的 DS18b20 驱动程序》由会员分享,可在线阅读,更多相关《基于STM32的 DS18b20 驱动程序(8页珍藏版)》请在装配图网上搜索。

1、/=DS18b20.h=/*- DS18b20驱动程序-*/#ifndef _DS18B20_H#define _DS18B20_Htypedef enumFAILED = 0 ,PASSED = !FAILED TestStatus ;#define DQ_GPIO GPIOD#define DQ_GPIO_Pin GPIO_Pin_5/REGISTER COMMANDS#define REGISTER_9_BITS 0x1F#define REGISTER_10_BITS 0x3F#define REGISTER_11_BITS 0x5F#define REGISTER_12_BIT2 0

2、x7F/ROM COMMANDS#define ROM_Search_Cmd 0xF0#define ROM_Read_Cmd 0x33#define ROM_Match_Cmd 0x55#define ROM_Skip_Cmd 0xCC#define ROM_AlarmSearch_Cmd 0xEC/DS18b20 FUNCTION COMMANDS#define Convert_T 0x44#define Write_Scratchpad 0x4E#define Read_Scratchpad 0xBE#define Copy_Scratchpad 0x48#define Recall_E

3、EPROM 0x88#define Read_PowerSupply 0x84#define DQ_Write_1() GPIO_SetBits(DQ_GPIO ,DQ_GPIO_Pin) /写1#define DQ_Write_0() GPIO_ResetBits(DQ_GPIO ,DQ_GPIO_Pin)/写0#define DQ_ReadBit() GPIO_ReadInputDataBit(DQ_GPIO ,DQ_GPIO_Pin) /读DQ上的值extern void GPIO_DQ_Out_Mode(void) ; /DQ输出模式extern void GPIO_DQ_Input_

4、Mode(void) ; /DQ输入模式extern void Tx_ResetPulse(void) ; /发送复位脉冲extern void Rx_PresencePulse(void) ; /接受应答信号extern void Write_OneByte_ToDS18b20(unsigned char data) ; /写一个字节到18b20extern unsigned char Read_OneByte_FromDS18b20(void) ; /从18b20读一个字节extern void Read_Temperature(unsigned char *sign ,unsigned

5、char *interger , unsigned int *decimal) ; /读温度/写配置参数TH,TL和初始化配置寄存器extern void Write_EEPROM(unsigned char Th,unsigned char Tl,unsigned char Register_Con );void DS18B20_Init(void) ; /初始化#endif /*DS18B20*/=/=DS18b20.c=/#include stm32f10x_lib.h#include DS18b20.h#include SysTick_Delay.h/*函数名称:GPIO_DQ_Out

6、_Mode功 能:设置DQ引脚为开漏输出模式参 数:无返回值 :无*/void GPIO_DQ_Out_Mode(void) GPIO_InitTypeDef GPIO_InitStructure ; GPIO_InitStructure.GPIO_Pin = DQ_GPIO_Pin ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD ; /开漏输出 GPIO_Init(DQ_GPIO ,&GPIO_InitStructure) ;/*函数名称:

7、GPIO_DQ_Input_Mode功 能:设置DQ引脚为浮空输入模式参 数:无返回值 :无*/void GPIO_DQ_Input_Mode(void) GPIO_InitTypeDef GPIO_InitStructure ; GPIO_InitStructure.GPIO_Pin = DQ_GPIO_Pin ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ; /浮空输入 GPIO_Init(DQ_GPIO ,&GPIO_Ini

8、tStructure) ;/*函数名称:Tx_ResetPulse功 能:发送复位脉冲参 数:无返回值 :无*/void Tx_ResetPulse(void) GPIO_DQ_Out_Mode() ; DQ_Write_0() ; /复位脉冲 Delay_Nus(500) ; /至少保持480us DQ_Write_1() ; /加速上升沿速度 Delay_Nus(1) ;/*函数名称:Rx_PresencePulse功 能:接受应答信号参 数:无返回值 :无*/void Rx_PresencePulse(void) GPIO_DQ_Input_Mode() ; while( DQ_Read

9、Bit() ; /等待DS18b20应答 while( DQ_ReadBit() = 0) ; /DS18b20将总线拉低60240us ,然后总线由上拉电阻拉高 Delay_Nus(300) ; GPIO_DQ_Out_Mode() ; /接受完成,主机重新控制总线/*函数名称:Write_OneByte_ToDS18b20功 能:写一个字节到DS18b20参 数:无返回值 :无*/void Write_OneByte_ToDS18b20(unsigned char data) unsigned char i ; GPIO_DQ_Out_Mode() ; for(i=0 ;i= 1 ; /*

10、函数名称:Read_OneByte_FromDS18b20功 能:从DS18b20读一个字节参 数:无返回值 :读出的数据*/unsigned char Read_OneByte_FromDS18b20(void) unsigned char i ,data = 0 ; for(i=0 ;i= 1 ; DQ_Write_0() ; Delay_Nus(2) ; GPIO_DQ_Input_Mode() ; Delay_Nus(1) ; if(DQ_ReadBit() data |= 0x80 ; Delay_Nus(70) ; /等待这一位数据完成传输 GPIO_DQ_Out_Mode() ;

11、 return data ;/*函数名称:Read_Temperature功 能:读取温度信息参 数:*sign - 保存符号(零上或零下) *integer - 保存整数部分 *decimal - 保存小数部分返回值 :无*/void Read_Temperature(unsigned char *sign , unsigned char *interger , unsigned int *decimal) unsigned char a=0; unsigned char b=0; /volatile unsigned char c=0; /volatile unsigned char d=

12、0; /volatile unsigned char e=0; unsigned int tmp ; DS18B20_Init(); Write_OneByte_ToDS18b20(ROM_Read_Cmd); DS18B20_Init(); Write_OneByte_ToDS18b20(ROM_Skip_Cmd);/跳过读序列号操作 Write_OneByte_ToDS18b20(Convert_T); /启动温度转换 Delay_Nms(780);/等待DS18b20转换完成 DS18B20_Init(); Write_OneByte_ToDS18b20(ROM_Skip_Cmd); W

13、rite_OneByte_ToDS18b20(Read_Scratchpad); /读取寄存器内容(可以从寄存器0读到寄存器8) a= Read_OneByte_FromDS18b20(); /温度低8位 b= Read_OneByte_FromDS18b20(); /温度高8位 /c= Read_OneByte_FromDS18B20(); /TH /d= Read_OneByte_FromDS18B20(); /TL /e= Read_OneByte_FromDS18B20(); /Configuration Register Tx_ResetPulse(); /中断数据读取 tmp =

14、(b4) & 0x00FF; /整数部分 *decimal = (tmp & 0x000F) * 625 ; /小数部分 /*函数名称:Write_EEPROM功 能:写配置参数参 数:Th - 报警温度上限 Tl - 报警温度下限 Register_Con - 控制寄存器的值返回值 :读出的数据*/void Write_EEPROM(unsigned char Th,unsigned char Tl,unsigned char Register_Con ) DS18B20_Init(); Write_OneByte_ToDS18b20(ROM_Skip_Cmd); Write_OneByte

15、_ToDS18b20(Write_Scratchpad); Write_OneByte_ToDS18b20(Th);/Th=7F Write_OneByte_ToDS18b20(Tl);/Tl=FF 最高位符号位 Write_OneByte_ToDS18b20(Register_Con);/12位模式 Delay_Nms(700); DS18B20_Init(); Write_OneByte_ToDS18b20(ROM_Skip_Cmd); Write_OneByte_ToDS18b20(Copy_Scratchpad);/将寄存器的配置值写入EEPROM Delay_Nms(300);/*函

16、数名称:DS18B20_Init功 能:初始化DS18b20参 数:无返回值 :无*/void DS18B20_Init(void) Tx_ResetPulse(); Rx_PresencePulse(); /=/=要用到的其他文件=/=Systick_Delay.h=/*- 利用SysTick进行精确定时-*/#ifndef _SYSTICKDELAY_H#define _SYSTICKDELAY_H #include stm32f10x_lib.hextern void Delay_Nms(u16 Nms);extern void Delay_Nus(u32 Nus);#endif /*S

17、YSTICKDELAY_H*/ /=/=Systick_Delay.c=/#include stm32f10x_lib.h#include SysTick_Delay.h/延时Nms/注意Nms的范围/Nms=0xffffff*8/SYSCLK/对72M条件下,NmsLOAD=(u32)Nms*9000; /给重装载寄存器赋值,9000时,将产生1ms的时基 SysTick-CTRL|=0x01; /开始倒数 while(!(SysTick-CTRL&(1CTRL=0X00000000; /关闭计数器 SysTick-VAL=0X00000000; /清空计数器 /延时us void Delay_Nus(u32 Nus) SysTick-LOAD=Nus*9; /时间加载 SysTick-CTRL|=0x01; /开始倒数 while(!(SysTick-CTRL&(1CTRL=0X00000000; /关闭计数器 SysTick-VAL=0X00000000; /清空计数器 /=/* 写得一般,希望大家能给点建议! */

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!