• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于LabVIEW和C51的USB通信系統(tǒng)

      2014-08-16 01:08:36陳龍燕
      關(guān)鍵詞:數(shù)碼管下位虛擬儀器

      陳龍燕

      (泉州理工職業(yè)學(xué)院,福建 泉州 362000)

      隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展及其在電子工業(yè)測(cè)量技術(shù)與儀器上的廣泛應(yīng)用,測(cè)試?yán)碚摗y(cè)試方法和儀器結(jié)構(gòu)的日益更新沖破了傳統(tǒng)儀器的概念,促使電子測(cè)量?jī)x器的功能和作用發(fā)生了質(zhì)的變化。在這樣的時(shí)代背景下,20世紀(jì) 80年代 National Instrument Company(簡(jiǎn)稱NI公司)提出了虛擬儀器的概念。我國(guó)于20世紀(jì)末開(kāi)始興起對(duì)虛擬儀器的開(kāi)發(fā)和應(yīng)用,如今已廣泛應(yīng)用于航空、航天、通信、醫(yī)療、電力、石油勘探和鐵路等行業(yè)[1]。

      本系統(tǒng)主要研究實(shí)現(xiàn)了基于USB接口的上位機(jī)以圖形化編程語(yǔ)言LabVIEW為應(yīng)用程序開(kāi)發(fā)平臺(tái)與下位機(jī)89C51單片機(jī)程序之間的通信。

      首先,本設(shè)計(jì)采用美國(guó)NI公司開(kāi)發(fā)的先進(jìn)的虛擬儀器技術(shù)LabVIEW作為上位機(jī)的開(kāi)發(fā)平臺(tái),其功能強(qiáng)大且靈活,程序的編寫(xiě)過(guò)程直觀明了,用戶界面人性化。利用它可以方便地建立自己的虛擬儀器,與其他軟件相比有許多優(yōu)越之處。目前,LabVIEW代表著當(dāng)今儀器發(fā)展的最新趨勢(shì),是促進(jìn)測(cè)控技術(shù)發(fā)展的一個(gè)重要開(kāi)發(fā)工具。

      第二,本設(shè)計(jì)通過(guò)在LabVIEW中調(diào)用動(dòng)態(tài)鏈接庫(kù)DLL,實(shí)現(xiàn)了基于USB接口的PC與單片機(jī)之間的通信。完成了LabVIEW中暫時(shí)無(wú)法實(shí)現(xiàn)的硬件通信工作,擴(kuò)展了虛擬儀器的功能,進(jìn)一步驗(yàn)證了DLL在虛擬儀器開(kāi)發(fā)中的重要性。

      第三,采用通用串行總線USB接口,克服了串口通信傳輸速度慢等缺點(diǎn)。

      第四,現(xiàn)有的NI公司生產(chǎn)的數(shù)據(jù)采集卡,成本高,插拔不方便,不易擴(kuò)展。為了解決這個(gè)問(wèn)題,下位機(jī)采用C51單片機(jī)技術(shù),在實(shí)際工程中,可以很方便地通過(guò)它控制硬件電路部分的功能。利用USB技術(shù)和單片機(jī)相結(jié)合,可以擴(kuò)展應(yīng)用于數(shù)據(jù)的采集等用途。由于數(shù)據(jù)采集卡價(jià)格昂貴,因而大大減少了開(kāi)發(fā)成本。

      最后,建立起上位機(jī)與下位機(jī)的通信機(jī)制之后,應(yīng)用是十分廣泛的??梢苑奖愕馗鶕?jù)實(shí)際需要,利用它們之間的通信實(shí)現(xiàn)各種操作。

      1 系統(tǒng)功能介紹

      下位機(jī)采用51單片機(jī)程序,上位機(jī)采用LabVIEW開(kāi)發(fā)環(huán)境,實(shí)現(xiàn)了基于USB接口的LabVIEW與單片機(jī)的數(shù)據(jù)通信系統(tǒng)。系統(tǒng)界面如圖1所示。

      圖1 基于LabVIEW與C51的USB通信系統(tǒng)運(yùn)行界面

      (1)打開(kāi)設(shè)備

      在LabVIEW界面上有兩個(gè)指示燈和一個(gè)檢測(cè)設(shè)備是否連接成功的按鈕,按下按鈕,如果設(shè)備連接成功第一個(gè)燈亮,反之,第二個(gè)燈亮。

      (2)獲取設(shè)備信息

      在LabVIEW界面上分別有獲取設(shè)備名和設(shè)備號(hào)的按鈕,按下按鈕后就可以在相應(yīng)的輸出框中得到設(shè)備號(hào)和設(shè)備名。

      (3)顯示部分

      LabVIEW界面上有8個(gè)與電路板上的數(shù)碼管對(duì)應(yīng)的VI、數(shù)碼管位選擇控件和輸入數(shù)據(jù)控件等。當(dāng)打開(kāi)硬件設(shè)備時(shí),運(yùn)行LabVIEW程序,在LabVIEW界面上的控件輸入數(shù)字(1~9)、字母 A~Z/a~z、“=”、“.”或空格,則在電路板上的對(duì)應(yīng)數(shù)碼管也能顯示出一樣的數(shù)據(jù)。即LabVIEW能把數(shù)據(jù)通過(guò)USB接口傳到硬件電路的單片機(jī)上,并在電路板上的數(shù)碼管上顯示出來(lái)。

      (4)取反部分

      在取反輸入框中輸入數(shù)據(jù),按下開(kāi)始取反按鈕,此時(shí),LabVIEW中的數(shù)據(jù)將通過(guò)USB線傳入到下位機(jī)單片機(jī)中,單片機(jī)接收到數(shù)據(jù)后取反,并把數(shù)據(jù)通過(guò)USB線上傳回上位機(jī)的LabVIEW界面。如果數(shù)據(jù)下傳成功,那么將出現(xiàn)一個(gè)“數(shù)據(jù)下傳成功”的提示框,經(jīng)過(guò)單片機(jī)處理后上傳到PC;如果上傳成功,也將出現(xiàn)一個(gè)“數(shù)據(jù)上傳成功”的提示框,最后在輸入框中返回的數(shù)據(jù)是取反后的數(shù)據(jù)。此功能表明了數(shù)據(jù)可以順利通過(guò)USB線下傳、上傳,從而實(shí)現(xiàn)了數(shù)據(jù)的通信功能。

      (5)單片機(jī)控制電路演示部分

      電路板上有24個(gè)鍵盤(pán),如果把電路板上的P2的第5腳和第6腳之間插上短路子,那么按下任意一個(gè)按鍵,數(shù)碼管上就會(huì)顯示出鍵盤(pán)的按鍵值,先左移原顯示,再顯示按鍵值。

      2 設(shè)計(jì)的思路

      本系統(tǒng)的總體結(jié)構(gòu)流程圖如圖2所示。

      圖2 系統(tǒng)總體結(jié)構(gòu)流程圖

      從圖2可知,系統(tǒng)結(jié)構(gòu)從上到下依次為:計(jì)算機(jī)、USB線、USB接口芯片 CH372、單片機(jī)、CH451外圍芯片、鍵盤(pán)和數(shù)碼管。

      CH372的UD+、UD-兩個(gè)引腳分別與 USB的數(shù)據(jù)信號(hào)線D+、D-引腳連接進(jìn)行數(shù)據(jù)通信。CH372芯片在本地端提供了通用的被動(dòng)并行接口,包括:8位雙向數(shù)據(jù)總線D7~D0、讀選通輸入引腳 RD#、寫(xiě)選通輸入引腳WR#、片選輸入引腳 CS#、中斷輸出引腳 INT#以及地址輸入引腳A0。通過(guò)被動(dòng)并行接口D[7..0],CH372芯片可以很方便地掛接到單片機(jī)的系統(tǒng)總線上;CH372芯片的RD#和WR#可以分別連接到單片機(jī)的讀選通輸出引腳和寫(xiě)選通輸出引腳;INT#輸出的中斷請(qǐng)求是低電平有效,連接到單片機(jī)的中斷輸入引腳,單片機(jī)通過(guò)中斷方式獲知中斷請(qǐng)求[2]。

      CH451具有硬件實(shí)現(xiàn)的高速4線串行接口,包括4個(gè)信號(hào)線:串行數(shù)據(jù)輸入線DIN、串行數(shù)據(jù)時(shí)鐘線DCLK、串行數(shù)據(jù)加載線LOAD和串行數(shù)據(jù)輸出線DOUT。其中,DIN、DCLK、LOAD是帶上拉的輸入信號(hào)線,默認(rèn)是高電平;DOUT在未啟用鍵盤(pán)掃描功能時(shí)作為串行數(shù)據(jù)輸出線,在啟用鍵盤(pán)掃描功能后作為鍵盤(pán)中斷和數(shù)據(jù)輸出線,默認(rèn)是高電平。

      CH451可以動(dòng)態(tài)驅(qū)動(dòng)8個(gè)共陰數(shù)碼管,所有數(shù)碼管的相同段引腳(段A~段G以及小數(shù)點(diǎn))并聯(lián)后連接CH451的段驅(qū)動(dòng)引腳SEG0~SEG7,各數(shù)碼管的陰極分別由CH451的DIG0~DIG7引腳進(jìn)行驅(qū)動(dòng)。同時(shí),CH451還具有鍵盤(pán)掃描功能,所以它的 SEG[7..0]和 DIG[7..0]引腳可以分別與鍵盤(pán)的 SEG[7..0]和 DIG[7..0]相連,來(lái)控制鍵盤(pán)的功能[3]。

      3 下位機(jī)單片機(jī)設(shè)計(jì)

      下位機(jī)要與上位機(jī)中的動(dòng)態(tài)鏈接庫(kù)建立通信機(jī)制,以接收和發(fā)送數(shù)據(jù)包。首先二者之間必須先約定好數(shù)據(jù)傳輸?shù)拿詈蛥f(xié)議,這與SOCKET通信一樣。因此在下位機(jī)的單片機(jī)中必須先定義一個(gè)與上位機(jī)通信的命令包結(jié)構(gòu)COMMAND_PACKET。當(dāng)單片機(jī)上電后,先對(duì)各個(gè)芯片進(jìn)行初始化,然后啟動(dòng)CH451的顯示驅(qū)動(dòng)和鍵盤(pán)掃描,如果P2的第5腳和第6腳之間插上短路接子,則由單片機(jī)控制,否則由PC通過(guò)USB控制演示。

      下位機(jī)單片機(jī)主程序的流程圖如圖3所示。

      圖3 單片機(jī)主程序流程圖

      4 上位機(jī)LabVIEW設(shè)計(jì)

      4.1 設(shè)計(jì)原理

      LabVIEW本身包含的一些接口設(shè)備的驅(qū)動(dòng)程序都是針對(duì)NI公司自己生產(chǎn)的接口板,對(duì)于用戶自行設(shè)計(jì)的硬件設(shè)備則不能直接與LabVIEW進(jìn)行通信[4]。以下就是針對(duì)非NI公司提供的USB設(shè)備,利用LabVIEW的現(xiàn)有資源來(lái)設(shè)計(jì)一種實(shí)現(xiàn)USB與LabVIEW通信的方法。

      首先,在前面板創(chuàng)建一個(gè)類型與下位機(jī)結(jié)構(gòu)體類似的數(shù)組,用來(lái)向下位機(jī)傳遞數(shù)據(jù)的輸入框,在輸入框中輸入的命令必須與下位機(jī)中定義的命令一致。

      4.2 后面板程序

      LabVIEW中的程序主要包括打開(kāi)硬件設(shè)備模塊、獲取設(shè)備信息模塊、數(shù)碼管顯示模塊和取反模塊等。

      4.2.1 打開(kāi)硬件設(shè)備模塊

      作為一個(gè)開(kāi)放式開(kāi)發(fā)平臺(tái),LabVIEW提供了DLL接口。用戶在LabVIEW平臺(tái)上能調(diào)用其他軟件平臺(tái)編譯的模塊,即可以通過(guò)調(diào)用動(dòng)態(tài)鏈接庫(kù)DLL中的CH375OpenDevice函數(shù),打開(kāi)硬件設(shè)備。LabVIEW對(duì)動(dòng)態(tài)鏈接庫(kù)DLL的調(diào)用可以概括為以下3個(gè)步驟。

      (1)點(diǎn)擊 LabVIEW 功能模板中“Advanced”子模板里的“調(diào)用庫(kù)函數(shù)(Call Library Function)”節(jié)點(diǎn),放入 DLL調(diào)用節(jié)點(diǎn)到框圖程序中。

      (2)雙擊該節(jié)點(diǎn)進(jìn)入?yún)?shù)配置對(duì)話框。包括DLL的選擇、DLL庫(kù)函數(shù)選擇以及函數(shù)的輸入、輸出參數(shù)設(shè)置。

      (3)點(diǎn)擊參數(shù)配置對(duì)話框的“OK”按鈕,在程序框圖中將實(shí)際參數(shù)連接到DLL調(diào)用節(jié)點(diǎn)的輸入輸出端口上[11]。

      調(diào)用 CH375OpenDevice函數(shù)時(shí),Call Library Function結(jié)點(diǎn)對(duì)話框如圖4所示。

      系統(tǒng)具體操作中,是當(dāng)按下“連接設(shè)備”按鍵時(shí),程序才開(kāi)始運(yùn)行,所以,引入了case structure結(jié)構(gòu)。當(dāng)按鍵按下,此時(shí)選擇器端子的值為真,則開(kāi)始執(zhí)行結(jié)構(gòu)中true部分的程序;當(dāng)無(wú)按鍵按下時(shí),此時(shí)選擇器端子的值為假,則開(kāi)始執(zhí)行case structure結(jié)構(gòu)中false部分的程序,此程序中false部分為空操作。

      圖4 Call Library Function節(jié)點(diǎn)對(duì)話框

      為了方便操作人員識(shí)別,特設(shè)置了兩個(gè)LED指示燈,如果設(shè)備打開(kāi)成功,則第一個(gè)燈亮;否則,第二個(gè)燈亮。當(dāng)打開(kāi)設(shè)備成功時(shí),CH375OpenDevice函數(shù)的返回值不等于-1,此時(shí)包含指示燈的case structure的選擇器端子的值為真,給相應(yīng)的LED燈連接上true constant或false constant;當(dāng)打開(kāi)設(shè)備失敗時(shí),LED指示燈連接情況與打開(kāi)成功時(shí)的相反。其部分源代碼如圖5所示。

      圖5 打開(kāi)設(shè)備模塊的部分程序代碼

      4.2.2 獲取設(shè)備信息模塊

      獲取設(shè)備信息模塊也是通過(guò)按鍵來(lái)控制的,程序中也引用case structure來(lái)實(shí)現(xiàn),程序如圖6所示。

      圖6 獲取設(shè)備相關(guān)信息的部分程序代碼

      4.2.3 數(shù)碼管顯示模塊

      數(shù)碼管顯示模塊設(shè)計(jì)原理如下。

      (1)因在 LabVIEW中沒(méi)有數(shù)碼管控件,所以必須用LabVIEW語(yǔ)言自己編寫(xiě)數(shù)碼管子VI。方法是:在前面板中點(diǎn)擊右鍵,從All controls下的Boolean中取出7個(gè)square LED和1個(gè)Round LED分別作為數(shù)碼管的SEG[0..7]。再后面板中用case structure把要亮的LED與true constant連接,變暗的與false constant連接。數(shù)碼管模塊源代碼如圖7所示。

      圖7 LED數(shù)碼管顯示模塊的部分源代碼

      (2)在下位機(jī)單片機(jī)中已經(jīng)約定好了測(cè)試數(shù)碼管顯示的命令為DEMO_CH451_CMD 0X56,所以在前面已創(chuàng)建的用來(lái)向下位機(jī)傳遞數(shù)據(jù)的數(shù)組的輸入框中必須輸入下傳的命令。

      (3)因有8個(gè)數(shù)碼管,在設(shè)計(jì)時(shí)用Enum控件來(lái)控制數(shù)碼管的位選擇。

      (4)在string control中輸入的下傳數(shù)據(jù)為string型,且輸入數(shù)據(jù) 1~9、a~z、A~Z、“=”、“.”或空格都為 string。 把string轉(zhuǎn)換為相應(yīng)的BCD碼如圖8所示。

      圖8 將string轉(zhuǎn)換為BCD碼的部分程序代碼

      (5)為達(dá)到在硬件上顯示數(shù)據(jù)時(shí),LabVIEW上也在相應(yīng)的數(shù)碼管顯示出數(shù)據(jù),則必須創(chuàng)建一個(gè)數(shù)碼管位選擇Enum控件的局部變量,同樣用case structure結(jié)構(gòu)來(lái)實(shí)現(xiàn),其具體實(shí)現(xiàn)過(guò)程如圖9所示。

      圖9 在LabVIEW選擇數(shù)碼管的部分程序源代碼

      (6)最后,把和下位機(jī)規(guī)定好的協(xié)議寫(xiě)入到數(shù)組中,再把數(shù)據(jù)寫(xiě)入到動(dòng)態(tài)鏈接庫(kù)DLL中的CH375WriteData函數(shù)中,就可實(shí)現(xiàn)與下位機(jī)的通信。程序如圖10所示。

      圖10 向下位機(jī)寫(xiě)入數(shù)據(jù)

      4.2.4 取反模塊

      取反模塊設(shè)計(jì)原理如下。

      (1)與數(shù)碼管顯示模塊的第(2)步類似,首先,也是先在前面板創(chuàng)建一個(gè)數(shù)組,在數(shù)組中寫(xiě)入已約定好的取反協(xié)議DEF_CMD_TEST_DATA及其他相關(guān)數(shù)據(jù)。并調(diào)用動(dòng)態(tài)鏈接庫(kù)DLL中的CH375WriteData函數(shù)把數(shù)據(jù)傳入到下位機(jī)中。其具體實(shí)現(xiàn)過(guò)程如圖11所示。

      圖11 數(shù)據(jù)下傳到單片機(jī)的部分程序代碼

      (2)通過(guò)調(diào)用CH375ReadData函數(shù)把數(shù)據(jù)從下位機(jī)的緩沖區(qū)中讀取出來(lái),具體程序如圖12所示。

      圖12 讀取數(shù)據(jù)部分程序

      (3)如果數(shù)據(jù)下傳成功,會(huì)彈出一個(gè)“數(shù)據(jù)下傳成功”的提示框;如果數(shù)據(jù)上傳讀取成功,也會(huì)彈出一個(gè)“數(shù)據(jù)上傳成功”的提示框。

      本系統(tǒng)建立了LabVIEW開(kāi)發(fā)環(huán)境下基于USB接口的PC與單片機(jī)的通信,這就為擴(kuò)展其他功能提供了必要的通信基礎(chǔ)。對(duì)于實(shí)現(xiàn)如數(shù)據(jù)的采集與分析,就十分容易了。此外,由于USB具備高速率、低功耗和低成本等優(yōu)勢(shì),越來(lái)越多支持USB標(biāo)準(zhǔn)的設(shè)備或產(chǎn)品將推向市場(chǎng),USB在未來(lái)將成為標(biāo)準(zhǔn)的配置。因此它的實(shí)現(xiàn)很有可能會(huì)帶動(dòng)一次新的產(chǎn)業(yè)升級(jí)和設(shè)備換代。

      可以預(yù)見(jiàn),隨著USB技術(shù)和測(cè)試測(cè)量技術(shù)的發(fā)展,USB接口技術(shù)在虛擬儀器測(cè)試測(cè)量的研究開(kāi)發(fā)和應(yīng)用中將會(huì)得到更快的推廣和普及。

      [1]雷振山.LabVIEW7編程技術(shù)實(shí)用教程[M].北京:中國(guó)鐵道出版社,2004.

      [2]南京沁恒電子有限公司.CH372中文手冊(cè)[Z].

      [3]南京沁恒電子有限公司.CH451中文手冊(cè)[Z].

      [4]陳國(guó)亮,張素君.基于 LabVIEW的虛擬儀器設(shè)計(jì)[J].福建電腦,2005(7):45-150.

      猜你喜歡
      數(shù)碼管下位虛擬儀器
      Arduino編程
      電腦報(bào)(2019年2期)2019-09-10 07:22:44
      MC9S08FL16單片機(jī)數(shù)碼管靜態(tài)顯示分析
      單片機(jī)控制的四位數(shù)碼管動(dòng)態(tài)顯示編程
      基于Qt的數(shù)碼管數(shù)字編碼系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      發(fā)射機(jī)房監(jiān)控系統(tǒng)之下位機(jī)
      PCB 刻制機(jī)功能開(kāi)發(fā)及在虛擬儀器實(shí)驗(yàn)室建設(shè)中的應(yīng)用
      電子制作(2017年13期)2017-12-15 09:00:26
      虛擬儀器及其在電工電子實(shí)驗(yàn)中的應(yīng)用
      電子制作(2017年1期)2017-05-17 03:54:33
      虛擬儀器技術(shù)在農(nóng)業(yè)裝備測(cè)控中的應(yīng)用
      景洪電廠監(jiān)控系統(tǒng)下位機(jī)數(shù)據(jù)傳輸網(wǎng)絡(luò)改造
      圍觀黨“下位”,吐槽帝“登基”
      高平市| 嘉定区| 米林县| 彭山县| 昂仁县| 寻甸| 南京市| 常宁市| 弋阳县| 江都市| 类乌齐县| 邻水| 名山县| 那曲县| 奇台县| 孙吴县| 泰州市| 武山县| 手游| 东乡族自治县| 佛山市| 宁远县| 晋江市| 汝州市| 宁波市| 巢湖市| 景德镇市| 吴忠市| 陕西省| 开封县| 涿州市| 西昌市| 昌图县| 新巴尔虎右旗| 辽阳市| 天柱县| 依兰县| 江达县| 镇江市| 蒲城县| 句容市|