陳龍燕
(泉州理工職業(yè)學院,福建 泉州 362000)
隨著計算機技術的迅猛發(fā)展及其在電子工業(yè)測量技術與儀器上的廣泛應用,測試理論、測試方法和儀器結構的日益更新沖破了傳統(tǒng)儀器的概念,促使電子測量儀器的功能和作用發(fā)生了質的變化。在這樣的時代背景下,20世紀 80年代 National Instrument Company(簡稱NI公司)提出了虛擬儀器的概念。我國于20世紀末開始興起對虛擬儀器的開發(fā)和應用,如今已廣泛應用于航空、航天、通信、醫(yī)療、電力、石油勘探和鐵路等行業(yè)[1]。
本系統(tǒng)主要研究實現(xiàn)了基于USB接口的上位機以圖形化編程語言LabVIEW為應用程序開發(fā)平臺與下位機89C51單片機程序之間的通信。
首先,本設計采用美國NI公司開發(fā)的先進的虛擬儀器技術LabVIEW作為上位機的開發(fā)平臺,其功能強大且靈活,程序的編寫過程直觀明了,用戶界面人性化。利用它可以方便地建立自己的虛擬儀器,與其他軟件相比有許多優(yōu)越之處。目前,LabVIEW代表著當今儀器發(fā)展的最新趨勢,是促進測控技術發(fā)展的一個重要開發(fā)工具。
第二,本設計通過在LabVIEW中調用動態(tài)鏈接庫DLL,實現(xiàn)了基于USB接口的PC與單片機之間的通信。完成了LabVIEW中暫時無法實現(xiàn)的硬件通信工作,擴展了虛擬儀器的功能,進一步驗證了DLL在虛擬儀器開發(fā)中的重要性。
第三,采用通用串行總線USB接口,克服了串口通信傳輸速度慢等缺點。
第四,現(xiàn)有的NI公司生產(chǎn)的數(shù)據(jù)采集卡,成本高,插拔不方便,不易擴展。為了解決這個問題,下位機采用C51單片機技術,在實際工程中,可以很方便地通過它控制硬件電路部分的功能。利用USB技術和單片機相結合,可以擴展應用于數(shù)據(jù)的采集等用途。由于數(shù)據(jù)采集卡價格昂貴,因而大大減少了開發(fā)成本。
最后,建立起上位機與下位機的通信機制之后,應用是十分廣泛的??梢苑奖愕馗鶕?jù)實際需要,利用它們之間的通信實現(xiàn)各種操作。
下位機采用51單片機程序,上位機采用LabVIEW開發(fā)環(huán)境,實現(xiàn)了基于USB接口的LabVIEW與單片機的數(shù)據(jù)通信系統(tǒng)。系統(tǒng)界面如圖1所示。
圖1 基于LabVIEW與C51的USB通信系統(tǒng)運行界面
(1)打開設備
在LabVIEW界面上有兩個指示燈和一個檢測設備是否連接成功的按鈕,按下按鈕,如果設備連接成功第一個燈亮,反之,第二個燈亮。
(2)獲取設備信息
在LabVIEW界面上分別有獲取設備名和設備號的按鈕,按下按鈕后就可以在相應的輸出框中得到設備號和設備名。
(3)顯示部分
LabVIEW界面上有8個與電路板上的數(shù)碼管對應的VI、數(shù)碼管位選擇控件和輸入數(shù)據(jù)控件等。當打開硬件設備時,運行LabVIEW程序,在LabVIEW界面上的控件輸入數(shù)字(1~9)、字母 A~Z/a~z、“=”、“.”或空格,則在電路板上的對應數(shù)碼管也能顯示出一樣的數(shù)據(jù)。即LabVIEW能把數(shù)據(jù)通過USB接口傳到硬件電路的單片機上,并在電路板上的數(shù)碼管上顯示出來。
(4)取反部分
在取反輸入框中輸入數(shù)據(jù),按下開始取反按鈕,此時,LabVIEW中的數(shù)據(jù)將通過USB線傳入到下位機單片機中,單片機接收到數(shù)據(jù)后取反,并把數(shù)據(jù)通過USB線上傳回上位機的LabVIEW界面。如果數(shù)據(jù)下傳成功,那么將出現(xiàn)一個“數(shù)據(jù)下傳成功”的提示框,經(jīng)過單片機處理后上傳到PC;如果上傳成功,也將出現(xiàn)一個“數(shù)據(jù)上傳成功”的提示框,最后在輸入框中返回的數(shù)據(jù)是取反后的數(shù)據(jù)。此功能表明了數(shù)據(jù)可以順利通過USB線下傳、上傳,從而實現(xiàn)了數(shù)據(jù)的通信功能。
(5)單片機控制電路演示部分
電路板上有24個鍵盤,如果把電路板上的P2的第5腳和第6腳之間插上短路子,那么按下任意一個按鍵,數(shù)碼管上就會顯示出鍵盤的按鍵值,先左移原顯示,再顯示按鍵值。
本系統(tǒng)的總體結構流程圖如圖2所示。
圖2 系統(tǒng)總體結構流程圖
從圖2可知,系統(tǒng)結構從上到下依次為:計算機、USB線、USB接口芯片 CH372、單片機、CH451外圍芯片、鍵盤和數(shù)碼管。
CH372的UD+、UD-兩個引腳分別與 USB的數(shù)據(jù)信號線D+、D-引腳連接進行數(shù)據(jù)通信。CH372芯片在本地端提供了通用的被動并行接口,包括:8位雙向數(shù)據(jù)總線D7~D0、讀選通輸入引腳 RD#、寫選通輸入引腳WR#、片選輸入引腳 CS#、中斷輸出引腳 INT#以及地址輸入引腳A0。通過被動并行接口D[7..0],CH372芯片可以很方便地掛接到單片機的系統(tǒng)總線上;CH372芯片的RD#和WR#可以分別連接到單片機的讀選通輸出引腳和寫選通輸出引腳;INT#輸出的中斷請求是低電平有效,連接到單片機的中斷輸入引腳,單片機通過中斷方式獲知中斷請求[2]。
CH451具有硬件實現(xiàn)的高速4線串行接口,包括4個信號線:串行數(shù)據(jù)輸入線DIN、串行數(shù)據(jù)時鐘線DCLK、串行數(shù)據(jù)加載線LOAD和串行數(shù)據(jù)輸出線DOUT。其中,DIN、DCLK、LOAD是帶上拉的輸入信號線,默認是高電平;DOUT在未啟用鍵盤掃描功能時作為串行數(shù)據(jù)輸出線,在啟用鍵盤掃描功能后作為鍵盤中斷和數(shù)據(jù)輸出線,默認是高電平。
CH451可以動態(tài)驅動8個共陰數(shù)碼管,所有數(shù)碼管的相同段引腳(段A~段G以及小數(shù)點)并聯(lián)后連接CH451的段驅動引腳SEG0~SEG7,各數(shù)碼管的陰極分別由CH451的DIG0~DIG7引腳進行驅動。同時,CH451還具有鍵盤掃描功能,所以它的 SEG[7..0]和 DIG[7..0]引腳可以分別與鍵盤的 SEG[7..0]和 DIG[7..0]相連,來控制鍵盤的功能[3]。
下位機要與上位機中的動態(tài)鏈接庫建立通信機制,以接收和發(fā)送數(shù)據(jù)包。首先二者之間必須先約定好數(shù)據(jù)傳輸?shù)拿詈蛥f(xié)議,這與SOCKET通信一樣。因此在下位機的單片機中必須先定義一個與上位機通信的命令包結構COMMAND_PACKET。當單片機上電后,先對各個芯片進行初始化,然后啟動CH451的顯示驅動和鍵盤掃描,如果P2的第5腳和第6腳之間插上短路接子,則由單片機控制,否則由PC通過USB控制演示。
下位機單片機主程序的流程圖如圖3所示。
圖3 單片機主程序流程圖
LabVIEW本身包含的一些接口設備的驅動程序都是針對NI公司自己生產(chǎn)的接口板,對于用戶自行設計的硬件設備則不能直接與LabVIEW進行通信[4]。以下就是針對非NI公司提供的USB設備,利用LabVIEW的現(xiàn)有資源來設計一種實現(xiàn)USB與LabVIEW通信的方法。
首先,在前面板創(chuàng)建一個類型與下位機結構體類似的數(shù)組,用來向下位機傳遞數(shù)據(jù)的輸入框,在輸入框中輸入的命令必須與下位機中定義的命令一致。
LabVIEW中的程序主要包括打開硬件設備模塊、獲取設備信息模塊、數(shù)碼管顯示模塊和取反模塊等。
4.2.1 打開硬件設備模塊
作為一個開放式開發(fā)平臺,LabVIEW提供了DLL接口。用戶在LabVIEW平臺上能調用其他軟件平臺編譯的模塊,即可以通過調用動態(tài)鏈接庫DLL中的CH375OpenDevice函數(shù),打開硬件設備。LabVIEW對動態(tài)鏈接庫DLL的調用可以概括為以下3個步驟。
(1)點擊 LabVIEW 功能模板中“Advanced”子模板里的“調用庫函數(shù)(Call Library Function)”節(jié)點,放入 DLL調用節(jié)點到框圖程序中。
(2)雙擊該節(jié)點進入?yún)?shù)配置對話框。包括DLL的選擇、DLL庫函數(shù)選擇以及函數(shù)的輸入、輸出參數(shù)設置。
(3)點擊參數(shù)配置對話框的“OK”按鈕,在程序框圖中將實際參數(shù)連接到DLL調用節(jié)點的輸入輸出端口上[11]。
調用 CH375OpenDevice函數(shù)時,Call Library Function結點對話框如圖4所示。
系統(tǒng)具體操作中,是當按下“連接設備”按鍵時,程序才開始運行,所以,引入了case structure結構。當按鍵按下,此時選擇器端子的值為真,則開始執(zhí)行結構中true部分的程序;當無按鍵按下時,此時選擇器端子的值為假,則開始執(zhí)行case structure結構中false部分的程序,此程序中false部分為空操作。
圖4 Call Library Function節(jié)點對話框
為了方便操作人員識別,特設置了兩個LED指示燈,如果設備打開成功,則第一個燈亮;否則,第二個燈亮。當打開設備成功時,CH375OpenDevice函數(shù)的返回值不等于-1,此時包含指示燈的case structure的選擇器端子的值為真,給相應的LED燈連接上true constant或false constant;當打開設備失敗時,LED指示燈連接情況與打開成功時的相反。其部分源代碼如圖5所示。
圖5 打開設備模塊的部分程序代碼
4.2.2 獲取設備信息模塊
獲取設備信息模塊也是通過按鍵來控制的,程序中也引用case structure來實現(xiàn),程序如圖6所示。
圖6 獲取設備相關信息的部分程序代碼
4.2.3 數(shù)碼管顯示模塊
數(shù)碼管顯示模塊設計原理如下。
(1)因在 LabVIEW中沒有數(shù)碼管控件,所以必須用LabVIEW語言自己編寫數(shù)碼管子VI。方法是:在前面板中點擊右鍵,從All controls下的Boolean中取出7個square LED和1個Round LED分別作為數(shù)碼管的SEG[0..7]。再后面板中用case structure把要亮的LED與true constant連接,變暗的與false constant連接。數(shù)碼管模塊源代碼如圖7所示。
圖7 LED數(shù)碼管顯示模塊的部分源代碼
(2)在下位機單片機中已經(jīng)約定好了測試數(shù)碼管顯示的命令為DEMO_CH451_CMD 0X56,所以在前面已創(chuàng)建的用來向下位機傳遞數(shù)據(jù)的數(shù)組的輸入框中必須輸入下傳的命令。
(3)因有8個數(shù)碼管,在設計時用Enum控件來控制數(shù)碼管的位選擇。
(4)在string control中輸入的下傳數(shù)據(jù)為string型,且輸入數(shù)據(jù) 1~9、a~z、A~Z、“=”、“.”或空格都為 string。 把string轉換為相應的BCD碼如圖8所示。
圖8 將string轉換為BCD碼的部分程序代碼
(5)為達到在硬件上顯示數(shù)據(jù)時,LabVIEW上也在相應的數(shù)碼管顯示出數(shù)據(jù),則必須創(chuàng)建一個數(shù)碼管位選擇Enum控件的局部變量,同樣用case structure結構來實現(xiàn),其具體實現(xiàn)過程如圖9所示。
圖9 在LabVIEW選擇數(shù)碼管的部分程序源代碼
(6)最后,把和下位機規(guī)定好的協(xié)議寫入到數(shù)組中,再把數(shù)據(jù)寫入到動態(tài)鏈接庫DLL中的CH375WriteData函數(shù)中,就可實現(xiàn)與下位機的通信。程序如圖10所示。
圖10 向下位機寫入數(shù)據(jù)
4.2.4 取反模塊
取反模塊設計原理如下。
(1)與數(shù)碼管顯示模塊的第(2)步類似,首先,也是先在前面板創(chuàng)建一個數(shù)組,在數(shù)組中寫入已約定好的取反協(xié)議DEF_CMD_TEST_DATA及其他相關數(shù)據(jù)。并調用動態(tài)鏈接庫DLL中的CH375WriteData函數(shù)把數(shù)據(jù)傳入到下位機中。其具體實現(xiàn)過程如圖11所示。
圖11 數(shù)據(jù)下傳到單片機的部分程序代碼
(2)通過調用CH375ReadData函數(shù)把數(shù)據(jù)從下位機的緩沖區(qū)中讀取出來,具體程序如圖12所示。
圖12 讀取數(shù)據(jù)部分程序
(3)如果數(shù)據(jù)下傳成功,會彈出一個“數(shù)據(jù)下傳成功”的提示框;如果數(shù)據(jù)上傳讀取成功,也會彈出一個“數(shù)據(jù)上傳成功”的提示框。
本系統(tǒng)建立了LabVIEW開發(fā)環(huán)境下基于USB接口的PC與單片機的通信,這就為擴展其他功能提供了必要的通信基礎。對于實現(xiàn)如數(shù)據(jù)的采集與分析,就十分容易了。此外,由于USB具備高速率、低功耗和低成本等優(yōu)勢,越來越多支持USB標準的設備或產(chǎn)品將推向市場,USB在未來將成為標準的配置。因此它的實現(xiàn)很有可能會帶動一次新的產(chǎn)業(yè)升級和設備換代。
可以預見,隨著USB技術和測試測量技術的發(fā)展,USB接口技術在虛擬儀器測試測量的研究開發(fā)和應用中將會得到更快的推廣和普及。
[1]雷振山.LabVIEW7編程技術實用教程[M].北京:中國鐵道出版社,2004.
[2]南京沁恒電子有限公司.CH372中文手冊[Z].
[3]南京沁恒電子有限公司.CH451中文手冊[Z].
[4]陳國亮,張素君.基于 LabVIEW的虛擬儀器設計[J].福建電腦,2005(7):45-150.