标题:
STM32F407下的HX711压力传感器程序
[打印本页]
作者:
羽过天未明
时间:
2020-2-14 20:16
标题:
STM32F407下的HX711压力传感器程序
基于STM32F407下的HX711压力传感器程序分享
单片机源程序如下:
#include "HX711.h"
#include "delay.h"
long HX711_Buffer = 0;
long Weight_Shiwu = 0;
#define HIGH 1
#define LOW 0
#define HX711_GROUP GPIOA
void digitalWrite(GPIO_TypeDef * GPIO,int pin,int value)
{
if(value==HIGH)//set 1
{
GPIO_SetBits(GPIO,pin);
}
if(value==LOW)//reset 0
{
GPIO_ResetBits(GPIO,pin);
}
}
int digitalRead(GPIO_TypeDef * GPIO,int pin)
{
return GPIO_ReadInputDataBit(GPIO,pin);
}
//****************************************************
//初始化HX711
//****************************************************
void Init_Hx711()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
//SCK
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitTypeDef GPIO_InitStructure1;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
//DOUT
GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_4 ;
GPIO_InitStructure1.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure1.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure1.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure1.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure1);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
}
//****************************************************
//获取毛皮重量
//****************************************************
/*void Get_Maopi()
{
Weight_Maopi = HX711_Read();
}*/
//****************************************************
//称重
//****************************************************
long Get_Weight()
{
HX711_Buffer = HX711_Read();
Weight_Shiwu = HX711_Buffer;
Weight_Shiwu = (long)((float)Weight_Shiwu/44+0.05);
return Weight_Shiwu;
}
//****************************************************
//读取HX711
//****************************************************
unsigned long HX711_Read(void) //增益128
{
unsigned long val = 0;
unsigned char i = 0;
//判断模块是否准备好
while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4));
delay_us(1);
//sck 拉低
GPIO_ResetBits(GPIOA,GPIO_Pin_3);
//再次判断是否准备好
while(!GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4));
for(i=0;i<24;i++)
{
delay_us(100);
GPIO_SetBits(GPIOA,GPIO_Pin_3);
val=val<<1;
delay_us(1);
GPIO_ResetBits(GPIOA,GPIO_Pin_3);
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4))
val++;
delay_us(1);
}
GPIO_SetBits(GPIOA,GPIO_Pin_3);
val = val^0x800000;
delay_us(1);
GPIO_ResetBits(GPIOA,GPIO_Pin_3);
delay_us(1);
return val;
}
复制代码
所有资料51hei提供下载:
HX711 ok.7z
(300.79 KB, 下载次数: 52)
2020-2-15 17:05 上传
点击文件名下载附件
基于STM32F407下的HX711压力传感器程序
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1