新手上路
- 积分
- 42
- 金钱
- 42
- 注册时间
- 2019-6-20
- 在线时间
- 10 小时
|
float hx711_buffer=0;//定义hx711_buffer来接受hx711read读取的信息
float weight_maopi=0;//毛皮重量
float weight_shiwu=0;//实物重量
float a;
#define GapValue 1000
void HX_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure); //PA2时钟线
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure); //PA3数据线
}
unsigned long HX711_Read(void) //读HX711芯片输出的数据。
{
unsigned long val = 0;
unsigned char i = 0;
GPIO_SetBits(GPIOC,GPIO_Pin_2); //DOUT=1
GPIO_ResetBits(GPIOC,GPIO_Pin_1); //SCK=0
while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2)); //等待DOUT=0
delay_us(1);
for(i=0;i<24;i++)
{
GPIO_SetBits(GPIOC,GPIO_Pin_1); //SCK=1
val=val<<1;
delay_us(1);
GPIO_ResetBits(GPIOC,GPIO_Pin_1); //SCK=0
if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2)) //DOUT=1
val++;
delay_us(1);
}
GPIO_SetBits(GPIOC,GPIO_Pin_1);
val = val^0x800000;
delay_us(1);
GPIO_ResetBits(GPIOC,GPIO_Pin_1);
delay_us(1);
return val;
}
float Get_Maopi(void)
{
hx711_buffer=HX711_Read();
weight_maopi=hx711_buffer;
a=weight_maopi;
return a;
}
float Get_Weight(void)
{
float m;
hx711_buffer=HX711_Read();
if(hx711_buffer>weight_maopi)
{
weight_shiwu=hx711_buffer;
weight_shiwu=(weight_shiwu-weight_maopi)/380.5;
}
m=weight_shiwu;
return m;
}
u16 Get_Weight_Average(u8 times)
{
u32 temp_val=0;
u8 t;
for(t=0;t<times;t++)
{
temp_val+=Get_Weight();
delay_ms(5);
}
return temp_val/times;
}
|
|