打印

火*味浓了点

[复制链接]
7059|47
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
harvest000|  楼主 | 2007-11-26 12:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
硬件连接:
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不动。

连日头昏,有低级错误的话,就当逗个乐。已经不知道自己姓什么了,哪位大爷救救兄弟啊!
先作个揖!



相关帖子

沙发
ldyeah| | 2007-11-26 12:54 | 只看该作者

程序倒数第二行CS???

使用特权

评论回复
板凳
harvest000|  楼主 | 2007-11-26 12:55 | 只看该作者

回楼上的话

CS=1;
笔误!对不住,下次不敢了!

使用特权

评论回复
地板
木头东瓜| | 2007-11-26 12:59 | 只看该作者

活不下去了就跳楼去

动辄求救、寻短见,有点骨气好么

使用特权

评论回复
5
hotpower| | 2007-11-26 13:02 | 只看该作者

哈哈~~~if (result >= 2048) {result^= 0xfff;result++;}

if (result >= 2048)//符号位,0x800 
{
  result^= 0xfff;
  result++;
}

使用特权

评论回复
6
hotpower| | 2007-11-26 13:03 | 只看该作者

哈哈~~~0跳到-1很正常呀~~~忘记收"费用"了~~~

使用特权

评论回复
7
harvest000|  楼主 | 2007-11-26 13:04 | 只看该作者

4楼批评的是

现改为:
    哪位高人愿予指点,在下这厢有礼了!
    有喘气儿的没?

使用特权

评论回复
8
harvest000|  楼主 | 2007-11-26 13:06 | 只看该作者

5楼先谢了,兄弟试试先。

使用特权

评论回复
9
xwj| | 2007-11-26 13:11 | 只看该作者

跳楼要小心啊,别砸死了楼下的MM啊

使用特权

评论回复
10
hotpower| | 2007-11-26 13:11 | 只看该作者

光谢是不行的~~~注意菜地公告~~~

使用特权

评论回复
11
hotpower| | 2007-11-26 13:13 | 只看该作者

所付"费用"~~~见下祥解~~~

使用特权

评论回复
12
gjg191| | 2007-11-26 13:14 | 只看该作者

dd

乱收费..

使用特权

评论回复
13
hotpower| | 2007-11-26 13:16 | 只看该作者

买卖公道,童叟无欺,立据为证,空口无凭~~~

使用特权

评论回复
14
gjg191| | 2007-11-26 13:19 | 只看该作者

dd

人肉买卖!!

使用特权

评论回复
15
harvest000|  楼主 | 2007-11-26 13:19 | 只看该作者

没问题!

菜地公告:凡菜农答疑正确者借用选美证一次 
凡菜农答疑正确者,应该付给菜农一次性合理的劳务费.
劳务费用很低廉,只需将您在21ic注册的合法ID借用一次.
买卖公道,童叟无欺,立据为证,空口无凭. 


ID给您都成,用户名你知道了,密码怎么给你?

使用特权

评论回复
16
木头东瓜| | 2007-11-26 13:21 | 只看该作者

菜农别玩了

难道又想掀起一场风波?

使用特权

评论回复
17
gjg191| | 2007-11-26 13:23 | 只看该作者

dd

谁出风了,冬瓜拿木头砸他

使用特权

评论回复
18
hotpower| | 2007-11-26 13:24 | 只看该作者

哈哈~~~投到HotPower@163.com

这个问题主要是符号位的问题~~

我用的已知符号位了,所以取了绝对值:

void AdsObj::AdsConvertStop(void)
{
unsigned short result;
//char str[16];
//  while(AdsReadReg(ADS7870_GAINMUX) & ADS7870_GAINMUX_CNVBSY);
  ADSPORTCS->IOCLR = (1 << ADCS);//打开片选信号
  AdsReadWriteByte(ADS7870_REG_READ | ADS7870_REG_16BIT | ADS7870_RESULTHI);
  result = AdsReadWriteByte(0xff) << 0x08;//读转换电压高4/3位
  result |= AdsReadWriteByte(0xff);//读转换电压低8位
  ADSPORTCS->IOSET = (1 << ADCS);//关闭片选信号
  if (result >= 0x8000) {//放电电流
    result ^= 0xfff0;
    result += 0x0010;//划成绝对值.注意这里我有别的处理,所以相当于取反加一~~~
  }
  AdsTestRes[AdsCount] = result;
//  sprintf(str, "AdsTestRes[%1d]=%04X", AdsCount, result);
//  Uart.puts(str);
}

使用特权

评论回复
19
harvest000|  楼主 | 2007-11-26 13:33 | 只看该作者

回hotpower

密码已发至你邮箱,请查收。
用完能还我么?

使用特权

评论回复
20
程序匠人| | 2007-11-26 13:43 | 只看该作者

有点玩过火了,小心匠人耍大刀哦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

15

帖子

0

粉丝