一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 3378|回复: 4

[其他综合] 【求助】SHT11湿度计读取程序……

[复制链接]
发表于 2012-3-20 22:06 | 显示全部楼层 |阅读模式
本帖最后由 sdf15937 于 2012-3-20 22:07 编辑

关于SHT11湿度计的51程序
keil提示是warningL16:uncaller segment ,ignored for overlay process
             segment:?PR?_WRITE_SHT11?WENJ
仿真的结果是有规律的乱跳 QQ截图20120320220443.jpg QQ截图20120320220451.jpg 读数都是不准确的
/*******************温湿度计驱动***************/
void Start_SHT11(uchar com)
{
    uchar i;
    SHT_DAT=1;
    SHT_SCK=0;
    for(i=0;i<12;i++)
    {
        SHT_SCK=1;
        _nop_();
        SHT_SCK=0;
    }
    SHT_DAT=1;
    SHT_SCK=1;
    _nop_();
    SHT_DAT=0;
    _nop_();
    SHT_SCK=0;
    _nop_();
    SHT_SCK=1;
    _nop_();
    SHT_DAT=1;
    _nop_();
    SHT_SCK=0;
    for(i=0;i<8;i++)
    {
        SHT_DAT=(bit)(com&0x80);
        com<<=1;
        SHT_SCK=1;
        _nop_();
        SHT_SCK=0;
    }
    SHT_DAT=1;
    _nop_();
    _nop_();
    i=200;
    do{
        _nop_();
        _nop_();
        i-=1;
    }while((SHT_DAT==1)&&(i!=0));
    SHT_SCK=1;
    _nop_();
    SHT_SCK=0;
}
void Write_SHT11(uchar com)
{
    uchar i,j;
    SHT_DAT=1;
    SHT_SCK=0;
    for(i=0;i<12;i++)
    {
        SHT_SCK=1;
_nop_();
        SHT_SCK=0;
    }
    SHT_DAT=1;
    SHT_SCK=1;
    _nop_();
    SHT_DAT=0;
    _nop_();
    SHT_SCK=0;
    _nop_();
    SHT_SCK=1;
    _nop_();
    SHT_DAT=1;
    _nop_();
    SHT_SCK=0;
    j=0x06;
    for(i=0;i<8;i++)
    {
        SHT_DAT=(bit)(j&0x80);
        com<<=1;
        SHT_SCK=1;
        _nop_();
        SHT_SCK=0;
    }
    SHT_DAT=1;
    _nop_();
    _nop_();
    i=200;
    do{
        _nop_();
        _nop_();
i-=1;
    }while((SHT_DAT==1)&&(i!=0));
    SHT_SCK=1;
    _nop_();
    SHT_SCK=0;
    for(i=0;i<8;i++)
    {
        SHT_DAT=(bit)(com&0x80);
        com<<=1;
        SHT_SCK=1;
_nop_();
        SHT_SCK=0;
    }
    SHT_DAT=1;
    _nop_();
    _nop_();
    i=200;
    do{
        _nop_();
        _nop_();
        i-=1;
    }while((SHT_DAT==1)&&(i!=0));
    SHT_SCK=1;
    _nop_();
    SHT_SCK=0;
}
uint Read_SHT11(void)
{
    uchar i;
    uchar j;
    uint k;
    if(SHT_DAT==0)
    {
        k=0;
j=0;
for(i=0;i<8;i++)
{
     j<<=1;
     j|=(uchar)SHT_DAT;
     SHT_SCK=1;
     _nop_();
     SHT_SCK=0;
}
        SHT_DAT=0;
_nop_();
        SHT_SCK=1;
_nop_();
SHT_SCK=0;
k=j;
k*=256;
j=0;
        for(i=0;i<8;i++)
{
     j<<=1;
            j|=(uchar)SHT_DAT;
     SHT_SCK=1;
     _nop_();
     SHT_SCK=0;
}
        SHT_DAT=1;
_nop_();
        SHT_SCK=1;
_nop_();
SHT_SCK=0;
k|=j;
return(k);
    }
    else
    {
        return(0xf000);
    }
}




温湿度计算与显示
old_sec=Read1302(0x81)%16;     //湿度显示
            if((old_sec&0x01)==0)
            {
                flag=0x03;    //偶数秒启动温度采集转换
            }
            else
            {
                flag=0x05;    //奇数秒启动湿度采集转换
            }
            Start_SHT11(flag);
      
        temp=Read_SHT11();
        if(tempsht!=0xf000)
        {   //采集成功,可以读
            if(flag==0x03)
            {                 //如下进行温度计算,并显示XX.X
                f_temp=0.01;
                f_temp*=tempsht;
                f_temp-=40;
                f_temp*=10;
                tempsht=(uint)f_temp;
   
        LCD1602_write_char(20,0,tempsht/100+0x30); //温度显示10位
      LCD1602_write_data((tempsht%100)/10+0x30);
       LCD1602_write_data(0x2E);
        LCD1602_write_data((tempsht%100)%10+0x30);
      LCD1602_write_data(3);
               
            }
            else
            {                 //如下进行湿度计算,并显示XX.X
                f_temp=(float)tempsht;
                f_temp*=(float)tempsht;
                f_temp*=-2.8e-6;
                f_temp+=((float)tempsht*0.045);
                f_temp-=4;
                f_temp*=10;
                tempsht=(uint)f_temp;
     
     LCD1602_write_char(28,0,tempsht/100+0x30); //湿度显示 1
      LCD1602_write_data((tempsht%100)/10+0x30);
       LCD1602_write_data(0x2E);
        LCD1602_write_data((tempsht%100)%10+0x30);
      LCD1602_write_data('%');
            }
        }
发表于 2012-3-20 22:25 | 显示全部楼层
实际运行也跳吗?
回复

使用道具 举报

 楼主| 发表于 2012-3-21 11:36 | 显示全部楼层
实际运行也跳吗?
阳光999 发表于 2012-3-20 22:25 https://www.yleee.com.cn/images/common/back.gif



    没有实际运行过……东西还在淘宝,没买
回复

使用道具 举报

发表于 2012-3-21 12:38 | 显示全部楼层
没有实际运行过……东西还在淘宝,没买
sdf15937 发表于 2012-3-21 11:36 https://www.yleee.com.cn/images/common/back.gif



           单位曾用过几十个。用商家提供的程序实际运行应该是没问题的。
回复

使用道具 举报

发表于 2012-3-21 15:44 | 显示全部楼层
生產商有放範本出來:
http://www.sensirion.com.cn/down/downimg/SampleCode_SHT1x_SHT7x.pdf
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-11-5 05:54 , Processed in 0.034109 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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