• 大小: 11KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: 其他
  • 标签: sht11  

资源简介

自己写的SHT11的单片机驱动源码,可以直接读取温度和湿度,能直接使用,非常方便!

资源截图

代码片段和文件信息

#include “sht11.h“
#include 

/*************************************************************
  Function   :SHT11_Delay  
  Description:SHT11时序需要的延时
  Input      : none        
  return     : none    
*************************************************************/
void SHT11_Delay(void)
{
__ASM(“NOP“);
}


/*************************************************************
  Function   :SHT11_DATAOut
  Description:设置DATA引脚为输出
  Input      : none
  return     : none
*************************************************************/
void SHT11_DATAOut(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        //PB7 DATA 推挽输出       
        GPIO_InitStructure.Pin = GPIO_PIN_7;
        GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH;
        GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
        HAL_GPIO_Init(GPIOB &GPIO_InitStructure);
}


/*************************************************************
  Function   :SHT11_DATAIn  
  Description:设置DATA引脚为输入
  Input      : none        
  return     : none    
*************************************************************/
void SHT11_DATAIn(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        //PB7 DATA 浮动输入       
        GPIO_InitStructure.Pin = GPIO_PIN_7;
        GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH;
        GPIO_InitStructure.Mode = GPIO_MODE_INPUT;//GPIO_Mode_IN_FLOATING;
        HAL_GPIO_Init(GPIOB &GPIO_InitStructure);
}

/*************************************************************
  Function   :SHT11_WriteByte  
  Description:写1字节
  Input      : value:要写入的字节       
  return     : err: 0-正确  1-错误    
*************************************************************/
uint8_t SHT11_WriteByte(uint8_t value)
{
        uint8_t i err = 0;
        

        SHT11_DATAOut();                                //设置DATA数据线为输出

        for(i = 0x80; i > 0; i /= 2)  //?1???
        {
                if(i & value)
                        SHT11_DATA_H();
                else
                        SHT11_DATA_L();
                SHT11_Delay();
                SHT11_SCK_H();
                SHT11_Delay();
                SHT11_SCK_L();
                SHT11_Delay();
        }
        SHT11_DATAIn();                                  //设置DATA数据线为输入释放DATA线
        SHT11_SCK_H();
        err = SHT11_DATA_R();                            //读取SHT11的应答位
        SHT11_SCK_L();

        return err;
}

/*************************************************************
  Function   :SHT11_ReadByte  
  Description:读1字节数据
  Input      : Ack: 0-不应答  1-应答        
  return     : err: 0-正确 1-错误    
*************************************************************/
uint8_t SHT11_ReadByte(uint8_t Ack)
{
        uint8_t i val = 0;

        SHT11_DATAIn();                                  //设置DATA数据线为输入
        for(i = 0x80; i > 0; i /= 2)                     //读取1字节的数据
        {
                SHT11_Delay();
               

评论

共有 条评论