SETB SCL ;开始一次操作
SETB SDA
CLR SDA
MOV A,#50H ;选择从器件
ACALL WRTA
MOV A,#0C0H ;设置写指令格式
ACALL WRTA
MOV A,#3FH ;为WCR赋值
ACALL WRTA
JNB SCL,$ ;结束本次操作
SETB SDA
CLR SDA
WRTA: MOV R2,#08H
WRTA0: JB SCL,$ ;等待时钟信号上跳沿
RLC A ;将数据逐次送入数字电位器
MOV SDA, C
JNB SCL, $
DJNZ R2, WRTA0
JB SCL, $ ; 等待数字电位器的接收应答
SETB SDA
JB SDA, $
JNB SCL, $
RET
INT: CPL P1.6 ;取反,产生所需时钟信号
RETI
……
X9241在蓄电池监控单元中的应用
从理论上讲,利用数字电位计可以实现任意量程的转换。但由于模数转换器精度的限制以及蓄电池监控单元高实时性的要求,选取过多的转换点反而会收到事倍功半的效果。通过试验发现,只需要1:1,1:2,1:5,1:10,1:20,和1:50六种量程就可以保证输入信号在模数转换器的2/3量程附近,因此,在这里巧妙的利用了滑动端计数寄存器和数据寄存器之间的双向数据传输功能,实现上述六种量程在线转换。实现在线量程转换的具体电路如图3所示。具体的实现方法是:在两个E2POT的R0中存储值为01H,由于上电复位时滑动端计数寄存器会自动装入R0中的值,因此初始化时,放大器为一跟随器,当需要测量微弱电流时,根据初次采集得到的值,与事先设定的参考值进行比较,选择合适的量程进行放大后重新采集。
图3 在线量程转换的实现电路
结语
实验结果表明,用X9241实现测量量程的在线转换非常方便。通过六种量程的实时在线调节,既简化了电路的设计,同时又保证了数据采集的精度。但在试验中发现,有时会在输出端产生振荡,造成输出波形失真,解决方法是在放大器输入和反馈端串联两个电阻,增加其到输入端的衰减通道。