<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > 基于PC的數字電壓表設計

基于PC的數字電壓表設計

——
作者:王守華 李 智 時(shí)間:2006-09-07 來(lái)源:EDN China 收藏
 數字電壓表的設計和開(kāi)發(fā),已經(jīng)有多種類(lèi)型和款式。傳統的數字電壓表各有特點(diǎn),它們適合在現場(chǎng)做手工,要完成遠程并要對數據做進(jìn)一步分析處理,傳統數字電壓表是無(wú)法完成的。然而基于PC通信的數字電壓表,既可以完成測量數據的傳遞,又可借助PC,做測量數據的處理。所以這種類(lèi)型的數字電壓表無(wú)論在功能和實(shí)際應用上,都具有傳統數字電壓表無(wú)法比擬的特點(diǎn),這使得它的開(kāi)發(fā)和應用具有良好的前景。

新型數字電壓表的整機設計

該新型數字電壓表測量電壓類(lèi)型是直流,測量范圍是-5~+5V。整機電路包括:數據采集電路的單片機最小化設計、單片機與PC接口電路、單片機時(shí)鐘電路、復位電路等。下位機采用AT89S51芯片,A/D轉換采用AD678芯片。通過(guò)RS232串行口與PC進(jìn)行通信,傳送所測量的直流電壓數據。整機系統電路如圖1所示。

數據采集電路的原理

在單片機數據采集電路的設計中,做到了電路設計的最小化,即沒(méi)用任何附加邏輯器件做接口電路,實(shí)現了單片機對AD678轉換芯片的操作。

AD678是一種高檔的、多功能的12位ADC,由于其內部自帶有采樣保持器、高精度參考電源、內部時(shí)鐘和三態(tài)緩沖數據輸出等部件,所以只需要很少的外部元件就可以構成完整的數據采集系統,而且一次A/D轉換僅需要5ms。

在電路應用中,AD678采用同步工作方式,12位數字量輸出采用8位操作模式,即12位轉換數字量采用兩次讀取的方式,先讀取其高8位,再讀取其低4位。根據時(shí)序關(guān)系,在芯片選擇/CS=0時(shí),轉換端/SC由高到低變化一次,即可啟動(dòng)A/D轉換一次。再查詢(xún)轉換結束端/EOC,看轉換是否已經(jīng)結束,若結束則使輸出使能/OE變低,輸出有效。12位數字量的讀取則要控制高字節有效端/HBE,先讀取高字節,再讀取低字節。整個(gè)A/D操作大致如此,在實(shí)際開(kāi)發(fā)應用中調整。

     數字電壓表的電路圖
                                          圖1 數字電壓表的電路圖

由于電路中采用AD678的雙極性輸入方式,輸入電壓范圍是-5~+5V,根據公式Vx=10(V)/4096*Dx,即可計算出所測電壓Vx值的大小。式中Dx為被測直流電壓轉換后的12位數字量值。

RS232接口電路的設計

AT89S51與PC的接口電路采用芯片Max232。Max232是德州儀器公司(TI)推出的一款兼容RS232標準的芯片。該器件包含2個(gè)驅動(dòng)器、2個(gè)接收器和1個(gè)電壓發(fā)生器電路提供TIA/EIA-232-F電平。Max232芯片起電平轉換的功能,使單片機的TTL電平與PC的RS232 電平達到匹配。

串口通信的RS232接口采用9針串口DB9,串口傳輸數據只要有接收數據針腳和發(fā)送針腳就能實(shí)現:同一個(gè)串口的接收腳和發(fā)送腳直接用線(xiàn)相連,兩個(gè)串口相連或一個(gè)串口和多個(gè)串口相連。在實(shí)驗中,用定時(shí)器T1作波特率發(fā)生器,其計數初值X按以下公式計算:

    波特率= *(T1的溢出率)


              =*


串行通信波特率設置為1200b/s,而SMOD=1,fosc=6MHz,計算得到計數初值X=0f3H。在編程中將其裝入TL1和TH1中即可。

為了便于觀(guān)察,當每次測量電壓采集數據時(shí),單片機有端口輸出時(shí),用發(fā)光二極管LED指示。

軟件編程

軟件程序主要包括:下位機數據采集程序、上位機可視化界面程序、單片機與PC串口通信程序。單片機采用C51語(yǔ)言編程,上位機的操作顯示界面采用VC++6.0進(jìn)行可視化編程。在串口通信調試過(guò)程中,借助“串口調試助手”工具,有效利用這個(gè)工具為整個(gè)系統提高效率。

單片機編程

下位機單片機的數據采集通信主程序流程如圖2所示、中斷子程序如圖3所示、采集子程序如圖4所示。單片機的編程仿真調試借助WAVE2000仿真器,本系統有集成的ISP仿真調試環(huán)境。

      單片機采集通信主程序
                                     圖2 單片機采集通信主程序

在采集程序中,單片機的編程操作要完全符合AD678的時(shí)序規范要求,在實(shí)際開(kāi)發(fā)中,要不斷加以調試。最后將下位機調試成功而生成的.bin文件固化到AT89S51的Flash單元中。

                         中斷服務(wù)子程序 采集子程序
                             圖3 中斷服務(wù)子程序             圖4 采集子程序

人機界面編程

打開(kāi)VC++6.0,建立一個(gè)基于對話(huà)框的MFC應用程序,串口通信采用MSComm控件來(lái)實(shí)現。其他操作此處不贅述,編程實(shí)現一個(gè)良好的人機界面。運行VC++6.0編程實(shí)現的Windows程序,整個(gè)樣機功能得以實(shí)現。

功能結果

根據上面所述工作原理及實(shí)施方案,在實(shí)踐中很好地實(shí)現了整個(gè)樣機的功能,各項指標達到了預先的設計要求。電路工作穩定,每次測量均伴有LED發(fā)光指示,可視化界面顯示也正常。

AD678轉換精度是12位,它的分辨率為1/4096。這為整機系統的高精度提供了保障。為了提高測量精度,運用了AD678自帶的校準電路,這樣使其A/D轉換精度更高。在實(shí)際測量中,整機測量精度達到了0.8%。



關(guān)鍵詞: 測量 測試

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>