|
要求:利用A/D和D/A實(shí)現(xiàn)將A/D的輸入電壓反向變換的功能,即A/D的輸入電壓從0~+5V變化時(shí),D/A的輸出電壓相應(yīng)的從+5V~0V變化。
控制功能:將單片機(jī)實(shí)驗(yàn)箱上的電位器W1產(chǎn)生0~5V電壓輸入到ADC0809的通道0,利用數(shù)字萬用表測量DAC0832輸出的電壓,看其是否隨ADC0809的輸入電壓反向變化。利用74HC4040將8MHz晶振產(chǎn)生的脈沖信號(hào)十六分頻后做為ADC0809的時(shí)鐘信號(hào)。
使用的主要元器件:89C51、11.0592MHz晶振、74LS373、74LS138、8MHz晶振、74HC04、74HC4040、ADC0809、DAC0832、LM741、10k電位器W1等。
5f1fb3e44b0521d0.jpg (706.31 KB, 下載次數(shù): 25)
下載附件
2023-6-5 17:00 上傳
結(jié)果驗(yàn)證:①用示波器檢查ADC0809的時(shí)鐘頻率是否為500kHz。②旋動(dòng)電位器W1產(chǎn)生0~+5V的電壓,用數(shù)字萬用表測量D/A的輸出是否從+5→0V變化。③使W1的輸出電壓從0V開始,以0.5V為增量,測量D/A的輸出電壓并記錄。試分析誤差產(chǎn)生的原因。
程序如下:
#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;
}
現(xiàn)在遇到的問題是電壓到3.95就無法繼續(xù)增加了
|
|