3 程序设计
3.1 读写单个数字电位器函数设计
根据X9241的指令结构和控制时序,可以编写读写单个数字电位器的程序。
(1)改变电位器中间抽头命令(写WCR)时序以写电位器POT0为例,把电位器0的中间抽头WCR设置为20H(X9241每个电位器的最大抽头数是 64,即有效值小于63)。命令控制字为101000000B,即AOH;若在电路中AOA1A2A3均接低电平,则器件地址为01010000B,即 50H。其命令序列如下:
Start→发送地址50H→Ack→发送命令字A0H→ACK→发送20H→ACK→Stop。
(2)读电位器中间抽头位置命令(读WCR)时序以读电位器POT1为例,把电位器1的中间抽头WCR位置值读回。命令控制字为100100000B,即90H;若在电路中AOA1A2A3均接低电平,则器件地址为01010000B,即50H。其命令序列如下:
Start→发送地址50H→Ack→发送命令字90H→ACK→接收1个字节→ACK→Stop。
3.2 主函数设计
本函数的功能是把设计的数字电位器POT的中间抽头位置z转换为4个独立数字电位器POT0~POT3的中间抽头位置寄存器WCR的值x0~x3,同时控制POT1、POT2的控制位CM和DW,如图6所示。
在流程图中,当y<64时,POT12(由POT1和POT2串联)的中间抽头位置在POT2范围内,所以POT1的中间抽头失效,即置DM1=1;当y≥64时,POT12的中间抽头位置在POT1范围内,所以POT2的中间抽头失效,即置DM2=1。
结 语
采用软硬件协同的方法,能以较低的成本实现高分辩率数字电位器的设计。同一芯片中4个数字电位器的良好匹配和电压跟随器的应用,使设计的数字电位器具有更好的线性度。在实际应用中,为了提高带负载能力,需要在滑动输出端接一输出缓冲器。