嚴(yán) 敏
(江蘇聯(lián)合職業(yè)技術(shù)學(xué)院揚(yáng)州商務(wù)分院信息電子系,江蘇 揚(yáng)州 225127)
基于51單片機(jī)的數(shù)字電壓表的設(shè)計與實現(xiàn)
嚴(yán) 敏
(江蘇聯(lián)合職業(yè)技術(shù)學(xué)院揚(yáng)州商務(wù)分院信息電子系,江蘇 揚(yáng)州 225127)
以AT89C51單片機(jī)為控制核心,利用ADC0809模數(shù)轉(zhuǎn)換芯片設(shè)計數(shù)字電壓表,用LED數(shù)碼管實時顯示測量電壓。并進(jìn)行仿真與實驗,結(jié)果表明,與傳統(tǒng)模擬電壓表相比,基于ADC0809的數(shù)字電壓表具有測量精度高、顯示直觀等優(yōu)點。
ADC0809;單片機(jī);LED數(shù)碼管;Proteus
在智能儀表和測量控制等領(lǐng)域,數(shù)字電壓表得到了廣泛的應(yīng)用,用其來測量電壓,并以數(shù)字方式顯示測量值[1-3]。本文以AT89C51為主控制器,利用ADC0809設(shè)計數(shù)字電壓表,且電壓值用LED數(shù)碼管進(jìn)行顯示。
本設(shè)計使用ADC0809采集模擬數(shù)據(jù),完成對其中一路0~5V直流電壓的模數(shù)轉(zhuǎn)換,ADC0809輸出的是數(shù)字信號,范圍為00000000~11111111,單片機(jī)的任務(wù)是讀取轉(zhuǎn)換結(jié)果,并進(jìn)行數(shù)值量程變換,再使用4位LED數(shù)碼管動態(tài)掃描、實時顯示測量的電壓,精確到小數(shù)點后2位,單位為V,如圖1所示。
圖1 數(shù)字電壓表硬件電路
表1 地址選擇與被選通道之間的關(guān)系表
圖1中,ADC0809是8位8路A/D轉(zhuǎn)換芯片,也就是說,輸出的數(shù)字信號是8位二進(jìn)制數(shù)據(jù),輸入的模擬通道有8路,但究竟選擇哪一路模擬信號進(jìn)行模數(shù)轉(zhuǎn)換,則由ADDA、ADDB、ADDC這3個管腳決定,如表1所示。本設(shè)計采用通道IN0,因此將這3個管腳都接地。本設(shè)計中,將ALE與START這兩個管腳相連,目的是在信號的上升沿鎖存通道地址,緊跟著在下降沿就啟動轉(zhuǎn)換。EOC管腳是轉(zhuǎn)換結(jié)束信號,OE管腳是輸出允許信號,CLK管腳是時鐘信號。由于ADC0809自身沒有晶振電路,所以由單片機(jī)的ALE端或者外界提供。本設(shè)計中使用500kHz的外部時鐘信號,OUT1~OUT8管腳直接與單片機(jī)的I/O口相連。
根據(jù)A/D轉(zhuǎn)換芯片的工作時序要求和顯示要求編寫KEILC51控制程序,實現(xiàn)電壓表的測量功能。其軟件程序流程分別如圖2~4所示。
圖2 主程序流程
圖3 A/D轉(zhuǎn)換子程序流程
圖4 LED顯示子程序流程
2.1 A/D轉(zhuǎn)換子程序設(shè)計
ADC0809與單片機(jī)的接口所涉及的關(guān)鍵問題是完成A/D轉(zhuǎn)換后的數(shù)據(jù)應(yīng)該送給單片機(jī)及時處理[4-5]。那么,在送單片機(jī)處理之前怎樣確認(rèn)ADC0809模數(shù)轉(zhuǎn)換的完成,通常采用以下3種方法。
2.1.1 延時方法
當(dāng)時鐘頻率一定時,ADC0809的轉(zhuǎn)換時間是固定的,比如,本設(shè)計采用500kHz的時鐘頻率,ADC0809的轉(zhuǎn)換時間是128μs,因此在A/D轉(zhuǎn)換啟動后調(diào)用一個延時函數(shù)(當(dāng)然遠(yuǎn)大于128μs),這樣,確保A/D轉(zhuǎn)換已經(jīng)結(jié)束。
2.1.2 查詢方法
在程序中一直查詢EOC管腳電平的狀態(tài),一旦檢測到高電平表示轉(zhuǎn)換完成。
2.1.3 中斷方法
當(dāng)轉(zhuǎn)換完成EOC管腳向單片機(jī)發(fā)出中斷請求,在中斷服務(wù)子程序中進(jìn)行數(shù)據(jù)傳送。
本次設(shè)計中采用查詢方法確認(rèn)A/D轉(zhuǎn)換的完成,此外,按照ADC0809的時序操作是保證A/D轉(zhuǎn)換正確的前提,測量電壓分辨率為VREF/2N=5V/28≈0.0196V。其部分代碼如下:
2.2 LED顯示子程序設(shè)計
在Proteus軟件中,調(diào)節(jié)滑動變阻器RV1改變ADC0809輸入通道IN0的模擬電壓值,LED數(shù)碼管顯示數(shù)值隨之改變。例如,當(dāng)輸入模擬電壓為2.15V,虛擬電壓表如圖5所示,LED顯示如圖6所示。
由圖5、6可知,兩者的值基本上是一致的,誤差較小,測量精度高,符合設(shè)計要求。
圖5 虛擬電壓表
圖6 數(shù)字電壓表的仿真結(jié)果
使用亞龍YL-236的相關(guān)模塊及元件構(gòu)建數(shù)字電壓表,其中,ADC0809的D0~D7接單片機(jī)的P1口,IN0接電壓源的OUT端,CLK接時鐘源的500kHz時鐘信號,A、B、C、EOC、WR、RD作為采樣的控制聯(lián)絡(luò)信號線。LED數(shù)碼管的D0~D7、CS1、CS2、WR分別接單片機(jī)的P0口、P2.7、P2.6、P3.6,這里L(fēng)ED數(shù)碼管的動態(tài)顯示采用數(shù)據(jù)總線方式,結(jié)果如圖7所示。當(dāng)手動調(diào)節(jié)0~5V電壓源的模擬電壓輸入值時,LED數(shù)碼管的顯示值隨之改變。
圖7 數(shù)字電壓表的實驗結(jié)果
通過仿真與實驗得出:基于ADC0809的數(shù)字電壓表可以實現(xiàn)0~5V電壓值的測量,分辨率約為20mV,具有測量精度高、顯示直觀等優(yōu)點,因而在很多領(lǐng)域得到廣泛的應(yīng)用。
[1]陳飛,顧啟民,王偉.基于Proteus和Keil的項目教學(xué)法在單片機(jī)教學(xué)中的應(yīng)用[J].實驗科學(xué)與技術(shù),2013(10):27-29.
[2]高立新.基于Proteus軟件的單片機(jī)仿真實驗[J].常州信息職業(yè)技術(shù)學(xué)院學(xué)報,2011(3):59-60.
[3]朱曉玲.直流數(shù)字電壓表設(shè)計與Proteus應(yīng)用[J].通信電源技術(shù),2012(2):59-60.
[4]張玲麗.基于Proteus的LCD數(shù)字電壓表的設(shè)計與仿真[J].中國新通信,2014(22):65-66.
[5]金韋利,姜禮華.基于單片機(jī)的數(shù)字電壓表設(shè)計[J].自動化與儀器儀表,2015(11):246-247.
【責(zé)任編輯:任小平renxp90@163.com】
Design and implementation of digital voltmeter based on 51SCM
YAN Min
(The Information Electronic Department,Yangzhou Business Branch of Jiangsu Union Technical Institute, Yangzhou 225127,China)
In this paper,we take the AT89C51microcontroller as the control core,use ADC0809analog digital converter chip design digital voltage meter,with LED digital tube to display real-time measuring voltage. Through simulation and experiments,it is concluded that the digital voltmeter based on ADC0809has the advantages of high measurement accuracy and direct display,compared with the traditional analog voltage meter.
ADC0809;single-chip microcomputer;LED digital tube;Proteus
TM933.22
A
1008-0171(2016)06-0018-04
2016-03-10
嚴(yán)敏(1982-),女,江蘇揚(yáng)州人,江蘇聯(lián)合職業(yè)技術(shù)學(xué)院揚(yáng)州商務(wù)分院講師,碩士。