基于51單片機(jī)的數(shù)字電壓表仿真設(shè)計
摘要:設(shè)計采用AT89C51單片機(jī)、A/D轉(zhuǎn)換器ADC0808和共陽極數(shù)碼管為主要硬件,分析了數(shù)字電壓表Proteus軟件仿真電路設(shè)計及編程方法。將單片機(jī)應(yīng)用于測量技術(shù)中,采用ADC0808將模擬信號轉(zhuǎn)化為數(shù)字信號,用AT89C51實現(xiàn)數(shù)據(jù)的處理,通過數(shù)碼管以掃描的方式完成顯示。設(shè)計的數(shù)字電壓表可以測量0~5 V的電壓值,AT89C51為8位單片機(jī),當(dāng)ADC0808的輸入電壓為5 V時,輸出數(shù)字量值為+4.99 V。本設(shè)計電路簡單、成本低、性能穩(wěn)定。
關(guān)鍵詞:數(shù)字電壓表;51單片機(jī);ADC0808;數(shù)碼管LED
0 引言
隨著電子科學(xué)技術(shù)的發(fā)展,電子測量成為廣大電子工作者必須掌握的手段,對測量的精度和功能的要求也越來越高,而電壓的測量甚為突出,因為電壓的測量最為普遍。數(shù)字電壓表是采用數(shù)字化測量技術(shù)設(shè)計的電壓表。數(shù)字電壓表與模擬電壓表相比,具有讀數(shù)直觀、準(zhǔn)確、顯示范圍寬、分辨力高、輸入阻抗大、集成度高、功耗小、抗干擾能力強(qiáng),可擴(kuò)展能力強(qiáng)等特點,因此在電壓測量、電壓校準(zhǔn)中有著廣泛的應(yīng)用。本文采用ADC0808對輸入模擬信號進(jìn)行轉(zhuǎn)換,控制核心AT89C51單片機(jī)對轉(zhuǎn)換的結(jié)果進(jìn)行運算和處理,最后驅(qū)動輸出裝置顯示數(shù)字電壓信號,通過Proteus仿真軟件實現(xiàn)接口電路設(shè)計,并進(jìn)行實時仿真。
Proteus軟件是一種電路分析和實物模擬仿真軟件。它運行于Windows操作系統(tǒng)上,可以進(jìn)行仿真、分析(SPICE)各種模擬器件和集成電路,是集單片機(jī)和SPICE分析于一身的仿真軟件,功能強(qiáng)大,具有系統(tǒng)資源豐富、硬件投入少、形象直觀等優(yōu)點,近年來受到廣大用戶的青睞。
1 系統(tǒng)概述
1.1 設(shè)計任務(wù)
利用單片機(jī)AT89C51與ADC0808設(shè)計一個數(shù)字電壓表,將模擬信號0~5 V之間的電壓值轉(zhuǎn)換成數(shù)字量信號,以兩位數(shù)碼管顯示,并通過虛擬電壓表觀察ADC0808模擬量輸入信號的電壓值,LED數(shù)碼管實時顯示相應(yīng)的數(shù)值量。
1.2 總體方案
數(shù)字電壓表電路組成框圖如圖1所示。
本設(shè)計中需要用到的電路有電源電路、模/數(shù)轉(zhuǎn)換電路、單片機(jī)控制電路、顯示電路等。設(shè)計中需要用到的芯片有AT89C51單片機(jī)、ADC-0808、74LS74、LED數(shù)碼管等。
2 數(shù)字電壓表的Proteus軟件仿真電路設(shè)計
待測電壓輸入信號在ADC0808芯片承受的最大工作電壓范圍內(nèi),經(jīng)過模/數(shù)轉(zhuǎn)換電路實現(xiàn)A/D轉(zhuǎn)換,通過單片機(jī)控制電路進(jìn)行程序數(shù)據(jù)處理,然后通過七段譯碼/驅(qū)動顯示電路實現(xiàn)數(shù)碼管顯示輸入電壓。
硬件電路原理圖如圖2所示。
[!--empirenews.page--]
2.1 AT89C51單片機(jī)和數(shù)碼管顯示電路的接口設(shè)計
利用單片機(jī)AT89C51與ADC0808設(shè)計一個數(shù)字電壓表,將模擬信號0~5 V之間的直流電壓值轉(zhuǎn)換成數(shù)字量信號0~FF,以兩位數(shù)碼管顯示。Proteus軟件啟動仿真,當(dāng)前輸入電壓為2.5 V,轉(zhuǎn)換成數(shù)字值為7FH,用鼠標(biāo)指針調(diào)節(jié)電位器RV1,可改變輸入模/數(shù)轉(zhuǎn)換器ADC0808的電壓,并通過虛擬電壓表觀察ADC0808模擬量輸入信號的電壓值,LED數(shù)碼管實時顯示相應(yīng)的數(shù)值量。
在Proteus軟件中設(shè)置AT89C51單片機(jī)的晶振頻率為12 MHz。本電路EA接高電平,沒有擴(kuò)展片外ROM。
2.2 A/D轉(zhuǎn)換電路的接口設(shè)計
A/D轉(zhuǎn)換器采用集成電路ADC0808。ADC0808具有8路模擬量輸入信號IN0~I(xiàn)N7(1~5腳、26~28腳),地址線C、B、A(23~25腳)決定哪一路模擬輸入信號進(jìn)行A/D轉(zhuǎn)換,本電路將地址線C、B、A均接地,即選擇0號通道輸入模擬量電壓信號。22腳ALE為地址鎖存允許控制信號,當(dāng)輸入為高電平時,對地址信號進(jìn)行鎖存。6腳START為啟動控制信號,當(dāng)輸入為高電平時,A/D轉(zhuǎn)換開始。本電路將ALE腳與START腳接到一起,共同由單片機(jī)的P2.0腳和WR腳通過或非門控制。7腳EOC為A/D轉(zhuǎn)換結(jié)束信號,當(dāng)A/D轉(zhuǎn)換結(jié)束時,7腳輸出一個正脈沖,此信號可作為A/D轉(zhuǎn)換是否結(jié)束的檢測信號或向CPU申請中斷的信號,本電路通過一個非門連接到單片機(jī)的P3.2腳。9腳OE為A/D轉(zhuǎn)換數(shù)據(jù)輸出允許控制信號,當(dāng)OE腳為高電平時,允許讀取A/D轉(zhuǎn)換的數(shù)字量。該OE腳由單片機(jī)的P2.0腳和RD腳通過或非門控制。10腳CLOCK為ADC0808的實時時鐘輸入端,利用單片機(jī)30引腳ALE的六分頻晶振頻率得到時鐘信號。數(shù)字量輸出端8個接到單片機(jī)的P0口。
3 數(shù)字電壓表的軟件程序設(shè)計
系統(tǒng)上電狀態(tài),初始化ADC0808的啟動地址,數(shù)碼管顯示關(guān)閉,開始啟動A/D轉(zhuǎn)換。等待啟動結(jié)束后,將ADC0808的0號通道模擬量輸入信號轉(zhuǎn)換輸出的數(shù)字量結(jié)果通過數(shù)碼管動態(tài)顯示的方式顯示到三位數(shù)碼管上。
根據(jù)設(shè)計要求結(jié)合硬件電路,在輸入模擬信號時采用電阻分壓,最終的采樣輸入電壓只有實際輸入電壓的十分之一,所以在編寫程序中要編寫一段數(shù)據(jù)調(diào)整程序,其中還應(yīng)注意硬件顯示電路采用了動態(tài)掃描顯示,在動態(tài)掃描顯示方式中,動態(tài)掃描的頻率有一定的要求,頻率太低,數(shù)碼管LED將會出現(xiàn)閃爍現(xiàn)象,通常數(shù)碼管點亮?xí)r間間隔一般均取5ms左右為宜,這就要求在編寫程序時,使其點亮并保持一定的時間??偨Y(jié)以上分析,程序流程圖如圖3,圖4所示。
[!--empirenews.page--]
本電路的程序設(shè)計主要包括A/D轉(zhuǎn)換部分、LED顯示、初始化和定時器中斷部分。部分程序代碼如下所示。
5 結(jié)束語
本文的數(shù)字電壓表可以測量0~5 V的電壓值,AT89C51為8位單片機(jī),當(dāng)ADC0808的輸入電壓為5 V時,輸出數(shù)字量值為+4.99 V。如果要獲得更高的精度,需采用I2位、I3位等高于8位的A/D轉(zhuǎn)換器。數(shù)字電壓表的顯示部分可以增加BCD碼調(diào)整程序來通過三位數(shù)碼管顯示其數(shù)據(jù)。本設(shè)計的顯示偏差,可以通過校正0808的基準(zhǔn)參考電壓來解決,或用軟件編程來校正其測量值。本系統(tǒng)在設(shè)計過程中通過Proteus仿真軟件的調(diào)試,具有電路簡單、成本低、精度高、速度快和性能穩(wěn)定等特點。