在智能化仪器的开发过程中,如何实现测量量程的在线转换,一直是人们所关注的问题。通常的转换方法是采用程控增益放大器,或者是多路输入的形式,这必然以增加电路的复杂性和降低可靠性作为代价。因此,本设计方案的蓄电池监控单元中采用了数字电位计X9241来实现测量量程的在线转换。
数字电位计X9241
X9241的基本功能
XICOR公司的X9241内部集成了四个非易失性E2POT。其中每一个E2POT包含有63个电阻单元,一个滑动端计数寄存器(WCR)和四个可以由用户读出和写入的8位数据寄存器。滑动端计数寄存器的内容用来控制滑动端在电阻阵列中的位置,并且可以和数据寄存器之间进行双向的数据传输。
X9241的通信规约 与工作时序
X9241支持双总线的定向规约,这一规约规定了向总线传送数据时为发送器,而从总线接收数据时为接收器,在这一过程中,控制传输的器件是主机,而被控制的器件则为从机。在本方案中,启动数据的传输以及提供时钟等功能都由单片机提供,因此在这里X9241是一个从属器件。
对X9241进行一次成功的操作必须包括以下几个步骤:
起始条件:当SCL为高时SDA由高至低的跳变;
应答:在主从器件的总线间提供一个握手信号,以表示数据接收成功。单片机在发送8位数据以后释放SDA总线(置SDA为1),同时X9241将在第九个时钟周期内把SDA线拉低,作为成功的接收了前8位数据的响应;
终止条件:当SCL为高时SDA由低至高的跳变。 具体的工作时序如图1所示。

图1 X9241的工作时序
X9241与AT89C51接口
由于常用的AT89C51系列处理器没有I2C接口部件,与X9241的接口很不方便。仔细分析图1的工作时序,可以通过通用I/O总线和一个定时器来模拟I2C总线的功能,即采用P1口的两根线分别作为SDA和SCL总线,通过定时器1产生所需要的时钟。具体电路连接如图2所示。

图2 X9241与AT89C51接口电路
下面就以向滑动端计数寄存器写入一次值的三字节指令为例,给出具体的程序:
SCL BIT P1.6
SDA BIT P1.7
MAIN:
……
MOV TMOD,#02H ;置定时工作方式2,
定时
MOV TH0,#0E8H
MOV TL0,#0E8H
SETB EA ;开中断
SETB ET0
SETB TR0