硬件连接: AD7887(12位ADC,125KSPS的吞吐率,55大元一个)的8个脚: 1、CS——P1.0; 2、VDD——+5V; 3、GND——GND,PT1000的一个脚; 4、AIN1/VREF——VDD、10K电位器的一个脚; 5、AIN0——PT1000的另一个脚、10K电位器的另一个脚; 6、DIN——GND(只读ADC); 7、DOUT——P1.1; 8、SCLK——P1.2;
C51程序:(前4位先导0,12位数据高位在前) SCLK=1; CS=1; delay(10); CS=0; delay(10); for(k=0;k<16;k++) { val=val<<1; SCLK=0; delay(10); SCLK=1; delay(10); if(DOUT) { val=val+1; } } CS; return val;
结果: 16位为:0000 XXXX XXXX XXXX XXX0(最后一位恒0,也就算了,据说是实际精度的问题。) 电位器由0至890欧姆左右时,数据由4094至0, 电位器过890欧姆左右时,数据由至0突变为2048, 阻值继续调大,数据继续慢慢慢慢下降,(当数据为1024时,对阻值的变化变得很不敏感)最后至512不动。
连日头昏,有低级错误的话,就当逗个乐。已经不知道自己姓什么了,哪位大爷救救兄弟啊! 先作个揖!
|