基于PC的數(shù)字電壓表設計
新型數(shù)字電壓表的整機設計
該新型數(shù)字電壓表測量電壓類型是直流,測量范圍是-5~+5V。整機電路包括:數(shù)據(jù)采集電路的單片機最小化設計、單片機與PC接口電路、單片機時鐘電路、復位電路等。下位機采用AT89S51芯片,A/D轉換采用AD678芯片。通過RS232串行口與PC進行通信,傳送所測量的直流電壓數(shù)據(jù)。整機系統(tǒng)電路如圖1所示。
數(shù)據(jù)采集電路的原理
在單片機數(shù)據(jù)采集電路的設計中,做到了電路設計的最小化,即沒用任何附加邏輯器件做接口電路,實現(xiàn)了單片機對AD678轉換芯片的操作。
AD678是一種高檔的、多功能的12位ADC,由于其內部自帶有采樣保持器、高精度參考電源、內部時鐘和三態(tài)緩沖數(shù)據(jù)輸出等部件,所以只需要很少的外部元件就可以構成完整的數(shù)據(jù)采集系統(tǒng),而且一次A/D轉換僅需要5ms。
在電路應用中,AD678采用同步工作方式,12位數(shù)字量輸出采用8位操作模式,即12位轉換數(shù)字量采用兩次讀取的方式,先讀取其高8位,再讀取其低4位。根據(jù)時序關系,在芯片選擇/CS=0時,轉換端/SC由高到低變化一次,即可啟動A/D轉換一次。再查詢轉換結束端/EOC,看轉換是否已經結束,若結束則使輸出使能/OE變低,輸出有效。12位數(shù)字量的讀取則要控制高字節(jié)有效端/HBE,先讀取高字節(jié),再讀取低字節(jié)。整個A/D操作大致如此,在實際開發(fā)應用中調整。
圖1 數(shù)字電壓表的電路圖
由于電路中采用AD678的雙極性輸入方式,輸入電壓范圍是-5~+5V,根據(jù)公式Vx=10(V)/4096*Dx,即可計算出所測電壓Vx值的大小。式中Dx為被測直流電壓轉換后的12位數(shù)字量值。
RS232接口電路的設計
AT89S51與PC的接口電路采用芯片Max232。Max232是德州儀器公司(TI)推出的一款兼容RS232標準的芯片。該器件包含2個驅動器、2個接收器和1個電壓發(fā)生器電路提供TIA/EIA-232-F電平。Max232芯片起電平轉換的功能,使單片機的TTL電平與PC的RS232 電平達到匹配。
串口通信的RS232接口采用9針串口DB9,串口傳輸數(shù)據(jù)只要有接收數(shù)據(jù)針腳和發(fā)送針腳就能實現(xiàn):同一個串口的接收腳和發(fā)送腳直接用線相連,兩個串口相連或一個串口和多個串口相連。在實驗中,用定時器T1作波特率發(fā)生器,其計數(shù)初值X按以下公式計算:
波特率= *(T1的溢出率)
=*
串行通信波特率設置為1200b/s,而SMOD=1,fosc=6MHz,計算得到計數(shù)初值X=0f3H。在編程中將其裝入TL1和TH1中即可。
為了便于觀察,當每次測量電壓采集數(shù)據(jù)時,單片機有端口輸出時,用發(fā)光二極管LED指示。
軟件編程
軟件程序主要包括:下位機數(shù)據(jù)采集程序、上位機可視化界面程序、單片機與PC串口通信程序。單片機采用C51語言編程,上位機的操作顯示界面采用VC++6.0進行可視化編程。在串口通信調試過程中,借助“串口調試助手”工具,有效利用這個工具為整個系統(tǒng)提高效率。
單片機編程
下位機單片機的數(shù)據(jù)采集通信主程序流程如圖2所示、中斷子程序如圖3所示、采集子程序如圖4所示。單片機的編程仿真調試借助WAVE2000仿真器,本系統(tǒng)有集成的ISP仿真調試環(huán)境。
圖2 單片機采集通信主程序
在采集程序中,單片機的編程操作要完全符合AD678的時序規(guī)范要求,在實際開發(fā)中,要不斷加以調試。最后將下位機調試成功而生成的.bin文件固化到AT89S51的Flash單元中。
圖3 中斷服務子程序 圖4 采集子程序
人機界面編程
打開VC++6.0,建立一個基于對話框的MFC應用程序,串口通信采用MSComm控件來實現(xiàn)。其他操作此處不贅述,編程實現(xiàn)一個良好的人機界面。運行VC++6.0編程實現(xiàn)的Windows程序,整個樣機功能得以實現(xiàn)。
功能結果
根據(jù)上面所述工作原理及實施方案,在實踐中很好地實現(xiàn)了整個樣機的功能,各項指標達到了預先的設計要求。電路工作穩(wěn)定,每次測量均伴有LED發(fā)光指示,可視化界面顯示也正常。
AD678轉換精度是12位,它的分辨率為1/4096。這為整機系統(tǒng)的高精度提供了保障。為了提高測量精度,運用了AD678自帶的校準電路,這樣使其A/D轉換精度更高。在實際測量中,整機測量精度達到了0.8%。
評論