HX711称重模块程序(程序已过时,早期写的不行。而且建议用tm7711)

博客提到称重公式截自厂家数据手册,实际使用时需用砝码进行多点数据拟合,每个传感器不能直接套用,否则值不准确。还采用冒泡排序排除前后过大过小值,取中间值进行处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  

以上部分截自于厂家数据手册。

#include <STC12C5A60S2.H>
#include"lcd12864.h"
unsigned long HX711_Buffer = 0;
unsigned long Weight_Maopi = 0;
unsigned long Weight_Maopi_0 = 0;
long Weight_Shiwu = 0;
sbit HX711_SCK=P1^0;
sbit HX711_DOUT=P1^1;

unsigned long HX711_Read(void)	//增益128
{
	unsigned long count; 
	unsigned char i; 
  	HX711_DOUT=1; 
  Delay__5us();
  	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__5us();
	HX711_SCK=0;  
	return(count);
}

void Get_Weight()
{
	HX711_Buffer = HX711_Read();
	Weight_Shiwu=HX711_Buffer;
//	Weight_Shiwu = Weight_Shiwu - Weight_Maopi;		//获取净重															
		if(Weight_Shiwu > 0)			
	{	
		Weight_Shiwu = (unsigned int)((float)Weight_Shiwu*10/GapValue)-8530; 	//计算实物的实际重量
									
//																		
//		if(Weight_Shiwu > 3000)		//超重报警
//		{
//			Flag_ERROR = 1;	
//		}
//		else
//		{
//			Flag_ERROR = 0;
//		}
//	}
//	else
//	{
//		Weight_Shiwu = 0;
//	//	Flag_ERROR = 1;				//负重报警
//	}
	}
	delay(5);
		Display_Weight();
	
}

注:我在实际使用中,公式是用砝码进行多点数据拟合而成的,每个传感器不能直接套用此公式,否则值并不准确。并且用冒泡排序把前后一些过大过小值排除,取中间值。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风飘零翼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值