基于單片機(jī)與AD1674的數(shù)據(jù)采集
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1. ATMEL89S8252與AD1674簡介:
(1)ATMEL89S8252的性能特點(diǎn):
ATMEL89系列單片機(jī)與8051系列單片機(jī)兼容,這個(gè)系統(tǒng)對(duì)于以8051系列為基礎(chǔ)的系統(tǒng)來說,十分容易進(jìn)行取代。同時(shí),對(duì)那些熟悉8051的用戶來說,用ATMEL公司的89系列單片機(jī)來取代8051進(jìn)行系統(tǒng)的設(shè)計(jì)也是輕而易舉的事。
本系統(tǒng)采用的ATMEL89系列單片機(jī)中的AT89S8252型號(hào),AT89S8252 采用ATMEL的高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)上標(biāo)準(zhǔn)的80C51的指令系統(tǒng)及引腳兼容,
片內(nèi)可向下裝載Flash,允許程序存儲(chǔ)器在系統(tǒng)內(nèi)通過SPI串行口改寫或用通用的非易失性存儲(chǔ)器編程器改寫。通過把通用的8位CPU與可向下裝載的Flash集成在一個(gè)芯片上,AT89S8252便成為一個(gè)高效的微型計(jì)算機(jī)。它的應(yīng)用范圍廣,可用于解決復(fù)雜的控制問題,且成本較低。
AT89S8252型單片機(jī)除了具備一般的單片機(jī)性能之外還具備如下的特點(diǎn):
● 8 KB Flash的存儲(chǔ)器,可寫/擦1000次
● 具有2 KB的EEPROM,可寫/擦100000次,提高了存儲(chǔ)容量
● 含有9個(gè)中斷響應(yīng)的能力
● 含有標(biāo)準(zhǔn)型和低檔型所不具備的SPI接口
● 含有Watchdog定時(shí)器,它的存在可以大大提高單片機(jī)工作的可靠性
● 含有雙數(shù)據(jù)指針
● 含有從電源下降的中斷恢復(fù)
其結(jié)構(gòu)圖如下:
(2)AD1674數(shù)模轉(zhuǎn)換芯片是美國模擬器件公司的新一代產(chǎn)品,它是逐次逼近型的12位精度中高端產(chǎn)品。AD1674有如下特點(diǎn):(1)有參考電壓基準(zhǔn)和時(shí)鐘電路,單/雙極性輸入;(2)全8位或16位微處理器接口;(3)250ns總線取數(shù)時(shí)間,能滿足一般微處理器的時(shí)序要求;(4)高轉(zhuǎn)換率,其采樣時(shí)間控制在10us以內(nèi),速度極快,所以此系統(tǒng)設(shè)計(jì)時(shí)是采用查詢的方式與單片機(jī)連接的;(5)片內(nèi)集成了采樣保持器,保持器使數(shù)據(jù)傳送的準(zhǔn)確性得到了保證,而且避免了另加元件使系統(tǒng)復(fù)雜化的麻煩。
模擬電壓的輸入:模擬電壓從13腳或14腳輸入。因?yàn)樵谛酒瑑?nèi)部,13,14腳之間是一個(gè)內(nèi)部分壓電阻,所以用13腳作輸入端而將14腳懸空不會(huì)有什么危害,反之亦然。在本課題中要求雙極性輸入,所以要求AD1674結(jié)成雙極性的方式其輸入連接方式如下圖所示:
與單片機(jī)的接口:AD1674 可以進(jìn)行12位轉(zhuǎn)換,也可以進(jìn)行8位轉(zhuǎn)換,由于單片機(jī)是8位的,需要進(jìn)行兩次轉(zhuǎn)換,這里需要注意的是必須將BIT11-BIT4接到數(shù)據(jù)總線的 D7-D0,而將BIT3-BIT0采取向高位靠齊,接到接到D7-D4,分兩次讀取轉(zhuǎn)換結(jié)果,切不可錯(cuò)接,如果錯(cuò)接的話,極易損壞芯片,
也不能正確讀取轉(zhuǎn)換結(jié)果。
AD1674的功能圖如下:
2. AD1674與ATMEL89S8252的接口:
模擬量經(jīng)由八選一多路轉(zhuǎn)換器ADG408 輸入到 AD1674.AD1674可以進(jìn)行12位轉(zhuǎn)換,也可以進(jìn)行8位轉(zhuǎn)換,由于單片機(jī)是8位的,需要進(jìn)行兩次轉(zhuǎn)換,這里需要注意的是必須將 BIT11-BIT4接到數(shù)據(jù)總線的D7-D0,而將BIT3-BIT0采取向高位靠齊,接到接到D7-D4,分兩次讀取轉(zhuǎn)換結(jié)果。
AD1674有 5根控制線,其中CE,CS,R/C,為一般控制線,完成器件的定時(shí)、尋址、啟動(dòng)和讀出操作,12/8和A0決定芯片的轉(zhuǎn)換周期和數(shù)據(jù)輸出格式。 CE,CS,R/C三者有效的次序可先可后,在本單片機(jī)系統(tǒng)中,12/8接地,CE與單片機(jī)的讀寫信號(hào)經(jīng)過與或門連接。而CE,R/C由74LS373控制,CS由74LS138經(jīng)過譯碼來控制。在下圖中可以看出AD1674的地址為0x5fff,74LS373的地址為0x3fff 。在啟動(dòng)轉(zhuǎn)換或讀取A/D 之前,必須將A0和R/C置成如上圖所示的相應(yīng)電平,然后再在CS端施加一負(fù)脈沖。AD1674的總線讀取周期為250ns,可直接掛接在數(shù)據(jù)總線上。由于AD1674的轉(zhuǎn)換速度極快,采用查詢的方式來設(shè)計(jì)的。其中STS是轉(zhuǎn)換結(jié)束標(biāo)志,它可提供CPU查詢A/D轉(zhuǎn)換是否結(jié)束。在本系統(tǒng)中,STS接單片機(jī)的P13端.
系統(tǒng)連線圖如下:
3.本系統(tǒng)軟件采用C語言開發(fā)設(shè)計(jì)而成,增強(qiáng)了程序的可讀性和易懂性。程序清單如下:
sbit p14=P1^4;
sbit P13=P1^3;
char xdata *ad74_ls=(char xdata *)0x3fff;//373地址
char xdata *ad_1674=(char xdata *)0x5fff;
void select_channel (unsigned char ch)
{
p14=1;選中408
if(ch==0)
{
*ad74_ls=0x00; 373高3位控制ADG408的通道信號(hào)
*ad_1674=0x00;//啟動(dòng)12位
while(P13==1);等待P13變低,轉(zhuǎn)換結(jié)束
*ad74_ls=0x02; //置r/c為1,A0=0
h=*ad_1674; 讀取高8位
*ad74_ls=0x03; //置r/c為1,A0=1
l=*ad_1674; }讀取低4位
else if(ch==1)
{ *ad74_ls=0x20;
*ad_1674=0x00;//啟動(dòng)12位
while(P13==1);
*ad74_ls=0x22; //置r/c為1,A0=0
h=*ad_1674;
*ad74_ls=0x23; //置r/c為1,A0=1
l=*ad_1674;
}
else if(ch==2)
{ *ad74_ls=0x40;
*ad_1674=0x00;//啟動(dòng)12位
while(P13==1);
*ad74_ls=0x42; //置r/c為1,A0=0
h=*ad_1674;
*ad74_ls=0x43; //置r/c為1,A0=1
l=*ad_1674;
}
else if(ch==3)
{ *ad74_ls=0x60;
*ad_1674=0x00;//啟動(dòng)12位
while(P13==1);
*ad74_ls=0x62; //置r/c為1,A0=0
h=*ad_1674;
*ad74_ls=0x63; //置r/c為1,A0=1
l=*ad_1674;
}
else if(ch==4)
{ *ad74_ls=0x80;
*ad_1674=0x00;//啟動(dòng)12位
while(P13==1);
*ad74_ls=0x82; //置r/c為1,A0=0
h=*ad_1674;
*ad74_ls=0x83; //置r/c為1,A0=1
l=*ad_1674;
}
else if(ch==5)
{ *ad74_ls=0x0A0;
*ad_1674=0x00;//啟動(dòng)12位
while(P13==1);
*ad74_ls=0x0A2; //置r/c為1,A0=0
h=*ad_1674;
*ad74_ls=0x0A3; //置r/c為1,A0=1
l=*ad_1674;
}
else if(ch==6)
{ *ad74_ls=0x0C0;
*ad_1674=0x00;//啟動(dòng)12位
while(P13==1);
*ad74_ls=0x0C2; //置r/c為1,A0=0
h=*ad_1674;
*ad74_ls=0x0C3; //置r/c為1,A0=1
l=*ad_1674;
}
else
{ *ad74_ls=0x0E0;
*ad_1674=0x00;//啟動(dòng)12位
while(P13==1);
*ad74_ls=0x0E2; //置r/c為1,A0=0
h=*ad_1674;
*ad74_1s=0xE3;
l=*ad_1674;
}
}
void main(void)
{
unsigned char i;
unsigned int hi,lo,adresult;
while(1)主循環(huán)
{
for(i=0;i<6;i++)
{
select_channel(i);
hi=(unsigned int)(h<<4);高8位
lo=(unsigned int)(l>>4);低 4位
adresult=hi+lo;
}
}
}
4.結(jié)束語
本系統(tǒng)經(jīng)實(shí)驗(yàn)運(yùn)行后,取得良好的效果,基本上能準(zhǔn)確的將模擬量轉(zhuǎn)換為數(shù)字量,其誤差在LSB內(nèi)。
參考文獻(xiàn):
[1 ] 余永權(quán) ATMEL89系列單片機(jī)應(yīng)用技術(shù),北京航天航空大學(xué)出版社,2000
[2 ] 徐愛鈞,彭秀華 單片機(jī)高級(jí)語言C51應(yīng)用程序設(shè)計(jì),電子工業(yè)出版社 1998. 6