DAC与8051微控制器的接口

Interfacing DAC with 8051 Microcontroller

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

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

MC1408 DAC(或DAC0808)

在该芯片中,数字输入被转换为电流。通过将电阻器连接到输出以转换为电压,可以将输出电流称为I out 。 I out 引脚提供的总电流基本上是输入引脚D 0 -D 7 (D 0 是DAC0808的LSB,D 7 是MSB),参考电流I ref 。以下公式显示了I out 的功能

$$ I_ {Out} = I_ {ref} l组rac {D7} {2} + rac {D6} {4} + rac {D5} {8} + rac {D4} {16} + rac {D3} {32 } + rac {D2} {64} + rac {D1} {128} + rac {D0} {256}
组$$

I ref 是输入电流。必须将其提供给引脚14。通常将2.0mA用作I ref

我们将I out 引脚连接到电阻器,以将电流转换为电压。但是在现实生活中,由于负载的输入电阻也会影响输出电压,因此可能会导致误差。因此,实际上,通过将I ref 电流输入连接到具有R f =5KΩ的运算放大器作为反馈电阻来对其进行隔离。反馈电阻值可以根据要求进行更改。

使用DAC和8051单片机生成正弦波

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

1
V<sub>out</sub> = 5V + (5 ×sinθ)

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

30

< / tr>

角度(以θ为单位)

sinθ

V out (电压幅值)

发送到DAC的值
0 0 5 128
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 < / td>

0
300 - 0.866 0.669 17
330 -0.5 2.5 64
360 0 5 128

电路原理图:

源代码

1
2
3
4
5
6
7
8
9
10
11
12
#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];
      }
   }
}

输出将如下所示: