HX711是一款专为高精度电子秤而设计的24位A/D转换器芯片。该芯片与后端MCU 芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。输入选择开关可任意选取通道A 或通道B,与其内部的低噪声可编程放大器相连。通道A 的可编程增益为128 或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。通道B 则为固定的32 增益,用于系统参数检测。芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D 转换器提供电源,系统板上无需另外的模拟电源。芯片内的时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机的初始化过程。
下面简单介绍一下hx711的参考驱动程序(汇编和C语言):
hx711的驱动程序(汇编)/*-------------------------------------------------------------------
在ASM中调用: LCALL ReaAD
可以在C中调用: extern unsigned long ReadAD(void); 。 。
unsigned long data;
data=ReadAD(); 。 。
----------------------------------------------------------------------*/
PUBLIC ReadAD
HX711ROM segment code
rseg HX711ROM
sbit ADDO = P1.5;
sbit ADSK = P0.0;
/*--------------------------------------------------
OUT: R4, R5, R6, R7 R7=》LSB
如果在C中调用,不能修改R4,R5,R6,R7。
---------------------------------------------------*/
ReadAD:
CLR ADSK //使能AD(PD_SCK置低)
SETB ADDO //51CPU 准双向I/0输入使能
JB ADDO,$ //判断AD转换是否结束,若未结束则等待否则开始读取
MOV R4,#24
ShiftOut:
SETB ADSK //PD_SCK置高(发送脉冲
) NOP
CLR ADSK //PD_SCK置低
MOV C,ADDO //读取数据(每次一位)
XCH A,R7 //移入数据
RLC A
XCH A,R7
XCH A,R6
RLC A
XCH A,R6
XCH A,R5
RLC A
XCH A,R5
DJNZ R4,ShiftOut //判断是否移入24BIT
SETB ADSK
NOP
CLR ADSK RET
END
hx711的驱动程序(C语言)sbit ADDO = P1^5;
sbit ADSK = P0^0;
unsigned long ReadCount(void)
{
unsigned long Count;
unsigned char i;
ADDO=1; //非51类MCU,略去此行
ADSK=0;
Count=0;
while(ADDO);
for (i=0;i《24;i++)
{
ADSK=1;
Count=Count《《1;
ADSK=0;
if(ADDO) Count++;
}
ADSK=1;
Count=Count^0x800000;
ADSK=0;
return(Count);
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)