equal love

STM8驱动HX711

普及: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 

  

      

       

posted @ 2017-04-17 17:19  珵诩媛  阅读(2594)  评论(0编辑  收藏  举报