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]; } } }
輸出
輸出將如下所示: