标题: 51单片机配置hx711压力传感器,为什么会卡在while循环里,引脚也没有冲突 [打印本页]

作者: xht3118008607    时间: 2024-5-12 15:39
标题: 51单片机配置hx711压力传感器,为什么会卡在while循环里,引脚也没有冲突
sbit DT=P2^2;
sbit SCK=P2^1;

void Delay__hx711_us(void)
{
        _nop_();
        _nop_();
}

unsigned long ReadCount()
{
        unsigned long count;
        unsigned char i;
        DT=1;
        Delay__hx711_us();
        SCK=0;
        count=0;
        while(DT);
        for(i=0;i<24;i++)
        {
                SCK=1;
                count<<=1;
                SCK=0;
                if(DT)count++;
        }
        SCK=1;
        count=count^0x800000;
        Delay__hx711_us();
        SCK=0;
        return count;
}

unsigned long Get_Weight(void)
{
        unsigned long Weight=0;
        Weight = ReadCount();
        Weight = (unsigned long)(Weight/400);
        return Weight;
}

难道是传感器坏了吗?求大神求解!!!



作者: coody_sz    时间: 2024-5-12 18:44
程序不要使用死等的代码,一旦等的信号没出现,必死。
作者: Hephaestus    时间: 2024-5-12 20:05
用示波器检查波形,看DT为什么始终无法置零。
作者: 51jia    时间: 2024-5-12 21:58
楼上说得对,程序要设置退出while条件,也就是异常处理,比如超时退出等。
作者: lkc8210    时间: 2024-5-13 10:08
你的代码和官方提供的差不多
按理是没太多问题
建议从硬件如接线方面入手检查
作者: a185980800    时间: 2024-5-13 12:27
出错了,退不出来呗。
作者: xht3118008607    时间: 2024-5-13 13:59
lkc8210 发表于 2024-5-13 10:08
你的代码和官方提供的差不多
按理是没太多问题
建议从硬件如接线方面入手检查

对,跟官方提供的没什么区别,接线也没有问题,应该是芯片坏了,我已经买了新的,到了再看看

作者: xht3118008607    时间: 2024-5-13 14:04
51jia 发表于 2024-5-12 21:58
楼上说得对,程序要设置退出while条件,也就是异常处理,比如超时退出等。

这里我只想用压力传感器,退出while条件就是DT置零,也就是相当于hx711给个响应,如果设置超时退出,就获取不到值,如果把while去掉,输出的就是最大值,我所想获取的值是hx711将DT引脚置零置一的值,应该是hx711芯片坏了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1