【摘要】數(shù)字電壓表可將連續(xù)的直流模擬電壓轉換為數(shù)字量并加以顯示。本文介紹了基于YL-236亞龍單片機實訓裝置來制作數(shù)字電壓表的實現(xiàn)方法,可完成計算、存儲、控制和顯示等功能。本設計以AT89C51單片機為核心,采用ADC0809芯片進行A/D轉換,實現(xiàn)了數(shù)字電壓表的功能。
【關鍵詞】AT89C51單片機;數(shù)字電壓表;A/D轉換
一、引言
數(shù)字電壓表采用數(shù)字化測量技術,可以將模擬量轉換成數(shù)字量并加以顯示。由于其具有測量精度高、抗干擾能力強等優(yōu)點,被廣泛應用于工業(yè)自動化儀表領域[1]。下面本文就以亞龍YL-236單片機實訓裝置為平臺,介紹數(shù)字電壓表的實現(xiàn)方法。
二、總體方案
本設計選擇AT89C51單片機作為核心控制器件,采用ADC0809實現(xiàn)A/D轉換,用3位LED數(shù)碼管數(shù)字來顯示采集電壓(范圍0~5V)。設計框圖如圖1所示[2]。
圖1 系統(tǒng)設計方案
三、硬件部分
1.轉換芯片ADC0809
ADC0809具有8路模擬輸入端口,8路模擬開關分時選通8個模擬通道,轉換后的8位數(shù)字量鎖存到三態(tài)輸出鎖存器中,在輸出允許的情況下,可以從8條數(shù)據(jù)線D7~D0上讀出,并可直接與單片機接口相連[3]。ADC0809其引腳排列和具體功能可參考ADC0809說明文件,這里不再詳述。
2.ADC0809與單片機的硬件連接
單片機與ADC0809接口電路如圖2所示。74HC02可實現(xiàn)4路2輸入或非門功能。連接時,將主機模塊中單片機的P0.0~P0.7接到ADC0809的數(shù)據(jù)輸出端D0~D7,用來接收ADC0809轉換輸出的數(shù)據(jù);將單片機的P2.5、P3.6、P3.7接到ADC0809的CS、WR、RD端,作為A/D采樣的控制聯(lián)絡線;將ADC0809的A、B、C接到ADC0809的D0、D1、D2口,通過P0的控制來選擇ADC的采樣通道。
圖2 ADC0809接口電路
3.數(shù)字電壓表硬件模塊接線
用YL-236實訓裝置實現(xiàn)本任務要求的硬件模塊接線如圖3所示。該電路由主機模塊(MCU01)、顯示模塊(MCU04)和ADC/DAC模塊(MCU07)組成。將時鐘源1MHZ接到ADC電路的CLK口,由模擬電壓源提供0~5V輸入電壓。
地址鎖存允許信號ALE由P3.6控制通道地址選擇,以WR作寫選通信號。我們將ALE信號與START信號接在一起,這樣使得AD0809在鎖存通道地址的同時,也啟動了A/D轉換。
將主機模塊中單片機的P0口作為數(shù)碼管顯示的段碼使用,接到數(shù)碼管的a~dp段端,將單片機的P3.6、P2.6、P2.7分別接到數(shù)碼管的WR、CS2、CS1端,對數(shù)碼管進行動態(tài)掃描顯示。
圖3 數(shù)字電壓表硬件模塊接線圖
四、軟件部分
1.AD轉換
圖4為利用ADC0809進行A/D轉換的程序流程圖。
圖4 A/D轉換程序流程圖
A/D轉換后的數(shù)據(jù)應傳給單片機進行處理。數(shù)據(jù)傳送之前必須確認A/D轉換已經(jīng)完成。常用的有以下幾種方法:
(1)定時傳送方式;
(2)查詢法;
(3)中斷控制法。
不管采用哪種方式,只要一旦確定轉換完成,即可通過指令進行數(shù)據(jù)傳送[3]。
啟動信號START啟動后開始模數(shù)轉換。對于ADC0809來說,當時鐘頻率一定時,其A/D轉換時間是固定的(微秒級)。因此,我們可以設計一個延時函數(shù)delay(),等待一段時間(遠大于A/D轉換的時間),延時時間到時轉換肯定已經(jīng)完成了,之后就可以進行數(shù)據(jù)傳送了。
參考流程圖,我們可以編寫對模擬通道0輸入的模擬電壓進行A/D轉換的C語言程序,關鍵語句如下:
/***********端口定義**************/
sbit ADCS=P2^5
sbit ADWR=P3^6
sbit ADRD=P3^7
/********AD轉換子函數(shù)*************/
void ad(void)//讀出AD輸出的值
{
ADCS=0;//選擇通道
delay(10);//延時10ms等待轉換完成
P0=255;//將P0置為高電平,準備讀取數(shù)據(jù)
vol=ADCS;//將轉換結果存放到變量vol中
}
2.主函數(shù)流程圖
主函數(shù)流程圖如圖5所示。
圖5 數(shù)字電壓表程序流程圖
編程時應注意,變量vol單位為毫伏。因為ADC0809為8位模數(shù)轉換器,輸入模擬電壓最大值為5V,即5000mV,所以分辨率為5000mV/28,因此程序中測量的電壓值為采樣AD值乘以5000mV/255,再將所得的數(shù)依次通過數(shù)碼管顯示。完成后可改變輸入直流電壓值,觀察輸入電壓的變化情況。
五、總結
本文詳細討論了數(shù)字電壓表系統(tǒng)的設計,重點介紹了以YL-236亞龍單片機實訓裝置為平臺的硬件連接和軟件設計的方案,系統(tǒng)具有轉換速度快、精度高、性能穩(wěn)定等優(yōu)點,且電路簡單,工作可靠,具有很好的實用價值。
參考文獻
[1]宋鳳娟,孫軍,李國忠.基于89C51單片機的數(shù)字電壓表設計[J].制造業(yè)自動化,2007(2):92-93.
[2]趙靜,劉少聰,丁浩,王莉莎.基于單片機的數(shù)字電壓表設計[J].數(shù)字技術與應用,2011:121-125.
[3]楊增汪,陳斯,戴新宇.一種量程自動轉換高精度數(shù)字電壓表的設計[J].儀器儀表裝置,2011(11):12-14.