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 的值 |
---|---|---|---|
0 | 0 | 5 | 128 |
30 | 0.5 | 7.5 | 192 |
60 | 0.866 | 9.33 | 238 |
90 | 1.0 | 10 | 255 |
120 | 0.866 | 9.33 | 238 |
150 | 0.5 | 7.5 | 192 |
180 | 0 | 5 | 128 |
210 | -0.5 | 2.5 | 64 |
240 | -0.866 | 0.669 | 17 |
270 | -1.0 | 0 | 0 |
300 | -0.866 | 0.669 | 17 |
330 | -0.5 | 2.5 | 64 |
360 | 0 | 5 | 128 |
电路图 -
源代码
#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]; } } }
输出
输出将如下所示: