我想用HX711实现一个超过一定的重量就报警的程序,功能很简单,但是就是不知道哪里错了。请各位大神帮忙看下。我不会处理读出来数据,return回来的 数据如何跟处理数据的程序连起来呀?我直接比较的,感觉不可以。。求指点。
#include <reg52.h>
#include <intrins.h>
//IO设置
sbit HX711_DOUT=P2^0;
sbit HX711_SCK=P2^1;
sbit FM=P2^3;
//定义全局变量
unsigned long count;
unsigned long zhi;
//****************************************************
//延时函数
//****************************************************
void Delay__hx711_us(void)
{
_nop_();
_nop_();
}
//****************************************************
//读取HX711
//****************************************************
unsigned long HX711_Read(void) //增益128
{
unsigned char i;
HX711_DOUT=1;
Delay__hx711_us();
Delay__hx711_us();
Delay__hx711_us();
Delay__hx711_us();
HX711_SCK=0;
count=0;
while(HX711_DOUT);
for(i=0;i<24;i++)
{
HX711_SCK=1;
count=count<<1;
Delay__hx711_us();
Delay__hx711_us();
HX711_SCK=0;
Delay__hx711_us();
Delay__hx711_us();
if(HX711_DOUT)
count++;
}
HX711_SCK=1;
Delay__hx711_us();
count=count^0x800000;//第25个脉冲下降沿来时,转换数据
Delay__hx711_us();
HX711_SCK=0;
Delay__hx711_us();
Delay__hx711_us();
return(count);
}
void main()
{
unsigned int tt=45535;// 1KG的重量 (满量程3KG=2,147,483)
FM=1;
P1=0xFF;
while(1)
{
zhi=HX711_Read();
if(zhi>tt)
{
FM=0;
P1=0;
}
else
{
FM=1;
P1=0xFF;
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>