本帖最后由 haohao96 于 2013-7-27 10:53 编辑
看到有不少的朋友询问此问题,现将我的解决办法贴出来,以便大家参考。采MCS-51的汇编语言来书写的,对于使用其他编程语言的朋友,可自行参考此思路进行修改,相信这个不是什么难事。
说明: 1. ADC_ADDRESS 对应于ADS1112在你的系统中的I2C地址,由你的系统来进行宏定义;
2. 寄存器R6中存放的是对ADC1112的控制命令字.
LCALL START_BIT ;特别注意:该命令需要重复输出两遍,否则不能正确采集对应的的物理量
MOV A,#ADC_ADDRESS ;A/D转换器ADS1112的地址数据
LCALL IIC_WRITE_BYTE
MOV A,R6 ;发送对ADC芯片的控制字
CLR ACC.7 ;第一遍发送时,设置控制字最高位D7(ST/DRDY)为0,只改变通道与PGA的值
CALL IIC_WRITE_BYTE
LCALL STOP_BIT
LCALL START_BIT ;接着发送启动转换命令,设置控制字最高位D7(ST/DRDY)为1
MOV A,#ADC_ADDRESS ;A/D转换器ADS1112的地址数据
LCALL IIC_WRITE_BYTE
MOV A,R6 ;第二遍发送时,直接发送对ADC芯片的控制字(最高位D7为1),启动AD转换控制字
LCALL IIC_WRITE_BYTE
LCALL STOP_BIT
......
|