1、/*/* HAL_DS18B20.h*/*/#ifndef _DS18B20_H_#define _DS18B20_H_void DS18B20_init(void);typedef structfloat (*ReadTemp)(void);HAL_DS18B20_T;extern HAL_DS18B20_T HAL_DS18B20;#endif/* 模块名称 : HALDS18B20 驱动程序 * 文件名称 : HAL_DS18B20.c* 版 本 : V1.0* 作 者 : * 说 明 : * 修改记录 - * 版 本 : * 作 者 : * 完成日期 : * 修改说明 : * - */
2、#include “bsp.h“HAL_DS18B20_T HAL_DS18B20;/*硬件配置 DATA:PC1*/#define DS18B20GPIO GPIOA#define DS18B20PIN GPIO_Pin_7#define DS18B20RCCAHB RCC_AHB1Periph_GPIOA#define SET_DATA_OUTPUT() GPIO_InitStructureDS18B20.GPIO_Mode = GPIO_Mode_OUT;GPIO_Init(DS18B20GPIO, #define SET_DATA_INPUT() GPIO_InitStructureD
3、S18B20.GPIO_Mode = GPIO_Mode_IN;GPIO_Init(DS18B20GPIO, #define SET_DATA() DS18B20GPIO-BSRRL = DS18B20PIN /设置为高电平#define CLR_DATA() DS18B20GPIO-BSRRH = DS18B20PIN /设置为低电平#define GET_DATA() GPIO_ReadInputDataBit(DS18B20GPIO, DS18B20PIN)#define READ_ROM (0x33) /#define MATCH_ROM (0x55)#define CONVERT_T
4、 (0x44)#define READ_SCRATCHPAD (0xBE)GPIO_InitTypeDef GPIO_InitStructureDS18B20;void DS18B20_DELAY_US(int c);char DS18B20_id8 = 0;char DS18B20_open(void)void DS18B20_close(void)/* 函 数 名: _DS18B20_delay* 功能说明: DS18B20 延时* 形 参: 无* 返 回 值: 无*/void DS18B20_DELAY_US(int c)int i =0;int j = 0;for(i=0;ii)/*
5、函 数 名: DS18B20_read_byte* 功能说明: DS18B20 读 1 个字节,低位在前;* 形 参: 无* 返 回 值: 无*/char DS18B20_read_byte(void)char ret=0;int i;for(i=0; i50)ret = -1; */return code; /* 函 数 名: GetTemp1* 功能说明: DS18B20 读温度代码* 形 参: 无* 返 回 值: 无*/float GetTemp1(void)/机箱内温度int temp = 0;DS18B20_open();DS18B20_reset();DS18B20_convert
6、(DS18B20_id);temp = DS18B20_read_temperature(DS18B20_id);DS18B20_close();return (float)temp/20.0;/* 函 数 名: DS18B20_Config* 功能说明: DS18B20 驱动配置* 形 参: 无* 返 回 值: 无*/void DS18B20_Config(void)RCC_APB1PeriphClockCmd(DS18B20RCCAHB, ENABLE);/* 配置 OE 口为输出模式 */GPIO_InitStructureDS18B20.GPIO_Mode = GPIO_Mode_OU
7、T;GPIO_InitStructureDS18B20.GPIO_OType = GPIO_OType_PP;GPIO_InitStructureDS18B20.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructureDS18B20.GPIO_PuPd = GPIO_PuPd_UP;GPIO_InitStructureDS18B20.GPIO_Pin = DS18B20PIN;GPIO_Init(DS18B20GPIO, SET_DATA(); /SET_DATA_OUTPUT(); /delay_init(180);/* 函 数 名: DS18B20_init* 功能说明: DS18B20 驱动配置* 形 参: 无* 返 回 值: 无*/void DS18B20_init(void)DS18B20_Config();DS18B20_read_id(DS18B20_id);HAL_DS18B20.ReadTemp = GetTemp1;/