找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 127|回复: 7
打印 上一主题 下一主题
收起左侧

51单片机配置hx711压力传感器,为什么会卡在while循环里,引脚也没有冲突

[复制链接]
跳转到指定楼层
楼主
ID:1120233 发表于 2024-5-12 15:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;
}

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


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1034262 发表于 2024-5-12 18:44 | 只看该作者
程序不要使用死等的代码,一旦等的信号没出现,必死。
回复

使用道具 举报

板凳
ID:883242 发表于 2024-5-12 20:05 | 只看该作者
用示波器检查波形,看DT为什么始终无法置零。
回复

使用道具 举报

地板
ID:141497 发表于 2024-5-12 21:58 | 只看该作者
楼上说得对,程序要设置退出while条件,也就是异常处理,比如超时退出等。
回复

使用道具 举报

5#
ID:161164 发表于 2024-5-13 10:08 | 只看该作者
你的代码和官方提供的差不多
按理是没太多问题
建议从硬件如接线方面入手检查
回复

使用道具 举报

6#
ID:857072 发表于 2024-5-13 12:27 来自手机 | 只看该作者
出错了,退不出来呗。
回复

使用道具 举报

7#
ID:1120233 发表于 2024-5-13 13:59 | 只看该作者
lkc8210 发表于 2024-5-13 10:08
你的代码和官方提供的差不多
按理是没太多问题
建议从硬件如接线方面入手检查

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

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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