999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2014-08-16 01:08:36陳龍燕
關(guān)鍵詞:單片機(jī)程序設(shè)備

陳龍燕

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

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

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

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

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

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

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

最后,建立起上位機(jī)與下位機(jī)的通信機(jī)制之后,應(yīng)用是十分廣泛的。可以方便地根據(jù)實(shí)際需要,利用它們之間的通信實(shí)現(xiàn)各種操作。

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

下位機(jī)采用51單片機(jī)程序,上位機(jī)采用LabVIEW開發(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)打開設(shè)備

在LabVIEW界面上有兩個(gè)指示燈和一個(gè)檢測設(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)打開硬件設(shè)備時(shí),運(yùn)行LabVIEW程序,在LabVIEW界面上的控件輸入數(shù)字(1~9)、字母 A~Z/a~z、“=”、“.”或空格,則在電路板上的對(duì)應(yīng)數(shù)碼管也能顯示出一樣的數(shù)據(jù)。即LabVIEW能把數(shù)據(jù)通過USB接口傳到硬件電路的單片機(jī)上,并在電路板上的數(shù)碼管上顯示出來。

(4)取反部分

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

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

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

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外圍芯片、鍵盤和數(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#、寫選通輸入引腳WR#、片選輸入引腳 CS#、中斷輸出引腳 INT#以及地址輸入引腳A0。通過被動(dòng)并行接口D[7..0],CH372芯片可以很方便地掛接到單片機(jī)的系統(tǒng)總線上;CH372芯片的RD#和WR#可以分別連接到單片機(jī)的讀選通輸出引腳和寫選通輸出引腳;INT#輸出的中斷請(qǐng)求是低電平有效,連接到單片機(jī)的中斷輸入引腳,單片機(jī)通過中斷方式獲知中斷請(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在未啟用鍵盤掃描功能時(shí)作為串行數(shù)據(jù)輸出線,在啟用鍵盤掃描功能后作為鍵盤中斷和數(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還具有鍵盤掃描功能,所以它的 SEG[7..0]和 DIG[7..0]引腳可以分別與鍵盤的 SEG[7..0]和 DIG[7..0]相連,來控制鍵盤的功能[3]。

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

下位機(jī)要與上位機(jī)中的動(dòng)態(tài)鏈接庫建立通信機(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)和鍵盤掃描,如果P2的第5腳和第6腳之間插上短路接子,則由單片機(jī)控制,否則由PC通過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)有資源來設(shè)計(jì)一種實(shí)現(xiàn)USB與LabVIEW通信的方法。

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

4.2 后面板程序

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

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

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

(1)點(diǎn)擊 LabVIEW 功能模板中“Advanced”子模板里的“調(diào)用庫函數(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庫函數(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í),程序才開始運(yùn)行,所以,引入了case structure結(jié)構(gòu)。當(dāng)按鍵按下,此時(shí)選擇器端子的值為真,則開始執(zhí)行結(jié)構(gòu)中true部分的程序;當(dāng)無按鍵按下時(shí),此時(shí)選擇器端子的值為假,則開始執(zhí)行case structure結(jié)構(gòu)中false部分的程序,此程序中false部分為空操作。

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

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

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

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

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

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

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

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

(1)因在 LabVIEW中沒有數(shù)碼管控件,所以必須用LabVIEW語言自己編寫數(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)約定好了測試數(shù)碼管顯示的命令為DEMO_CH451_CMD 0X56,所以在前面已創(chuàng)建的用來向下位機(jī)傳遞數(shù)據(jù)的數(shù)組的輸入框中必須輸入下傳的命令。

(3)因有8個(gè)數(shù)碼管,在設(shè)計(jì)時(shí)用Enum控件來控制數(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)來實(shí)現(xiàn),其具體實(shí)現(xiàn)過程如圖9所示。

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

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

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

4.2.4 取反模塊

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

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

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

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

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

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

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

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

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

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

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

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

猜你喜歡
單片機(jī)程序設(shè)備
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
試論我國未決羈押程序的立法完善
基于MPU6050簡單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
“程序猿”的生活什么樣
英國與歐盟正式啟動(dòng)“離婚”程序程序
500kV輸變電設(shè)備運(yùn)行維護(hù)探討
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
主站蜘蛛池模板: a级毛片在线免费观看| 欧美在线网| 真实国产精品vr专区| 72种姿势欧美久久久久大黄蕉| 伊人久综合| 亚洲日本中文字幕乱码中文| 国产精品白浆在线播放| 免费看一级毛片波多结衣| 91色综合综合热五月激情| 日韩a在线观看免费观看| 久久96热在精品国产高清| a级毛片一区二区免费视频| 夜夜爽免费视频| 国产H片无码不卡在线视频| 国内精自线i品一区202| 欧美一区二区啪啪| m男亚洲一区中文字幕| 一区二区三区精品视频在线观看| AV无码国产在线看岛国岛| 福利在线一区| 国产欧美在线视频免费| 久无码久无码av无码| 国产经典三级在线| 精品丝袜美腿国产一区| 中文字幕亚洲另类天堂| 91网在线| 免费人成网站在线观看欧美| 日本午夜三级| 成年人久久黄色网站| 亚洲精品麻豆| 色丁丁毛片在线观看| 国产福利在线观看精品| 五月天福利视频| 色亚洲激情综合精品无码视频| 99久久精品美女高潮喷水| 99精品免费在线| 爱做久久久久久| 国产成人亚洲无吗淙合青草| 国产美女视频黄a视频全免费网站| 午夜少妇精品视频小电影| 成年人午夜免费视频| 亚洲人成影院在线观看| 91视频日本| 天天视频在线91频| 亚洲黄色网站视频| 成人福利在线免费观看| 成人精品午夜福利在线播放| 全部毛片免费看| 成人在线亚洲| 91探花在线观看国产最新| 高清国产va日韩亚洲免费午夜电影| 国产91熟女高潮一区二区| 亚洲最新在线| 婷婷色一区二区三区| 老司国产精品视频91| jizz国产视频| 国产亚洲精久久久久久久91| 国产青青草视频| 久久毛片网| 手机精品视频在线观看免费| 欧美综合成人| 日本一本正道综合久久dvd| 日本三级欧美三级| аⅴ资源中文在线天堂| 99久久精品美女高潮喷水| 精品无码日韩国产不卡av| 99re在线视频观看| 久久一本日韩精品中文字幕屁孩| 免费无遮挡AV| 香蕉eeww99国产精选播放| 亚洲伊人天堂| 午夜日本永久乱码免费播放片| 国产无码在线调教| 成人在线综合| 一本大道AV人久久综合| 九色在线观看视频| 亚洲永久精品ww47国产| 国产精品第一区在线观看| 日本一区二区三区精品国产| 国产福利免费视频| 亚洲嫩模喷白浆| 伊人久久大香线蕉影院|