8051 微控制器与数模转换器 (DAC) 接口


在本节中,我们将了解如何使用 数模转换器 (DAC)Intel 8051 微控制器。我们还将了解如何使用 DAC 生成正弦波。

数模转换器 (DAC) 是一种广泛用于将数字脉冲转换为模拟信号的设备。将数字信号转换为模拟信号有两种方法:二进制加权法和 R/2R 梯形法。在本文中,我们将使用 MC1408 (DAC0808) 数模转换器。该芯片使用 R/2R 梯形法。这种方法可以达到更高的精度。DAC 的性能由其分辨率决定。分辨率是二进制输入数量的函数。最常见的输入计数为 8、10、12 等。数据输入的数量决定了 DAC 的分辨率。因此,如果存在 n 个数字输入引脚,则存在 2n 个模拟电平。因此,8 输入 DAC 具有 256 个离散电压电平。

MC1408 DAC (或 DAC0808)

在这个芯片中,数字输入被转换为电流。输出电流称为 Iout,通过将电阻连接到输出端将其转换为电压。Iout 引脚提供的总电流基本上是 DAC0808 输入引脚 D0 - D7 (D0 为 LSB,D7 为 MSB) 上的二进制数和参考电流 Iref 的函数。以下公式显示了 Iout 的函数:

$$I_{Out}=I_{ref}\lgroup\frac{D7}{2}+\frac{D6}{4}+\frac{D5}{8}+\frac{D4}{16}+\frac{D3}{32}+\frac{D2}{64}+\frac{D1}{128}+\frac{D0}{256}\rgroup$$

Iref 是输入电流。这必须提供到 14 号引脚。通常使用 2.0mA 作为 Iref

我们将 Iout 引脚连接到电阻器以将电流转换为电压。但在现实生活中,这可能会导致不准确,因为负载的输入电阻也会影响输出电压。因此,实际上通过将其连接到具有 Rf = 5KΩ 作为反馈电阻的运算放大器来隔离 Iref 电流输入。反馈电阻值可以根据需要更改。

使用 DAC 和 8051 微控制器生成正弦波

为了生成正弦波,首先我们需要一个查找表来表示 0° 到 360° 之间角度的正弦值大小。正弦函数的值范围为 -1 到 +1。在表中,只有整数值适用于 DAC 输入。在这个例子中,我们将考虑 30° 的增量,并计算从度数到 DAC 输入的值。我们假设 DAC 输出的满量程电压为 10V。我们可以按照以下公式获得电压范围。

Vout = 5V + (5 ×sinθ)

让我们根据角度和其他参数查看 DAC 的查找表。

角度 (θ)sinθVout (电压幅值)发送到 DAC 的值
005128
300.57.5192
600.8669.33238
901.010255
1200.8669.33238
1500.57.5192
18005128
210-0.52.564
240-0.8660.66917
270-1.000
300-0.8660.66917
330-0.52.564
36005128

电路图 -

源代码

#include<reg51.h>
sfr DAC = 0x80; //Port P0 address
void main(){
   int sin_value[12] = {128,192,238,255,238,192,128,64,17,0,17,64};
   int i;
   while(1){
      //infinite loop for LED blinking
      for(i = 0; i<12; i++){
         DAC = sin_value[i];
      }
   }
}

输出

输出将如下所示:

更新于:2023年9月14日

39K+ 次浏览

开启您的 职业生涯

完成课程获得认证

开始学习
广告