要求:利用A/D和D/A實現將A/D的輸入電壓反向變換的功能,即A/D的輸入電壓從0~+5V變化時,D/A的輸出電壓相應的從+5V~0V變化。
控制功能:將單片機實驗箱上的電位器W1產生0~5V電壓輸入到ADC0809的通道0,利用數字萬用表測量DAC0832輸出的電壓,看其是否隨ADC0809的輸入電壓反向變化。利用74HC4040將8MHz晶振產生的脈沖信號十六分頻后做為ADC0809的時鐘信號。
使用的主要元器件:89C51、11.0592MHz晶振、74LS373、74LS138、8MHz晶振、74HC04、74HC4040、ADC0809、DAC0832、LM741、10k電位器W1等。
結果驗證:①用示波器檢查ADC0809的時鐘頻率是否為500kHz。②旋動電位器W1產生0~+5V的電壓,用數字萬用表測量D/A的輸出是否從+5→0V變化。③使W1的輸出電壓從0V開始,以0.5V為增量,測量D/A的輸出電壓并記錄。試分析誤差產生的原因。
程序如下:
#include <reg51.h>
#include <absacc.h>
#define uchar unsigned char
#define DAC0832 XBYTE[0x7FFF]
uchar temp,i,a;
sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^7;
uchar getdata=0x0000;
void main(void)
{
ET0=1;
EA=1;
TMOD=0x02;
TH0=246;
TL0=246;
TR0=1;
while(1)
{
ST=0;
ST=1;
ST=0;
while(EOC==0){;}
OE=1;
getdata=P0;
OE=0;
temp=getdata;
P1=temp;
DAC0832=P1;
} }
void T0X(void) interrupt 1 using 0
{
CLK=~CLK;
}
現在遇到的問題是電壓到3.95就無法繼續增加了
|