ADC0809是CMOS工藝8通道,8位逐次逼近式A/D模數(shù)轉(zhuǎn)換器。其內(nèi)部有一個(gè)8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號(hào),只選通8路模擬輸入信號(hào)中的一個(gè)進(jìn)行A/D轉(zhuǎn)換。目前僅在單片機(jī)初學(xué)應(yīng)用設(shè)計(jì)中較為常見。因此本文介紹了一種數(shù)字電壓表,其采用了ADC0809來進(jìn)行電壓的采集及模數(shù)轉(zhuǎn)換,用AT89S52單片機(jī)來做控制單元,進(jìn)行電壓的測量和顯示。
1.系統(tǒng)硬件設(shè)計(jì)
1.1系統(tǒng)構(gòu)成
該系統(tǒng)主要包括幾大模塊:數(shù)據(jù)采集模塊、A/D轉(zhuǎn)換模塊、控制模塊、顯示模塊、按鍵模塊等。采用AT89S52作為控制模塊,ADC0809作為A/D轉(zhuǎn)換模塊的核心,ADC0809本身具有8路模擬量輸入端口,通過C、B、A,3位地址輸入端,能從8路中選擇一路進(jìn)行轉(zhuǎn)換。如每隔一段時(shí)間依次輪流改變3位地址輸入端的地址,就能依次對8路輸入電壓進(jìn)行測量。LED數(shù)碼管的顯示采用軟件譯碼動(dòng)態(tài)顯示,通過按鍵模塊的操作可以選擇8路循環(huán)顯示,也可以選擇某條單路顯示。
1.2數(shù)據(jù)采集電路
數(shù)據(jù)采集電路是系統(tǒng)的主要組成部分,ADC0809具有8路模擬量輸入通道IN0~IN7,通過3位地址輸入端C、B、A(引腳23~25)進(jìn)行選擇。引腳22為地址鎖存控制端ALE,當(dāng)輸入為高電平時(shí),C、B、A引腳輸入的地址鎖存于ADC0809內(nèi)部鎖存器中,經(jīng)內(nèi)部譯碼電路譯碼選中相應(yīng)的模擬通道。引腳6為啟動(dòng)轉(zhuǎn)換控制端START,當(dāng)輸入一個(gè)2 μs寬的高電平脈沖時(shí),就啟動(dòng)ADC0809開始對輸入通道的模擬量進(jìn)行轉(zhuǎn)換。引腳7為A/D轉(zhuǎn)換器,當(dāng)開始轉(zhuǎn)換時(shí),EOC信號(hào)為低電平,經(jīng)過一段時(shí)間,轉(zhuǎn)換結(jié)束,轉(zhuǎn)換結(jié)束信號(hào)EOC輸出高電平,轉(zhuǎn)換結(jié)果存放于ADC0809內(nèi)部的輸出數(shù)據(jù)寄存器中。引腳9腳為A/D轉(zhuǎn)換數(shù)據(jù)輸出允許控制端OE,當(dāng)OE為高電平時(shí),存放于輸出數(shù)據(jù)鎖存器中的數(shù)據(jù)通過ADC0809的數(shù)據(jù)線D0~D7輸出。引腳10為ADC0809的時(shí)鐘信號(hào)輸入端CLOCK.在連接時(shí),ADC0809的數(shù)據(jù)線D0~ D7與AT89S52的P1口相連接,ADC0809的地址引腳、地址鎖存端ALE、啟動(dòng)信號(hào)START、數(shù)據(jù)輸出允許控制端OE分別與AT89S51的P3口相連接,轉(zhuǎn)換結(jié)束信號(hào)EOC與AT89S52的P3.2相連接。時(shí)鐘信號(hào)輸入端CLOCK信號(hào),由單片機(jī)的地址鎖存信號(hào)ALE得到,采集電路如圖1所示。
圖1 數(shù)據(jù)采集電路
2.軟件設(shè)計(jì)
2.1主程序
主程序包含初始化部分,調(diào)用A/D轉(zhuǎn)換子程序和調(diào)用顯示子程序,如圖2所示。
圖2 主程序流程圖
初始化部分包含存通道數(shù)據(jù)緩沖區(qū)初始化和顯示緩沖區(qū)初始化。另外,對于單路顯示和循環(huán)顯示,系統(tǒng)設(shè)置了一個(gè)初始標(biāo)志位。
初始化時(shí)標(biāo)志位設(shè)置為0,默認(rèn)為循環(huán)顯示,當(dāng)它為1時(shí),則單路顯示,標(biāo)志位通過外部按鍵控制。
2.2數(shù)據(jù)處理子程序
ADC0809轉(zhuǎn)換之后輸出的結(jié)果是8位二進(jìn)制數(shù)。由公式(1)可知,當(dāng)ADC0809輸出為(111111111)時(shí),輸入電壓值VI=5.00V;當(dāng)ADC0809輸出為(00000000)時(shí),輸入電壓值為VI=0.00V;當(dāng)ADC0809輸出為(10000000)時(shí),輸入電壓值VI=2.50V.由于單片機(jī)進(jìn)行數(shù)學(xué)運(yùn)算時(shí)結(jié)果只取整數(shù)部分,因此當(dāng)輸出為(10000000)時(shí)計(jì)算出的電壓值VI=2.00V,很不準(zhǔn)確。為了提高精確度,必須把小數(shù)部分保留,具體方法是:如果小數(shù)點(diǎn)后保留兩位,在運(yùn)算的時(shí)候分子乘以100,保留三位就乘以1000;本設(shè)計(jì)是在小數(shù)點(diǎn)后保留兩位,運(yùn)算方式如公式(2)。
VI=Dout /255×5 (1)
VI=Dout/255×5×100=Dout×100/51 (2)
由式(2)可知當(dāng)ADC0809輸出為(10000000)時(shí),單片機(jī)運(yùn)算結(jié)果為250;然后由單片機(jī)將250除以10得到商為25,余數(shù)為0,再將25除以10得到商為2,余數(shù)為5;由此得到較為精確的數(shù)值。
結(jié)語
本文總結(jié)了基于ADC0809設(shè)計(jì)的數(shù)字電壓表,實(shí)現(xiàn)了采集8路數(shù)據(jù),并將結(jié)果在四位一體數(shù)碼管上進(jìn)行滾動(dòng)顯示或單獨(dú)顯示的功能,測量的最小分辨率為0.019V;該數(shù)字電壓表具有電路簡單,成本低等優(yōu)點(diǎn),可以方便地進(jìn)8路A/D轉(zhuǎn)換量的測量,并可選擇在數(shù)碼管上滾動(dòng)顯示或單路顯示的不同工作模式。
電話:18923864027(同微信)
QQ:709211280
〈烜芯微/XXW〉專業(yè)制造二極管,三極管,MOS管,橋堆等,20年,工廠直銷省20%,上萬家電路電器生產(chǎn)企業(yè)選用,專業(yè)的工程師幫您穩(wěn)定好每一批產(chǎn)品,如果您有遇到什么需要幫助解決的,可以直接聯(lián)系下方的聯(lián)系號(hào)碼或加QQ/微信,由我們的銷售經(jīng)理給您精準(zhǔn)的報(bào)價(jià)以及產(chǎn)品介紹