ADC0804的詳細(xì)控制程序和仿真圖_第1頁
ADC0804的詳細(xì)控制程序和仿真圖_第2頁
ADC0804的詳細(xì)控制程序和仿真圖_第3頁
ADC0804的詳細(xì)控制程序和仿真圖_第4頁
ADC0804的詳細(xì)控制程序和仿真圖_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、仿真電路圖,經(jīng)過測試,沒問題兩個(gè)圖是一體的。模擬電路:設(shè)計(jì)模擬電路的原因主要有以下兩點(diǎn)1由于外界信號的復(fù)雜性,使得傳感器直接輸出的電信號可能會存在一些問題(如不穩(wěn)定),這些不穩(wěn)定信號如果直接送到A/D芯片進(jìn)行采樣,則最終結(jié)果可能使得最后的顯示值來回亂跳,而無法確定待測的外界信號到底是多少。因此,可能需要設(shè)計(jì)一套模擬電路對傳感器輸出的不穩(wěn)定電信號進(jìn)行濾波等處理,去除干擾,使得進(jìn)入A/D轉(zhuǎn)換芯片的電壓值為一個(gè)穩(wěn)定的信號。2每一個(gè)A/D轉(zhuǎn)換芯片都有一個(gè)參考電壓,只有輸入的模擬電壓值在這個(gè)參考電壓的范圍內(nèi)才能進(jìn)行正確的轉(zhuǎn)換,例如:本試驗(yàn)將ADC0804芯片的參考電壓設(shè)置成0V5V,因此如果輸入的電壓值

2、大于5V,則轉(zhuǎn)換出的結(jié)果永遠(yuǎn)為0xFF,若輸入的電壓值小于0V,則轉(zhuǎn)換出的結(jié)果永遠(yuǎn)為0,這樣便無法正確的還原出被測信號的大小?;谏鲜鲈?,我們可能需要設(shè)計(jì)一套模擬電路,傳感器的輸出電壓值進(jìn)行一些變換(放大,縮?。沟盟偷紸/D轉(zhuǎn)換芯片的電壓值在轉(zhuǎn)換芯片的參考電壓范圍內(nèi)。A/D轉(zhuǎn)換芯片:即模擬/數(shù)字轉(zhuǎn)換芯片,它將輸入的模擬電壓信號轉(zhuǎn)換成單片機(jī)等控制處理器能夠識別的數(shù)字二進(jìn)制形式。處理器芯片:處理器芯片有很多中(比如51單片機(jī),ARM或者是PC上的奔騰處理器,AMD處理器)這些處理器雖然架構(gòu)不一樣,但是有個(gè)共同的特點(diǎn),就是它們能夠運(yùn)行程序,因此它們能通過程序?qū)/D芯片送入的二進(jìn)制形式的電壓值

3、進(jìn)行處理,通過運(yùn)算將其還原成待測的外界信號值,控制顯示部件(如LCD,八段數(shù)碼管)將這個(gè)值顯示出來。例如:假如ADC0804輸出的二進(jìn)制值0x80,則根據(jù)A/D轉(zhuǎn)換公式可以推出ADC0804的輸入電壓大小為(0x80/0x100)*5V=2.5V。假設(shè)信號經(jīng)過模擬電路縮小了8倍,則可以推出傳感器的輸出電壓為2.5V*8=20V,再根據(jù)傳感器的轉(zhuǎn)換公式(一般手冊會給出)即可得到輸入的外界信號的值。顯示:顯示的作用是將計(jì)算出的待測外界信號的值展示給測量人員,顯示的形式有很多種,如LCD,八段數(shù)碼管,上位機(jī)軟件等。通過上面的介紹,大家一定對這種基于A/D芯片的嵌入式設(shè)計(jì)模式有了一個(gè)大致的了解,其實(shí)現(xiàn)

4、時(shí)中很多應(yīng)用都是遵循了這種設(shè)計(jì)模式,比如常用的數(shù)字萬用表,數(shù)字溫度測量儀,血糖測量儀等。本試驗(yàn)也遵循了這種設(shè)計(jì)模式,只不過它省略了傳感器和模擬電路部分,首先通過滑動變阻器調(diào)節(jié)輸入到ADC0804芯片的電壓值(ADC0804芯片的參考電壓調(diào)節(jié)成0V5V,而滑動變阻器產(chǎn)生的電壓范圍也為0V5V,因此沒有必要設(shè)計(jì)額外的模擬電路),然后通過51單片機(jī)進(jìn)行運(yùn)算處理得到這個(gè)輸入電壓值,最后再控制八段數(shù)碼管將這個(gè)電壓值顯示出來,實(shí)際上是實(shí)現(xiàn)了一個(gè)簡易的數(shù)字電壓測量表。圖2是試驗(yàn)框圖。圖2:本試驗(yàn)示意圖接下來我們首先介紹實(shí)現(xiàn)本試驗(yàn)的電路設(shè)計(jì),然后介紹軟件實(shí)現(xiàn)方法。2.2 硬件設(shè)計(jì)本部分,我們首先介紹ADC08

5、04芯片的一些相關(guān)知識,然后介紹基于ADC0804和51單片機(jī)實(shí)現(xiàn)A/D轉(zhuǎn)換的電路設(shè)計(jì)。 ADC0804芯片介紹圖3:ADC0804規(guī)格及引腳分配圖本試驗(yàn)采用的A/D芯片為ADC0804,它是CMOS 8位單通道逐次漸近型的模/數(shù)轉(zhuǎn)換器,其規(guī)格及引腳圖如圖3所示,根據(jù)手冊我們可以得到各個(gè)引腳的大致功能如下:/CS:芯片片選信號,低電平有效,即/CS=0,該芯片才能正常工作,在外接多個(gè)ADC0804芯片時(shí),該信號可以作為選擇地址使用,通過不同的地址信號使能不同的ADC0804芯片,從而可以實(shí)現(xiàn)多個(gè)ADC通道的分時(shí)復(fù)用。/WR:啟動ADC0804進(jìn)行ADC采樣,該信號低電平有效,即/WR信號由高電

6、平變成低電平時(shí),觸發(fā)一次ADC轉(zhuǎn)換。/RD:低電平有效,即/RD=0時(shí),可以通過數(shù)據(jù)端口DB0DB7讀出本次的采樣結(jié)果。UIN(+)和UIN(-):模擬電壓輸入端,模擬電壓輸入接UIN(+)端,UIN(-)端接地。雙邊輸入時(shí)UIN(+)、UIN(-)分別接模擬電壓信號的正端和負(fù)端。當(dāng)輸入的模擬電壓信號存在“零點(diǎn)漂移電壓”時(shí),可在UIN(-)接一等值的零點(diǎn)補(bǔ)償電壓,變換時(shí)將自動從UIN(+)中減去這一電壓。VREF/2:參考電壓接入引腳,該引腳可外接電壓也可懸空,若外界電壓,則ADC的參考電壓為該外界電壓的兩倍,如不外接,則Vref與Vcc共用電源電壓,此時(shí)ADC的參考電壓即為電源電壓Vcc的值

7、。CLKR和CLKIN:外接RC電路產(chǎn)生模數(shù)轉(zhuǎn)換器所需的時(shí)鐘信號,時(shí)鐘頻率CLK = 1/1.1RC,一般要求頻率范圍100KHz1.28MHz。AGND和DGND:分別接模擬地和數(shù)字地。 /INT:中斷請求信號輸出引腳,該引腳低電平有效,當(dāng)一次A/D轉(zhuǎn)換完成后,將引起/INT=0,實(shí)際應(yīng)用時(shí),該引腳應(yīng)與微處理器的外部中斷輸入引腳相連(如51單片機(jī)的INT0,INT1腳),當(dāng)產(chǎn)生/INT信號有效時(shí),還需等待/RD=0才能正確讀出A/D轉(zhuǎn)換結(jié)果,若ADC0804單獨(dú)使用,則可以將/INT引腳懸空。DB0DB7:輸出A/D轉(zhuǎn)換后的8位二進(jìn)制結(jié)果。 外圍電路設(shè)計(jì)圖4:ADC0804的外圍電路圖4為A

8、DC0804外圍電路原理圖,其中,AVCC=5V,引腳VREF/2懸空,因此ADC轉(zhuǎn)換的參考電壓為AVCC的值,即5V。VIN-接地,而VIN+連接滑動變阻器VR1的輸出,因此VIN+的電壓輸入范圍為0V5V,正好處于參考電壓范圍內(nèi)。引腳CS_1, WR_1和RD_1分別連接單片機(jī)的P3_5,P3_6以及P3_7腳,而DB0DB7連接單片機(jī)的P2腳.下面介紹一些電路設(shè)計(jì)方面的知識初學(xué)者看到這里可能會有這樣的疑問,就是“圖4的外圍電路為什么是這樣設(shè)計(jì)?CLKR引腳為什么要外接一個(gè)電阻R36和一個(gè)電容C15?引腳CLKIN為什么要外接一個(gè)電容C15?)。其實(shí)這里并沒有任何神秘的地方,我們仔細(xì)看看A

9、DC0804的手冊就知道答案了,手冊(本試驗(yàn)所屬的文件夾中包含了這個(gè)pdf文件)的第12頁有一段內(nèi)容為“Testing the A/D Conveter”,該段介紹了一個(gè)簡易的芯片測試方法,其中的“FIGURE 18”就給出了進(jìn)行這個(gè)簡易試驗(yàn)的原理圖,以及計(jì)算公式。如圖5所示圖5:ADC0804手冊給出的參考電路圖大家仔細(xì)看看,圖5給出中的手冊中的參考電路圖是不是和圖4的原理圖如出一轍?的確,我們就是參考了手冊的推薦電路從而確定了ADC0804的外圍電路的設(shè)計(jì)。手冊中甚至連RC電路的電容和電阻的取值都給出來了,照搬就是了!真的是沒有任何神秘之處!下面介紹一下datasheet對電路設(shè)計(jì)以及軟件

10、編寫的重要作用。根據(jù)我們多年的設(shè)計(jì)經(jīng)驗(yàn),當(dāng)我們的電路中需要用到某一塊芯片的時(shí)候,往往首先去下載它的手冊,也就是datasheet,有很多專門提供datasheet下載的網(wǎng)站,推薦一個(gè)我們常用的網(wǎng)址:芯片的datasheet會介紹你所需要的芯片信息,從典型外圍電路的搭建,到芯片的封裝,電氣特性以及軟件編程模型。一般來說,直接copy手冊中給出的推薦外圍電路即可。當(dāng)然,若是閱讀完手冊后還是無法確定外圍電路的搭建,則可以直接聯(lián)系生產(chǎn)這塊芯片的公司的技術(shù)服務(wù)部門(這里可以聯(lián)系A(chǔ)D公司),他們肯定給你提供一套完整詳盡的電路解決方案的(包括外圍電路的設(shè)計(jì)以及甚至是軟件的示例代碼)。這也就是現(xiàn)在比較流行的單

11、芯片解決方案的含義所在,芯片提供商提供一塊芯片后往往會提供一套基于該芯片的完整解決方案,該解決方案包括基于這塊芯片的電路設(shè)計(jì),軟件設(shè)計(jì)。產(chǎn)品制造廠商只要根據(jù)這個(gè)解決方案做及少的改動,即可以設(shè)計(jì)出滿足自身需要的產(chǎn)品來!2.2 軟件設(shè)計(jì)下面我們介紹軟件的編寫。本試驗(yàn)的軟件需要實(shí)現(xiàn)一下幾個(gè)步驟1 控制ADC0804芯片進(jìn)行正確采樣,讀取采樣結(jié)果。2 對采樣值進(jìn)行運(yùn)算變換,換算出實(shí)際的滑動變阻器輸入電壓值。3 將該電壓值通過八段數(shù)碼管顯示出來,從而實(shí)現(xiàn)一個(gè)簡易的數(shù)字電壓測量表功能。其中第三個(gè)步驟涉及到八段數(shù)碼管顯示相關(guān)知識,其內(nèi)容在本套學(xué)習(xí)板的“”試驗(yàn)中有詳細(xì)的介紹。下面我們主要介紹實(shí)現(xiàn)前兩個(gè)步驟的方

12、法。步驟一:控制ADC進(jìn)行正確采樣,讀取正確的采樣值。前面我們已經(jīng)提到了芯片的datasheet對于硬件設(shè)計(jì)以及軟件編程的重要性。同樣,要使得ADC0804正常工作,我們依然首先需要仔細(xì)的閱讀其使用手冊。仔細(xì)閱讀手冊后,我們發(fā)現(xiàn)了在手冊的第7頁給出了一個(gè)時(shí)序圖(Timing Diagrams),如圖6所示圖6:ADC0804手冊給出的ADC轉(zhuǎn)換時(shí)序圖圖6給出的其實(shí)就是使ADC0804正確工作的軟件編程模型。由圖可見,實(shí)現(xiàn)一次ADC轉(zhuǎn)換主要包含下面三個(gè)步驟: 1.啟動轉(zhuǎn)換:由圖6中的上部“FIGURE 10A”可知,在/CS信號為低電平的情況下,將/WR引腳先由高電平變成低電平,經(jīng)過至少tW(W

13、R)I 延時(shí)后,再將/WR引腳拉成高電平,即啟動了一次AD轉(zhuǎn)換。 注:手冊中給出了要正常啟動AD轉(zhuǎn)換/WR的低電平保持時(shí)間tW(WR)I的最小值為100ns,(見手冊第4頁的Electrical Specification,如圖7紅圈所示)即/WR拉低后延時(shí)大于100ns即可以,具體做法可通過插入NOP指令或者調(diào)用delay()延時(shí)函數(shù)實(shí)現(xiàn),不用太精確,只要估計(jì)插入的延時(shí)大于100ns即可。2延時(shí)等待轉(zhuǎn)換結(jié)束:依然由圖6中的上部“FIGURE 10A”可知,由拉低/WR信號啟動AD采樣后,經(jīng)過1到8個(gè)Tclk+INTERNAL Tc延時(shí)后,AD轉(zhuǎn)換結(jié)束,因此,啟動轉(zhuǎn)換后必須加入一個(gè)延時(shí)以等待A

14、D采樣結(jié)束。注:手冊中給出了內(nèi)部轉(zhuǎn)換時(shí)間“INTERNAL Tc”的時(shí)間范圍為6273個(gè)始終周期(見手冊第4頁的Electrical Specification,如圖7蘭圈所示),因此延時(shí)等待時(shí)間應(yīng)該至少為8+73=81個(gè)時(shí)鐘周期。本試驗(yàn)時(shí)鐘頻率約為Fclk=1/1.1R36C15=606KHz,其中R36約為150K, C15約為150pF,因此時(shí)鐘周期約為Tclk=1/Fclk=1.65us。所以該步驟至少應(yīng)延時(shí)81*Tclk=133.65us. 具體做法可通過插入NOP指令或者調(diào)用delay()延時(shí)函數(shù)實(shí)現(xiàn),不用太精確,只要估計(jì)插入的延時(shí)大于133.65us即可。3.讀取轉(zhuǎn)換結(jié)果:由圖6

15、的下部“FIGURE 10B”可知,采樣轉(zhuǎn)換完畢后,再/CS信號為低的前提下,將/RD腳由高電平拉成低電平后,經(jīng)過tACC的延時(shí)即可從DB腳讀出有效的采樣結(jié)果。注:手冊中給出了tACC的典型值和最大值分別為135ns和200ns(見手冊第4頁的Electrical Specification,如圖7綠圈所示),因此將/RD引腳拉低后,等待大于200ns后即可從DB讀出有效的轉(zhuǎn)換結(jié)果。具體做法可通過插入NOP指令或者調(diào)用delay()延時(shí)函數(shù)實(shí)現(xiàn),不用太精確,只要估計(jì)插入的延時(shí)大于200ns即可。圖7:ADC0804手冊給出的電器特性表步驟二:對采樣值進(jìn)行運(yùn)算變換,換算出實(shí)際的滑動變阻器輸入電壓

16、值。對于任何一個(gè)A/D采樣器而言,其轉(zhuǎn)換公式如下: 其中:輸入ADC的模擬電壓值。:ADC轉(zhuǎn)換后的二進(jìn)制值。本試驗(yàn)的ADC0804為八位。:ADC能夠表示的刻度總數(shù)。ADC0804為八位ADC,因此 :ADC參考電壓值,本試驗(yàn)ADC0804的被設(shè)置為5V因此,對于本試驗(yàn),轉(zhuǎn)換公式為 步驟三:將該電壓值通過八段數(shù)碼管顯示出來,從而實(shí)現(xiàn)一個(gè)簡易的數(shù)字電壓測量表功能。涉及到八段數(shù)碼管顯示相關(guān)知識,其內(nèi)容在本套學(xué)習(xí)板的“”試驗(yàn)中有詳細(xì)的介紹。綜上所述,我們給出了完成單次采樣的詳細(xì)流程圖,如圖8所示圖8:ADC0804完成單次采樣的軟件控制流程圖下面給出程序的主程序代碼詳細(xì)的代碼見本試驗(yàn)文件夾中的源程序

17、部分,代碼中有非常詳細(xì)的注釋。/名稱:單片機(jī)控制ADC0804模數(shù)轉(zhuǎn)換實(shí)現(xiàn)電壓測量(05V)/芯片:AT89S52/晶振:12M/編譯器:偉福6000/日期:2007-08-23/控制口定義/#include<reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intint ad_data;#define ad0_7 P3 /AD數(shù)據(jù)口sbit cs=P10; /芯片選擇信號,控制芯片的啟動和結(jié)果讀取,低電平有效sbit rd=P11; /讀數(shù)據(jù)控制,低電平有效sbit

18、 wr=P12; /AD轉(zhuǎn)換起動控制,上升沿有效sbit intr=P13; /AD轉(zhuǎn)換結(jié)束輸出低電平uchar led10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/5ms延時(shí)子程序/void delay(uint ms) uint x,y; for(x=ms;x>0;x-) for(y=255;y>0;y-);/啟動AD轉(zhuǎn)換子程序/void start_ad() cs=0; /允許進(jìn)行A/D轉(zhuǎn)換 wr=0;_nop_();wr=1; /WR由低變高時(shí),AD開始轉(zhuǎn)換 while(intr); /查詢轉(zhuǎn)換結(jié)束產(chǎn)生INTR

19、信號(低電平有效) cs=1; /停止AD轉(zhuǎn)換/讀A/D數(shù)據(jù)子程序/void read_ad() cs=0; /允許讀 rd=0; /讀取轉(zhuǎn)換數(shù)據(jù)結(jié)果數(shù)據(jù)結(jié)果 delay(1); ad_data=ad0_7; /把數(shù)據(jù)存到ad_data中 rd=1;cs=1; /停止A/D讀取 /數(shù)據(jù)處理與顯示子程序/說明:當(dāng)輸入電壓為5V時(shí),A/D輸出為FFH,即輸入電壓=AD數(shù)據(jù)*(5/255)=AD數(shù)據(jù)/(255/5)=AD數(shù)據(jù)/51/ 用四位數(shù)碼管進(jìn)行顯示,數(shù)碼管的AH接于P3口,公共端從最低位是P2.0,最高位是P2.3void data_shout()/觀察0-5v的變化 uint a=20,on

20、e,two,three,four; four=ad_data/51; /第四位數(shù)碼管(最高位) three=ad_data%51*10/51; /第三位數(shù)碼管 two=ad_data%51*10%51*10/51; /第二位數(shù)碼管 one=ad_data%51*10%51*10%51*10/51; /第一位數(shù)碼管(最低位) while(a-) P0=ledfour-0x80; P2=0x01; delay(1);P0=0XFF;P2=0; P0=ledthree; P2=0x02; delay(1);P0=0XFF;P2=0; P0=ledone; P2=0x04; delay(1);P0=0XFF;P2=0;P0=le

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論