微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机AD转换后的值

51单片机AD转换后的值

时间:10-02 整理:3721RD 点击:
用TL549 AD芯片来处理。它是8位的芯片。
uint ad_549()                    //TLC549处理
{
  uchar i;
  uint data_ad = 0;
  cs = 1;                                //初始化,启动
  sclk = 0;
  cs = 0;
  _nop_();                    
  for(i = 0;i < 8;i++)        //读取采集数据,读取的是上一次采集数据
    {
          sclk = 1;
         
          if(data_temp)data_ad |= 0x01;
          sclk = 0;  
          data_ad = data_ad << 1;  
        }        
  cs = 1;
  data_ad = data_ad  * (500/ 256);   
  return(data_ad);
}

为什么转换后的值要 * (500/ 256),这部分该怎么理解?  谁能说下

应该是数值补偿

500应该是5v电压放大100倍,256是8位数据的分辨率

由于看不到电路,也不知道是用于测量什么的,一般是ADC值与物理值的一个比例关系。
将测量 值与计算结果对比一下就明白了。

500应该是5v电压放大100倍,256是8位数据的分辨率,256应改为255

模拟量 = 基准电压×AD值 /255   ( 8位A/D)

模拟量 = 基准电压×AD值 /1023     ( 10位A/D)

模拟量 = 基准电压×AD值 /4095     ( 12位A/D)


这里应该是为了方便显示,可以理解为转换后的电压=AD值*(5/256)*100,5/256是满值5伏电压进行转换的AD值的每一个二进制位的电压值,最后乘以100是因为程序里用了整形变量存储电压值,这样就存不了小数,所以乘以100,就可以有2位小数了 。

按照电压基准和分辨率位数进行换算

.

话说,为什么STC自带10位ADC不用,要外接8位ADC

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top