关于51单片机与tlc2543的模数转换精度问题

2019-07-15 17:21发布

本人初学单片机 准备做一个显示角度传感器转过的角度的题目 手上拿到的角度传感器是0到180度 0到5伏的电压输出
程序如下
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit DSO=P1^0;
sbit DSI=P1^1;
sbit CS=P1^2;
sbit CLK=P1^3;
uchar code
tab[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
uchar code wei[]={0xf1,0xf2,0xf4,0xf8};
uint huancun[]={0x00,0x00,0x00,0x00};
void delay(uint m)
{
        while(m--);
}
void display()
{
        uchar i;
        for(i=0;i<4;i++)
        {
          P2=wei;
                P0=tab[huancun];
                delay(5);
                }
}
uint Read_TLC2543(uchar CHN)
{
        uchar i,temp;
        uint ad=0;
        CHN=CHN<<4;
        CLK=0;
        CS=1;
        CS=0;
        temp=CHN;
        for(i=0;i<12;i++)
        {
                ad=ad<<1;
                if((temp&0x80)!=0){DSI=1;}
                else{DSI=0;}
                if(DSO){ad=ad+1;}
                CLK=1;
                CLK=0;
                temp=temp<<1;
        }
        CS=1;
        ad=ad&0x0fff;
        return(ad);
}
void main()
{
  float sum;
        uint date;

  while(1)
        {
                sum=Read_TLC2543(0x00)*18.0;
                date=sum/4095;

                huancun[0]=date/1000;

                huancun[1]=date%1000/100;
                huancun[2]=date%1000%100/10;
                huancun[3]=date%10;
          display();
               
               
        }
}

仿真得到的结果精度不够 何解
tlc2543.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
qq729101414
1楼-- · 2019-07-15 22:31
sum=Read_TLC2543(0x00)*18.0;???
暴躁的小黄瓜
2楼-- · 2019-07-16 03:20
qq729101414 发表于 2015-5-3 21:00
sum=Read_TLC2543(0x00)*18.0;???

抱歉 是*1800然后 电阻每上升1%就18+18的变化
暴躁的小黄瓜
3楼-- · 2019-07-16 06:28
xianyoudian 发表于 2015-5-4 13:23
和VREF也有关系

+vref取了4.096负的取了0

一周热门 更多>