adc转换顺序_adc芯片介绍

adc转换顺序_adc芯片介绍ADC,全称为Analog-to-DigitalConverter,是将模拟信号转换为数字信号的重要器件

adc转换顺序_adc芯片介绍"

ADC/CAD转换

ADC,全称为Analog-to-Digital Converter,是将模拟信号转换为数字信号的重要器件。在转换过程中涉及到的技术指标包括分辨率、量化误差和偏移误差等。

利用分辨率=量程/2n公式可以计算出分辨率,例如量程为单极性0-5V,8位ADC的分辨率是: 5/255= 0.0196V。最后,完成一次完整的A/D转换所需要的时间,包括采样、保持、量化、编码的全过程这个称之为转换时间。
分辨率 =参考电压 /ADC的位数最大值如8位255,10位1023

具体的转换过程中,如果一次A/D转换中的数字量是1010101010,那么可以通过计算得出对应的模拟电压。首先,这10位二进制数对应的十进制数是682;然后,用这个数字量乘以参考电压(例如VREF),就可以得到对应的模拟电压值。

ADC转DAC:模转数

公式:DAC = ADC*分辨率

DAC转ADC:数转模

公式:ADC = DAC/分辨率

如何减少误差

1.将电压量化和浮点化
公式:DAC = ADC陪数分辨率

公式:ADC = DAC/分辨率/陪数

ADC0809 芯片

ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。

该芯片主要具有以下特性:

  • 8路输入通道:可以进行多路模拟信号的同步采样和转换。
  • 8位A/D转换器:分辨率为8位,可以将模拟信号转换为256个不同的数字值。
  • 具有转换启动停止控制端:可以控制A/D转换的启动和停止。
  • 转换时间为100μs(时钟为640KHz时),130μs(时钟为500KHz时):转换速度较快。
  • 单个+5V电源供电:工作电压范围较宽,可以在+5V~+15V的范围内正常工作。

ADC0809芯片有28条引脚,采用双列直插式封装。各引脚的功能如下:

  • IN0~IN7:这8个引脚是模拟量输入端,可以接收8路模拟信号的输入。
  • 2-1~2-8:这8个引脚是数字量输出端,转换后的8位二进制数字量从这些引脚输出。
  • ADDA、ADDB、ADDC:这3个引脚是地址输入线,用于选通8路模拟输入中的一路。通过这三根线的不同的0和1的组合,可以选择对应的通道(IN0~IN7)。
  • ALE:这是地址锁存允许信号,当输入一个正脉冲(至少100ns宽)时,该信号有效,用于锁存地址。
  • START:这是A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽),可以使其启动A/D转换。脉冲上升沿使0809复位,下降沿启动A/D转换。
  • EOC:这是A/D转换结束信号,当A/D转换结束时,此端会输出一个高电平信号。在转换期间,此信号一直为低电平。
  • OE:这是数据输出允许信号,当输入为高电平时,数据输出端有效。
  1. ADC转换
#include <reg52.h>

sbit AD_CS = P1^0; //ADC芯片选择端

void ADC_Init() { 
   
  AD_CS = 1; //选通ADC
  Delay_ms(1);
}

uint Get_ADC(uchar ch) { 
   
  AD_CS = 0; //选通ADC
  
  P1OUT = (0x01<<ch); //设置ADC通道
  Delay_us(25); //等待稳定
  
  P1OUT |= 0x08; //开始转换
  Delay_us(55);
  
  AD_CS = 1;
  
  return (P1IN & 0x0F); //读取数字量
}

void main() { 
   
  ADC_Init();
  
  while(1) { 
   
    uint val = Get_ADC(2); //读取通道2
    //处理转换结果val
  }
}

初始化并使用ADC(模数转换器)的STC89C52单片机的C语言程序。下面是对代码的详细解释:

  • sbit AD_CS = P1^0;这行代码定义了一个名为AD_CS的sbit,它连接到P1端口的第0位。sbit是单片机中的一个特殊位,通常用于低电平有效的硬件选择信号,这里就是ADC芯片的选择信号。
  • void ADC_Init() {…}这个函数是用来初始化ADC的。它将AD_CS设为1,从而选通ADC。然后延迟1毫秒。这个延迟通常用于让ADC有时间进行初始化,尽管这里的具体延时需要根据实际硬件和ADC的具体工作条件来确定。
  • uint Get_ADC(uchar ch) {…}这个函数是用来获取ADC的值的。首先,它将AD_CS设为0,从而选通ADC。然后,它将ADC通道设置为参数ch指定的通道(通过将0x01<<ch写入P1OUT)。接着,它等待一段时间(25微秒)让ADC稳定。然后,它启动ADC转换(通过将0x08写入P1OUT)。然后等待55微秒让ADC完成转换。最后,它将AD_CS设为1,然后返回ADC的数字量(通过读取P1IN的低4位)。
  • void main() {…}这是程序的主函数。首先,它调用ADC_Init()来初始化ADC。然后,它进入一个无限循环,在每次迭代中,它都调用Get_ADC(2)来读取通道2的ADC值,然后对结果进行处理。
    注意:这段代码中缺少了定义Delay_ms和Delay_us函数的代码。在实际使用中,需要确保这些函数被正确实现。
  1. DAC转换
#include <reg52.h>

sbit DAC_CS = P2^0;
sbit DAC_CLK = P2^1;
  
void DAC_Init() { 
   
  DAC_CS = 1; 
  DAC_CLK = 0;
}
  
void DAC_Out(uchar dat) { 
   
  uchar i;
  DAC_CS = 0; //使能芯片
	/* 如果是连接8位的线,如连接P0数据线 delay_ns(10); P0 = dat; delay_ns(10) */
  
  for(i=0; i<8; i++) { 
   
    DAC_CLK = 0;
    if(dat & 0x80) 
      DAC_DATA_IN = 1; 
    else
      DAC_DATA_IN = 0;
    
    DAC_CLK = 1; //输出数据
    dat <<= 1; 
  }
  
  DAC_CS = 1; //禁能芯片
}

void main() { 
   
  DAC_Init();
  while(1) { 
   
    //生成0-255的电压输出
    DAC_Out(count); 
    count++;
    if(count > 255)
      count = 0;
  }
}

主要就是利用ADC和DAC的控制引脚,根据时序要求进行置位和复位,完成模数转换或数模转换

用于初始化DAC(数字模拟转换器)并输出模拟信号的STC89C52单片机的C语言程序。

下面是对代码的详细解释:

  1. #include <reg52.h>:包含reg52.h头文件。这个头文件为STC89C52单片机提供了标准寄存器和特殊功能寄存器的定义。
  2. sbit DAC_CS = P2^0;sbit DAC_CLK = P2^1;:这两行定义了两个sbit,分别连接到P2端口的第0位和第1位。DAC_CS用于使能/禁用DAC芯片,DAC_CLK用于传输数据到DAC芯片。
  3. void DAC_Init() {...}:这个函数用于初始化DAC。它将DAC_CS设为1,从而选通DAC,并且将DAC_CLK设为0。
  4. void DAC_Out(uchar dat) {...}:这个函数用于输出数据到DAC。它首先将DAC_CS设为0,从而选通DAC芯片。然后,通过一个循环,它将每个数据位传输到DAC。在每个时钟上升沿,它检查数据位的值(0或1),并相应地将DAC_DATA_IN设为0或1。然后,它左移dat,准备传输下一个数据位。最后,它将DAC_CS设为1,从而禁用DAC芯片。
  5. void main() {...}:这是程序的主函数。首先,它调用DAC_Init()来初始化DAC。然后,它进入一个无限循环,在每次迭代中,它生成一个0-255的电压输出(通过DAC_Out(count)),然后增加count的值。如果count的值超过255,它重置为0。

注意:这段代码中缺少了定义DAC_DATA_IN的代码。在实际使用中,需要确保这个定义存在。此外,这段代码假设了DAC的工作原理和数据输入方式,但这些可能因DAC的具体型号和配置而有所不同。

今天的文章adc转换顺序_adc芯片介绍分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/84127.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注