找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1655|回复: 1
收起左侧

sht20温湿度程序

[复制链接]
ID:730024 发表于 2020-4-15 20:03 | 显示全部楼层 |阅读模式
//头文件
#include "iic.h"  
#include "delay.h"
#include "sht20.h"

//宏
#define SHT20ADDR       0x80       //sht写地址  
#define ACK             0                   //应答信号
#define NACK            1                  //非应答
#define FAIL            1                    //失败返回
#define READ_TEMP_COMD  0xf3        //读温度
#define READ_HUMI_COMD  0xf5        //读湿度

TempHumiValue_t temp_humi_Value;
static void SHT20_setResolution(void);
static void SHT20_setResolution(void);
void SHT20_softReset(void);

//写一个字节函数
static u8 sht20_writeOneByte(u8 dataToWrite)
{
        u8 ack;
        IIC_sendByte(dataToWrite);     
        ack = IIC_waitAck();
        return ack;
}

//复位
static void SHT20_softReset(void)                    
{
        IIC_start();                     
        SHT20_writeOneByte(SHT20ADDR&0xfe);  
        SHT20_writeOneByte(0xfe);                        
        IIC_stop();                       
}

//初始化
void sht20_Init(void)
{
        sht20_softReset();
}
//读字节
static u8 sht20_readOneByte(u8 ack)
{
        u8 temp;
        temp=IIC_readByte(ack);            
        return temp;
}

//写寄存器
static void sht20_setResolution(void)                    
{
          IIC_start();                                                                        
         if(sht20_writeOneByte(sht20ADDR&0xfe)==ACK) //80            
        {
                 if(sht20_writeOneByte(0xe6)==ACK)                              
                    {  
                             if(SHT20_writeOneByte(0x83)==ACK);   
                   }
          }
           IIC_stop();                                    
}

//读取测量值
float SHT20_readTemOrHum(u8 commod)
{
        float temp;                 
        u8 ack=1;
        u8  MSB,LSB;            
        float Humidity,Temperature;

        SHT20_setResolution();           
        IIC_start();                 
        ack = SHT20_writeOneByte(SHT20ADDR&0xfe);
        if( ack == ACK )               
        {        
                if(SHT20_writeOneByte(commod)==ACK)                     
                {
                 do
                        {
                                delay_ms(6);                                      
                                IIC_start();                                    
                        }while(SHT20_writeOneByte(SHT20ADDR|0x01)==NACK);      

                        MSB = SHT20_readOneByte(ACK);                          
                        LSB = SHT20_readOneByte(ACK);                        
                        SHT20_readOneByte(NACK);                              
                        IIC_stop();                                         
                        LSB &= 0xfc; //1111 1100                                      
                        temp = MSB*256 + LSB;                           
                        if (commod==((u8)READ_HUMI_COMD))                        
                        {        
                                Humidity =(temp*125)/65536-6;                 
                                return Humidity;                                
                        }                                                                                                  
                        else if(commod==((u8)READ_TEMP_COMD))                     
                        {        
                                 /*-- calculate temperature [¡ãC] --*/
                                Temperature = (temp*175.72f)/65536-46.85f;      
                                return Temperature;                             
                        }
                 }
        }
  return FAIL;
}

TempHumiValue_t * SHT20_readTemAndHum(void)
{
        temp_humi_Value.humidity = SHT20_readTemOrHum(READ_HUMI_COMD);
        temp_humi_Value.temperature = SHT20_readTemOrHum(READ_TEMP_COMD);
        return &temp_humi_Value;
}
回复

使用道具 举报

ID:1 发表于 2020-4-16 00:56 | 显示全部楼层
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表