HX711模块读取称重传感器的值怎么读取不了?

2019-07-15 12:17发布

程序:
void Delay__hx711_us(void)
{
        _nop_();
        _nop_();
}
//****************************************************
// 读取 HX711
//****************************************************
unsigned long HX711_Read(void) //增益 128
{
        unsigned long count;
        unsigned char i;
          HX711_DOUT=1;
        Delay__hx711_us();
          HX711_SCK=0;
          count=0;
          while(HX711_DOUT);
          for(i=0;i<24;i++)
        {
                  HX711_SCK=1;
                  count=count<<1;
                HX711_SCK=0;
                  if(HX711_DOUT) count++;
        }
        HX711_SCK=1;
    count=count^0x800000;//第25个脉冲下降沿来时,转换数据
        Delay__hx711_us();
        HX711_SCK=0;  
        return(count);
}


主函数直接用定义unsigned long 的date变量来获得date=HX711_Read();  
但是在LCD1602 完全没有反应,1602显示是正常的,接线也没有问题,HX711的管脚接51单片机的 DouT=P3^0;
SCLK = P3^3;请问怎么解决?哪里的问题
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
croson
2019-07-16 03:57
口弟构成 发表于 2016-12-22 17:16
我之前做过这个,你应该有hx711的数据手册吧,没有的话,在网上搜,一大堆,讲解很详细的,不难理解,实在不懂再联系

//获得物体的真实重量
unsigned long Get_Weight(void )
{
        HX711_Buffer = HX711_Read();
        HX711_Buffer = HX711_Buffer/100;
        if(HX711_Buffer > Get_plank())
        {
                True = HX711_Buffer;
                True = True - Get_plank(); // 获取实物的 AD 采样数值。
                True = (unsigned int)((float)True/4.257 +0.05); // 计 算 实 物 的 实际重量
                // 因 为不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的 4.30 这个除数。
                // 当 发现测试出来的重量偏大时,增加该数值。
                // 如 果测试出来的重量偏小时,减小改数值。
                // 该 数值一般在 4.0-5.0 之间。因传感器不同而定。
                //+0.05是为了四舍五入百分位
                Buzzer = 1; // 关闭警报
        }
        // else if(HX711_Buffer < Weight_Maopi - 30)
        // {
        // Buzzer = 0; // 负重量报警         
        // }
        // else if(HX711_Buffer > Weight_Maopi + 24970) // 大于 5Kg 的最大量程,报警
        // {
        // Buzzer = 0;
        // }
//        if(True > 5000 || HX711_Buffer < Get_plank() - 30)
//        {
//                Buzzer = 0;
//        }
//        else
//        {
//                Buzzer = 1;
//        }
//        True *=19.11;
//        if(mode!=0) True-=76;
        return True;
}

//****************************************************
// 获取上板的重量
//****************************************************
unsigned long  Get_plank(void)
{   
//        unsigned long         aa;
//        HX711_Buffer=(HX711_Read()-8387600);
//    HX711_Buffer=(unsigned long)((HX711_Buffer*50)/33490);
//        HX711_Buffer=(HX711_Buffer-311)*10/11-9-aa;

        HX711_Buffer = HX711_Read();
        Plank = HX711_Buffer/100;
        return Plank;
//        return HX711_Buffer;
}

按照理解代码应该是这样的,但是在不加重量1602显示好大的数字,过千位。我的称重传感器是10kg 的。是程序哪里有问题吗?

一周热门 更多>