基于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)
|