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+ 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告