楊歡 杜少華 袁國鋒 陳曉
摘要:A/D轉(zhuǎn)換器是一種能把輸入模擬電壓或電流變成與其成正比的數(shù)字量的電路芯片,它廣泛應(yīng)用在單片機(jī)的前向輸入通道中。文章采用ADC0804單通道8位并行接口芯片作為A/D轉(zhuǎn)換器完成數(shù)據(jù)轉(zhuǎn)換,控制器使用美國ATMEL公司的增強(qiáng)型AT89C52單片機(jī),對轉(zhuǎn)換完成后得到的數(shù)字量經(jīng)過單片機(jī)P1口輸出到8個(gè)LED發(fā)光二極管上顯示。使用Keil C51編程軟件,編譯成功后,用Proteus仿真軟件設(shè)計(jì)電路原理圖,實(shí)現(xiàn)A/D轉(zhuǎn)換過程并顯示轉(zhuǎn)換結(jié)果。
關(guān)鍵詞:Proteus;單片機(jī);A/D轉(zhuǎn)換;仿真
中圖分類號(hào):G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1674-9324(2019)30-0278-03
在單片測控系統(tǒng)中,對非電物理量如溫度、壓力、流量等的測量,需經(jīng)傳感器先轉(zhuǎn)換成連續(xù)變化的模擬電信號(hào)(電壓或電流),然后再將模擬電信號(hào)轉(zhuǎn)換成數(shù)字量后才能在單片機(jī)中進(jìn)行處理。實(shí)現(xiàn)模擬量轉(zhuǎn)換成數(shù)字量的器件稱為ADC(A/D轉(zhuǎn)換器)。單片機(jī)處理完畢的數(shù)字量,有時(shí)根據(jù)控制需求轉(zhuǎn)換為模擬信號(hào)輸出。數(shù)字量轉(zhuǎn)換成模擬量的器件稱為DAC(D/A轉(zhuǎn)換器)[1]。本文將介紹一種基于Proteus的A/D轉(zhuǎn)換仿真實(shí)現(xiàn)過程,A/D轉(zhuǎn)換器使用ADC0804單通道8位并行接口芯片完成數(shù)據(jù)轉(zhuǎn)換,控制器使用美國ATMEL公司的增強(qiáng)型AT89C52單片機(jī),轉(zhuǎn)換結(jié)果經(jīng)過單片機(jī)P1口送到8個(gè)LED發(fā)光二極管上顯示輸出。通過該仿真實(shí)驗(yàn)可以清楚地了解A/D轉(zhuǎn)換的原理,直觀地看到A/D轉(zhuǎn)換的對比結(jié)果。
一、A/D轉(zhuǎn)換芯片ADC0804簡介
A/D轉(zhuǎn)換器(ADC)把模擬量轉(zhuǎn)換成數(shù)字量,單片機(jī)才能進(jìn)行數(shù)據(jù)處理。隨著超大規(guī)模集成電路技術(shù)的飛速發(fā)展,大量結(jié)構(gòu)不同、性能各異的A/D轉(zhuǎn)換芯片應(yīng)運(yùn)而生。對設(shè)計(jì)者來說,只需合理地選擇芯片即可。現(xiàn)在部分單片機(jī)片內(nèi)也集成了A/D轉(zhuǎn)換器,位數(shù)為8位、10位或12位,且轉(zhuǎn)換速度也很快,但是在片內(nèi)A/D轉(zhuǎn)換器不能滿足需要的情況下,還是需要擴(kuò)充。因此,外部擴(kuò)展A/D轉(zhuǎn)換器的基本方法,還是應(yīng)當(dāng)掌握[1]。本文采用的是ADC0804作為A/D轉(zhuǎn)換芯片進(jìn)行A/D轉(zhuǎn)換仿真實(shí)驗(yàn)。ADC0804是單通道8并行接口芯片,是一種8位逐次比較式并行AD轉(zhuǎn)換器,采用CMOS工藝的20引腳芯片。其轉(zhuǎn)換時(shí)間為100μs,輸入電壓范圍為0—5V。芯片具有三態(tài)輸出數(shù)據(jù)鎖存器,可直接連接在單片機(jī)或微處理器的數(shù)據(jù)總線上[2]。
芯片的引腳如圖,各引腳功能如下:
CS:芯片選擇信號(hào)。當(dāng)CS=0時(shí),器件才能工作。
RD:外部讀取轉(zhuǎn)換結(jié)果的控制輸出信號(hào)。RD=1時(shí)輸出為高阻態(tài)不輸出轉(zhuǎn)換結(jié)果,RD=0時(shí)才輸出轉(zhuǎn)換結(jié)果。
WR:用來啟動(dòng)轉(zhuǎn)換的控制輸入,WR=0時(shí)清除上一次轉(zhuǎn)換結(jié)果,WR=1時(shí)當(dāng)前的輸入電壓進(jìn)行轉(zhuǎn)換。
CLKIN,CLKR:外部時(shí)鐘輸入或接振蕩元件(R,C)頻率在100—1460KHz。
INTR:中斷請求信號(hào)輸出,轉(zhuǎn)換完成后輸出低電平。
VIN(+)、VIN(-):差動(dòng)模擬電壓輸入。輸入端正電壓時(shí),VIN(-)接地。
AGND、DGND:分別為模擬信號(hào)地和數(shù)字信號(hào)地。
VREF/2:接輔助參考電壓。注意參考電壓為此端連接電壓的2倍。D0-D7:8位轉(zhuǎn)換結(jié)果的數(shù)字輸出,此8個(gè)引腳為三態(tài)輸出。VCC:電源電壓。ADC0804是8位A/D轉(zhuǎn)換器,8位A/D轉(zhuǎn)換器的輸入電壓值與采樣值的關(guān)系如表1所示。
二、ADC0804的工作原理
CS是片選端,當(dāng)CS=0時(shí),器件才能工作。WR是控制芯片啟動(dòng)的輸入端,WR=0時(shí)清除上一次轉(zhuǎn)換結(jié)果,WR=1時(shí)當(dāng)前的輸入電壓進(jìn)行轉(zhuǎn)換。INTR是轉(zhuǎn)換結(jié)束信號(hào)輸出端,輸出變低電平表示本次轉(zhuǎn)換已經(jīng)完成,可作為中斷或查詢信號(hào)。RD為轉(zhuǎn)換結(jié)果輸出控制端,當(dāng)它和CS同時(shí)為低電平時(shí),輸出數(shù)據(jù)鎖存器DB0—DB7各口線上出現(xiàn)8位并行二進(jìn)制編碼,這就是AD轉(zhuǎn)換結(jié)果[2]。ADC0804的啟動(dòng)轉(zhuǎn)換時(shí)序圖如圖2所示,CS先為低電平,WR隨后置低,經(jīng)過至少tw(WR)L時(shí)間后,WR拉高,隨后A/D轉(zhuǎn)換器被啟動(dòng),并且在經(jīng)過一定(1—8個(gè)A/D時(shí)鐘周期+內(nèi)部Tc)時(shí)間后,A/D轉(zhuǎn)換完成,轉(zhuǎn)換結(jié)果存入數(shù)據(jù)鎖存器,同時(shí)INTR自動(dòng)變?yōu)榈碗娖?,通過單片機(jī)本次轉(zhuǎn)換已結(jié)束。ADC0804的讀取數(shù)據(jù)時(shí)序圖如圖3所示,當(dāng)INTR變?yōu)榈碗娖胶螅瑢S先置低,接著再將RD置低,在RD置低至少經(jīng)過tACC時(shí)間后,數(shù)據(jù)輸出口上的數(shù)據(jù)達(dá)到穩(wěn)定狀態(tài),此時(shí)直接讀取數(shù)字輸出端口數(shù)據(jù)便可得到轉(zhuǎn)換后的數(shù)據(jù)信號(hào),讀取數(shù)據(jù)后,馬上將RD拉高,然后將CS拉高。INTR是自動(dòng)變化的,不必人為干涉。
三、硬件電路設(shè)計(jì)
Proteus軟件是英國Labcenter Electronics公司1989年推出的EDA工具軟件,是一個(gè)集模擬電路、數(shù)字電路、模/數(shù)混合電路以及多種微控制器為一體的系統(tǒng)設(shè)計(jì)與仿真平臺(tái),為各種實(shí)際的單片機(jī)應(yīng)用系統(tǒng)開發(fā)提供了功能強(qiáng)大的虛擬仿真工具,已有20多年的歷史。Proteus是一種完全用軟件手段對單片機(jī)應(yīng)用系統(tǒng)進(jìn)行仿真開發(fā),與用戶樣機(jī)在硬件上無任何聯(lián)系,只需在PC機(jī)上安裝仿真開發(fā)工具軟件Proteus,就可進(jìn)行單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)開發(fā)、虛擬仿真與調(diào)試[1]。本文使用的是Proteus 7.8 SP2版本。ADC0804與單片機(jī)AT89C52的連接電路圖如圖4所示。
AD轉(zhuǎn)換器接口為ADC0804,單片機(jī)為AT89C52,顯示輸出為8個(gè)LED發(fā)光二極管。ADC0804的DB0—DB7通過數(shù)據(jù)總線和單片機(jī)的P0.0/AD0—P0.7/AD7連接,ADC0804的CS、RD、WR依次和單片機(jī)的P3.5、P3.6和P3.7引腳連接,ADC0804的INTR和單片機(jī)的P3.2引腳連接。ADC0804的CLK IN和CLK R之間接一10kΩ電阻R1,CLK R端經(jīng)一150pF電容C4接地,AGND和DGND接地,VREF/2接2.5V外接參考電壓在VIN+和VIN-之間接入0—+5V模擬輸入電壓,可通過調(diào)節(jié)電位器(微調(diào)電阻)RV1實(shí)現(xiàn)電壓信號(hào)的變化。電路中用到的器件名稱如圖5所示。
四、系統(tǒng)軟件設(shè)計(jì)
AT89C52單片機(jī)控制ADC0804工作可采用以下三種方式:延時(shí)等待、查詢和中斷。延時(shí)等待方式:ADC0804的轉(zhuǎn)換時(shí)間為100μs,當(dāng)啟動(dòng)A/D轉(zhuǎn)換后,采用軟件延時(shí)的方法等待一段時(shí)間,等待時(shí)間稍大于A/D轉(zhuǎn)換所需時(shí)間,以保證A/D轉(zhuǎn)換器有足夠的時(shí)間完成轉(zhuǎn)換,待延時(shí)結(jié)束,直接讀取轉(zhuǎn)換數(shù)據(jù)。查詢方式:當(dāng)ADC0804的A/D轉(zhuǎn)換結(jié)束后,INTR信號(hào)將變低,這是個(gè)轉(zhuǎn)換結(jié)束標(biāo)志信號(hào)。啟動(dòng)A/D轉(zhuǎn)換后,CPU就不斷地查詢INTR引腳的狀態(tài),若INTR為高電平,表示A/D轉(zhuǎn)換正在進(jìn)行,繼續(xù)查詢;若INTR為低電平,表示A/D轉(zhuǎn)換已經(jīng)結(jié)束,可以讀取轉(zhuǎn)換結(jié)果。本例中,INTR信號(hào)和單片機(jī)P3.2/INT1連
接,查詢P3.2的電平變化即可[2]。
中斷方式:中斷和查詢方式類似,但查詢方式下,單片機(jī)需不斷地查詢,比較忙;中斷方式下,INTR*變?yōu)榈碗娖綍r(shí),就會(huì)引起CPU的中斷,在中斷服務(wù)程序中就可讀取A/D轉(zhuǎn)換結(jié)果。
查詢方式程序如下:
五、Proteus仿真軟件的結(jié)果
通過調(diào)節(jié)原理圖上電位器RV1(微調(diào)電阻)的電阻值,使輸入信號(hào)依次為0V、1V、2V、3V、4V、5V,即可看到LED等點(diǎn)亮的結(jié)果依次為00H、33H、66H、99H、CCH、FFH,這和表1的8位A/D轉(zhuǎn)換器的輸入電壓值與采樣值的關(guān)系是完全一致的。例如當(dāng)前通過調(diào)節(jié)RV1(60%),使得輸入電壓為3V,則仿真結(jié)果如圖7所示,LED發(fā)光二極管是共陽極,所以當(dāng)引腳為低電平時(shí)燈亮起,因此亮起的燈為0,不亮的燈為1。因此LED D1—D8的顯示結(jié)果為二進(jìn)制1001 1001B,轉(zhuǎn)換為十六進(jìn)制為99H,與表1中的值一致。
六、其他A/D轉(zhuǎn)換器芯片
盡管A/D轉(zhuǎn)換器的種類很多,但目前廣泛應(yīng)用在單片機(jī)應(yīng)用系統(tǒng)中的主要有逐次比較型轉(zhuǎn)換器和雙積分型轉(zhuǎn)換器。逐次比較型A/D轉(zhuǎn)換器,在精度、速度和價(jià)格上都適中,是最常用的A/D轉(zhuǎn)換器。雙積分型A/D轉(zhuǎn)換器,具有精度高、抗干擾性好、價(jià)格低廉等優(yōu)點(diǎn),與逐次比較型A/D轉(zhuǎn)換器相比,轉(zhuǎn)換速度較慢,近年來在單片機(jī)應(yīng)用領(lǐng)域中已得到廣泛應(yīng)用。本文中使用的ADC0804就屬于逐次比較型。ADC0804芯片是ADC0801—ADC0805系列型號(hào)的一種,他們之間的區(qū)別只是精度不同。精度較高的是ADC0801,非線性誤差為±(1/4)LSB。最差的是ADC0804和ADC0805的非線性誤差為±1LSB。ADC0802和ADC0803的非線性誤差為±(1/2)LSB居中。與ADC0804性能相近的芯片還有ADC0808系列多通道8位CMOS并行A/D轉(zhuǎn)換器。ADC0808系列芯片主要有8通道的ADC0808/ADC0809和16通道的ADC0816/ADC0817。
除了并行的A/D轉(zhuǎn)換器外,帶有同步SPI串行接口的A/D轉(zhuǎn)換器的使用也逐漸增多。串行接口的A/D轉(zhuǎn)換
器具有占用單片機(jī)的端口線少、使用方便、接口簡單等優(yōu)點(diǎn),已經(jīng)得到廣泛的應(yīng)用。較為典型的串行A/D轉(zhuǎn)
換器為美國TI公司的TLC549、TLC1549以及TLC1543和TLC2543等。
使用Proteus軟件進(jìn)行單片機(jī)系統(tǒng)仿真設(shè)計(jì),是虛擬仿真技術(shù)和計(jì)算機(jī)多媒體技術(shù)相結(jié)合的綜合運(yùn)用,有利于培養(yǎng)學(xué)生的電路設(shè)計(jì)能力及仿真軟件操作能力,成為單片機(jī)課程設(shè)計(jì)和大學(xué)生畢業(yè)設(shè)計(jì)中的重要實(shí)踐環(huán)節(jié)。在使用Proteus進(jìn)行系統(tǒng)仿真開發(fā)成功之后再進(jìn)行實(shí)際制作,能極大地提高單片機(jī)系統(tǒng)設(shè)計(jì)效率。
參考文獻(xiàn):
[1]張毅剛,趙光權(quán),劉旺.單片機(jī)原理及應(yīng)用[M].第3版.北京:高等教育出版社,2016.
[2]杜樹春.51單片機(jī)很簡單—Proteus及匯編語言入門與實(shí)例[M].北京:化學(xué)工業(yè)出版社,2017.