普及:HX711AD一款专为高精度电子秤而设计的 24 位 A/D 转换器芯片;
获取数据方法:两个普通IO DOUT输入:GPIO_Mode_In_FL_No_IT;
SCK输出:GPIO_Mode_Out_PP_Low_Slow;
输出口必须硬件上需接上拉电阻到电源,保证可以输出高电平,否则HX711芯片的数据口一直保持同样电平;
程序:官方例程:
sbit ADDO = P1^5; sbit ADSK = P0^0; unsigned long ReadCount(void) { unsigned long Count; unsigned char i; ADSK=0; // 使能 AD ( PD_SCK 置低) Count=0; while(ADDO); //AD 转换未结束则等待,否则开始读取 for (i=0;i<24;i++) { ADSK=1; //PD_SCK 置高(发送脉冲) Count=Count<<1; // 下降沿来时变量 Count 左移一位,右侧补零 ADSK=0; //PD_SCK 置低 if(ADDO) Count++; } ADSK=1; Count=Count^0x800000;// 第 25 个脉冲下降沿来时,转换数据 ADSK=0; return(Count); }
STM8例程:
//IO配置 #define HX711_DOUT_GPIO GPIOC #define HX711_DOUT_PIN GPIO_Pin_1 #define HX711_DOUT_STATUS GPIO_ReadInputDataBit(HX711_DOUT_GPIO, HX711_DOUT_PIN)//读取 #define HX711_DOUT_H GPIO_SetBits(HX711_DOUT_GPIO,HX711_DOUT_PIN) #define HX711_SCK_GPIO GPIOC #define HX711_SCK_PIN GPIO_Pin_0 #define HX711_SCK_MODE GPIO_Mode_Out_PP_Low_Slow #define HX711_SCK_L GPIO_ResetBits(HX711_SCK_GPIO,HX711_SCK_PIN) #define HX711_SCK_H GPIO_SetBits(HX711_SCK_GPIO,HX711_SCK_PIN) GPIO_Init(HX711_DOUT_GPIO, HX711_DOUT_PIN, GPIO_Mode_In_FL_No_IT ); //AD数据口 输入浮空,无外部中断 GPIO_Init(HX711_SCK_GPIO, HX711_SCK_PIN, GPIO_Mode_Out_PP_Low_Slow ); //AD时钟口 输出推挽,高电平,2MHz