AD转换读取的数值不正确

2019-07-15 12:49发布

用TLC548进行AD转换,但是读取到转换后的数值,和我用万用表测量的输入端电压经计算后的值不一样怎么回事啊。
u8 lc548c_init(void)
{
        CS = 1;
        CLK = 0;
        return 1;               
}
u8 lc548c_read(void)
{
        u8 k = 0;
        u8 dat = 0;
        CS = 0;
        delay4us(1);
        for(k=0;k<8;k++)
        {
                if(DATA == 1)   // DATA=P14
                {
                        dat |=0x01; // 第一位赋值1
                }
                else
                {
                        dat |=0x00; // 第零位赋值1                       
                }
                dat=dat<<1;     // 0001->0010
                _nop_();
                _nop_();
                _nop_();
                CLK = 1;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                CLK = 0;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();       
        }
        CS = 1;
        return dat;       
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
珍惜你我1994
1楼-- · 2019-07-15 18:36
试试这个,应该没问题了!
lc548c_init(void)
{
        CS = 1;
        CLK = 0;
        return 1;               
}
u8 lc548c_read(void)
{
        u8 k = 0;
        u8 dat = 0;
        CS = 0;
        delay4us(1);
        for(k=0;k<8;k++)
        {
                CLK = 1;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                CLK = 0;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();                                                     if(DATA == 1)   // DATA=P14
                {
                        dat |=0x01; // 第一位赋值1
                }
                else
                {
                        dat |=0x00; // 第零位赋值1                        
                }
                dat=dat<<1;     // 0001->0010
                _nop_();
                _nop_();
                _nop_();

        }
        CS = 1;
        CLK = 0;
        return dat;        
}

啦啦啦噶喇
2楼-- · 2019-07-15 23:54
珍惜你我1994 发表于 2016-10-21 10:53
试试这个,应该没问题了!
lc548c_init(void)
{

还是不对啊,读出来的AD值和测出来的电压不匹配啊

一周热门 更多>