AVR ATMEGA16A 单片机驱动HX711 DA转换器
时间:10-02
整理:3721RD
点击:
1脚接HX711模块的SCLK
0脚接HX711模块的DOUT
ulint Count=0;
//AD模块数据采集
ulint HX711_Read(void)
{
uchar i;
PORTA&=~BIT(1); //SCLK置低
nms_delay(10); //延时大于4个数据周期,AD芯片稳定工作
Count=0;
while((PINA&BIT(0))); //检测DOUT,高电平等待
for (i=0;i<24;i++) //24为数据输出
{
PORTA|=BIT(1); //SCLK拉高
Count=Count<<1; //Count左移一位,空出的低位为写数据做准备
PORTA&=~BIT(1); //SCLK置低
if((PINA&BIT(0))) //检测DOUT电平,为高则Count自加
Count++;
}
PORTA|=BIT(1); //第25个脉冲,选择下次转换通道为A,128增益
PORTA&=~BIT(1);
Count=Count^0x80;
return(Count);
}
0脚接HX711模块的DOUT
ulint Count=0;
//AD模块数据采集
ulint HX711_Read(void)
{
uchar i;
PORTA&=~BIT(1); //SCLK置低
nms_delay(10); //延时大于4个数据周期,AD芯片稳定工作
Count=0;
while((PINA&BIT(0))); //检测DOUT,高电平等待
for (i=0;i<24;i++) //24为数据输出
{
PORTA|=BIT(1); //SCLK拉高
Count=Count<<1; //Count左移一位,空出的低位为写数据做准备
PORTA&=~BIT(1); //SCLK置低
if((PINA&BIT(0))) //检测DOUT电平,为高则Count自加
Count++;
}
PORTA|=BIT(1); //第25个脉冲,选择下次转换通道为A,128增益
PORTA&=~BIT(1);
Count=Count^0x80;
return(Count);
}
