在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 2361|回复: 2

求救 彷徨啊

[复制链接]
发表于 2006-7-17 22:26:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我使用ads7816p将模拟量转换成数字量
程序如下
uint    a2d7816(void)            //AD转换函数
{
    uchar  i;   
    uint adVal = 0;

    PCLK = 1;
    XBYTE[0xEFFF] = 0xDF;        
    delay(50);            //cs置高 clk 置低
    XBYTE[0xEFFF] = 0x20;        //片选
    delay(100);
    PDOUT = 1;

    for(i=0;i<3;i++)        //转换时间
    {
        PCLK = 0;
        delay(TIME);
        if(i==2)
            if(PDOUT == 0)
            i--;
        PCLK = 1;
        delay(TIME);
    }

    for(i=0;i<11;i++)    //输出数据前十一位
    {
          PCLK = 0;
        delay(TIME);    //光耦转换时间
        if(PDOUT == 0)
            adVal = adVal|0x0001;        
        adVal = adVal<<1;
        PCLK = 1;
        delay(TIME);

    }

    PCLK=0;
    delay(TIME);        //光耦转换时间   
    if(PDOUT == 0)        //判断输出数据最后一位
        adVal = adVal|0x0001;
    PCLK = 1;
    delay(TIME);   
   


    XBYTE[0xEFFF] = 0xDF;    //取消片选,为下一次A/D转换做准备
    delay(50);

    return adVal;
}

我在main()做了一个循环  

while(1)
c = a2d7816();

c的值应该为1360 大多数时候是为1360但是有时候会跳到2000多(模拟量不变的情况下)
我就觉得很纳闷
我一直在线上等
我的MSN idyllcheung@hotmail.com
谢谢各位哥哥姐姐了!!
发表于 2006-7-17 22:42:43 | 显示全部楼层
大概有两种可能:
1. 采集时间没有到就读出数据
2.模拟量上面有干扰,应该采取必要的软件滤波,大多情况为工频干扰
 楼主| 发表于 2006-7-19 14:48:28 | 显示全部楼层
模拟量用示波器看过了 没有干扰  采集时间没到的话 就不会有正确的数据读出 很郁闷 不知道为什么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 15:53 , Processed in 0.017904 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表