基于89c51單片機(jī)的數(shù)字電壓表設(shè)計(jì)
摘要:在現(xiàn)代檢測(cè)技術(shù)中,常需用高精度數(shù)字電壓表進(jìn)行現(xiàn)場(chǎng)檢測(cè),將檢測(cè)到的數(shù)據(jù)送入微計(jì)算機(jī)系統(tǒng),完成計(jì)算、存儲(chǔ)、控制和顯示等功能。本文中數(shù)字電壓表的控制系統(tǒng)采用AT89c51單片機(jī),A/D轉(zhuǎn)換器采用ADC0809為主要硬件,實(shí)現(xiàn)數(shù)字電壓表的硬件電路與軟件設(shè)計(jì)。該系統(tǒng)的數(shù)字電壓表電路簡(jiǎn)單,所用的元件較少,成本低,調(diào)節(jié)工作可實(shí)現(xiàn)自動(dòng)化。還可以方便地進(jìn)行8路A/D轉(zhuǎn)換量的測(cè)量,遠(yuǎn)程測(cè)量結(jié)果傳送等功能。數(shù)字電壓表可以測(cè)量o~5V的8路輸入電壓值,并在四位LED數(shù)碼管上輪流顯示或單路選擇顯示。
關(guān)鍵詞:?jiǎn)纹瑱C(jī);數(shù)字電壓表;A/D轉(zhuǎn)換;模擬信號(hào)
0引言
數(shù)字電壓表是諸多數(shù)字化儀表的核心與基礎(chǔ),電壓表的數(shù)字化是將連續(xù)的模擬量如直流電壓轉(zhuǎn)換成不連續(xù)的離散的數(shù)字形式并加以顯示,這有別于傳統(tǒng)的以指針加刻度盤(pán)進(jìn)行讀數(shù)的方法,避免了讀數(shù)的視差和視覺(jué)疲勞。目前數(shù)字萬(wàn)用表的內(nèi)部核心部件是A/D轉(zhuǎn)換器,轉(zhuǎn)換器的精度很大程度上影響著數(shù)字萬(wàn)用表的準(zhǔn)確度,本文AID轉(zhuǎn)換器采用ADC0809對(duì)輸入模擬信號(hào)進(jìn)行轉(zhuǎn)換,控制核心AT89C51N對(duì)轉(zhuǎn)換的結(jié)果進(jìn)行運(yùn)算和處理,最后驅(qū)動(dòng)輸出裝置顯示數(shù)字電壓信號(hào)。
1數(shù)字電壓表硬件電路設(shè)計(jì)
硬件電路設(shè)計(jì)主要包括:89C51單片機(jī)系統(tǒng),~D轉(zhuǎn)換電路,顯示電路。測(cè)量最大電壓為5V,顯示最大值為5.00V.圖l是數(shù)字電壓表硬件電路原理圖。
1.1 89C51單片機(jī)系統(tǒng)和顯示電路
由于單片機(jī)體積小、重量輕、價(jià)格便宜,所以本系統(tǒng)采用89C51單片機(jī),其原理圖如圖1所示。
89C51內(nèi)部有4KB的EEPROM,128字節(jié)的RAM,所以一般都要根據(jù)系統(tǒng)所需存儲(chǔ)容量的大小來(lái)擴(kuò)展,ROM和RAM.本電路/EA接高電平,沒(méi)有擴(kuò)展片外ROM和RAM.
89C51的P1、P3.0~P3.3端口作為四位LED數(shù)碼管顯示控制。P3.5端口用作單路顯示/循環(huán)顯示轉(zhuǎn)換按鈕,P3.6端口用作單路顯示時(shí)選擇通道。P0端口作0809的A/D轉(zhuǎn)換數(shù)據(jù)讀入用,P2端口用作0809的A/D轉(zhuǎn)換控制。
1.2 A/D轉(zhuǎn)換電路
圖1數(shù)字電壓表電路原理圖
A/D轉(zhuǎn)換由集成電路0809完成。0809具有8路模擬信號(hào)輸入端口,地址線(23~25腳)可決定對(duì)哪一路模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換。22腳為地址鎖存控制,當(dāng)輸入為高電平時(shí),對(duì)地址信號(hào)進(jìn)行鎖存。6腳為測(cè)試控制,當(dāng)輸入一個(gè)21xs寬高電平脈沖時(shí),就開(kāi)始A/D轉(zhuǎn)換。7腳為A/D轉(zhuǎn)換結(jié)束標(biāo)志,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),7腳輸出高電平。9腳為A/D轉(zhuǎn)換數(shù)據(jù)輸出允許控制,當(dāng)OE腳為高電平時(shí),A/D轉(zhuǎn)換數(shù)據(jù)從該端口輸出。10腳為0809的時(shí)鐘輸入端,利用單片機(jī)30引腳的六分頻晶振頻率再通過(guò)14024二分頻得到1MHz時(shí)鐘。
2數(shù)字電壓表系統(tǒng)的軟件設(shè)計(jì)
主程序和A/D轉(zhuǎn)換測(cè)量程序流程圖如圖2所示。
2.1初始化程序
系統(tǒng)上電,初始化程序?qū)?0H~77H內(nèi)存單元清0,P2口置0.系統(tǒng)默認(rèn)為循環(huán)顯示8個(gè)通道的電壓值,當(dāng)進(jìn)行一次測(cè)量后,將顯示每一通道的A/D轉(zhuǎn)換值,每個(gè)通道顯示時(shí)間為1s.70H~77H內(nèi)存單元存放采樣值,78H~7BH內(nèi)存單元存放顯示數(shù)據(jù),依次為個(gè)位、十位、百位、通道標(biāo)志位。
2.2 A/D轉(zhuǎn)換子程序
A/D轉(zhuǎn)換子程序用來(lái)控制對(duì)0809/k路模擬輸入電壓的A/D轉(zhuǎn)換,并將對(duì)應(yīng)的數(shù)值存入70H~77H內(nèi)存單元。
2.3示子程序
顯示子程序采用動(dòng)態(tài)掃描實(shí)現(xiàn)四位數(shù)碼管的數(shù)值顯示。測(cè)量數(shù)據(jù)在顯示時(shí)需轉(zhuǎn)換成BCD碼放在78H~7BH內(nèi)存單元中,其中7BH存放通道標(biāo)志數(shù)。
R3作為8路循環(huán)控制,R0用作顯示數(shù)據(jù)指針。
3結(jié)論
數(shù)字電壓表可以測(cè)量0~5的8路電壓值。89C51為8位處理器,當(dāng)0809輸入電壓為5.00V時(shí),輸出數(shù)據(jù)為255(FFH)。因此最大分辯率為O.0196V(5/255)。如要獲得更高的精度要求,應(yīng)采用12位、13位的A/D轉(zhuǎn)換器。數(shù)字電壓顯示可能有偏差,可以通過(guò)校正0809的基準(zhǔn)電壓來(lái)解決,或者用軟件編程來(lái)校正測(cè)量值。
本系統(tǒng)用單片機(jī)89C51構(gòu)成數(shù)字電壓表控制系統(tǒng),具有精度高、速度快、性能穩(wěn)定和電路簡(jiǎn)單且工作可靠等特點(diǎn),具有很好的使用價(jià)值。