|
#include <reg52.h>
sbit ADDA=P1^0;//DA ADDB、 ADDC 為AD芯片的模擬信號輸入選擇引腳
sbit ADDB=P1^1;//ADDC ADDB、ADDA-000 說明模擬信 號從INO引腳進入
sbit ADDC=P1^2;
sbit ALE=P1^3;
sbit EOC=P1^4; //指明模數(shù)轉(zhuǎn)換是否結(jié)束引腳, =1, 說明轉(zhuǎn)換結(jié)束
sbit OE=P1^5; //轉(zhuǎn)換而得的數(shù)字信 號輸出控制引腳,=1,允許輸出
sbit START=P1^6; //模擬信號轉(zhuǎn)為數(shù)字信號的啟動控制引腳,下降沿啟動AD轉(zhuǎn)換
void Delay(unsigned char t)
{ while(t--);
}
void Adc08O9Convert()
{ unsigned char temp;
ADDA=ADDB=ADDC=0; //選擇模擬信號進入通道為INO
ALE=1;
START=0; //start的.上升沿清空ADC0809內(nèi)部寄存器,下降沿啟動轉(zhuǎn)換
Delay(10);
START=1; //制造上升沿,清空ADC0809內(nèi)部的寄存器;同時ALE=1,鎖存地址
Delay(10);
START=0; //制造 下降沿,啟動AD轉(zhuǎn)換
while(EOC==0);//等待轉(zhuǎn)換結(jié)束,當EOC=1時轉(zhuǎn)換結(jié)束
OE=1; //轉(zhuǎn)換結(jié)束, 打開輸出端鎖存器,將轉(zhuǎn)換所得數(shù)據(jù)送上數(shù)據(jù)總線
P3=0XFF;
temp=P3;//將數(shù)據(jù)讀取到臨時變量temp中
}
void main()
{
while(1)
{
Adc0809Convert();
}
}
復(fù)位和晶振是我后來檢查的時候斷開的,一直無法轉(zhuǎn)換出數(shù)字信號,但是發(fā)現(xiàn)不了問題。也問了一些師兄,還是不知道怎么回事的。
|
|