基于USB傳輸?shù)臄?shù)據(jù)采集及處理系統(tǒng)_圖文_第1頁(yè)
基于USB傳輸?shù)臄?shù)據(jù)采集及處理系統(tǒng)_圖文_第2頁(yè)
基于USB傳輸?shù)臄?shù)據(jù)采集及處理系統(tǒng)_圖文_第3頁(yè)
基于USB傳輸?shù)臄?shù)據(jù)采集及處理系統(tǒng)_圖文_第4頁(yè)
基于USB傳輸?shù)臄?shù)據(jù)采集及處理系統(tǒng)_圖文_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目 錄摘要 2Abstract 21. 引言 32. 系統(tǒng)總體設(shè)計(jì)簡(jiǎn)介 33. 系統(tǒng)的硬件體系結(jié)構(gòu) 33.1 UART轉(zhuǎn)USB接口的設(shè)計(jì) 4芯片的功能及工作電路圖 4的外圍接口電路 6電平轉(zhuǎn)換電路 63.2 數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì) 7 7 8 84.系統(tǒng)軟件體系結(jié)構(gòu) 94.1 處理系統(tǒng)的設(shè)計(jì) 9處理系統(tǒng)的功能 9處理系統(tǒng)界面設(shè)計(jì) 9數(shù)據(jù)處理系統(tǒng)用戶界面控件回調(diào)程序設(shè)計(jì) 9環(huán)境下PC機(jī)與單片機(jī)通信的設(shè)計(jì) 11對(duì)串行口的編程控制 114.2 USB設(shè)備驅(qū)動(dòng)程序設(shè)計(jì) 124.3 數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì) 13系統(tǒng)的通信協(xié)議 13轉(zhuǎn)換子程序設(shè)計(jì) 145. 應(yīng)用實(shí)例 155.1 實(shí)例(一) 155.2 實(shí)例(

2、二) 156. 總結(jié) 167. 致謝 178. 參考文獻(xiàn) 179. 附錄 189.1 數(shù)據(jù)處理子系統(tǒng)程序 189.2 單片機(jī)端程序 279.3 數(shù)據(jù)采集子系統(tǒng)電路圖 29基于USB傳輸?shù)臄?shù)據(jù)采集及處理系統(tǒng)作者:張炳未指導(dǎo)老師:李方洲(溫州大學(xué) 物理與電子信息學(xué)院 325027)摘要:本文介紹了一種基于USB傳輸?shù)臄?shù)據(jù)采集及處理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),主要包括USB接口的工作原理、接口芯片的應(yīng)用方法、單片機(jī)端的數(shù)據(jù)采集以及PC機(jī)端接口程序的設(shè)計(jì)與數(shù)據(jù)處理的方法。系統(tǒng)實(shí)現(xiàn)了PC機(jī)對(duì)數(shù)據(jù)采集子系統(tǒng)采樣速率的控制,并實(shí)時(shí)地將采集到的數(shù)據(jù)傳輸?shù)交贛atlab-GUI界面設(shè)計(jì)的數(shù)據(jù)處理子系統(tǒng)中進(jìn)行實(shí)時(shí)分析、處

3、理、顯示和儲(chǔ)存。與一般的數(shù)據(jù)采集系統(tǒng)相比,本系統(tǒng)數(shù)據(jù)傳輸快、誤碼率低、上位機(jī)處理功能強(qiáng)大等特點(diǎn)。且該套方案實(shí)施容易,穩(wěn)定可靠,為研究數(shù)據(jù)采集與數(shù)據(jù)處理提供了方便。關(guān)鍵詞: USB AT89C51單片機(jī) 圖形用戶界面(GUI)Data Acquisition and Process System Based on USB TransmittingAuthor: Zhang Bingwei Tutor: Li Fangzhou (Physics and Electricment Information Department of WenZhou University 325027Abstract:

4、 this paper discuss how to design data acquisition and process system based on USB Transmitting. We further introduce some systems structure such as Operationprinciple of USB、application method of Interface chip、the method of data collected by MCU、 design of the interface procedure and the method of

5、 data processed in PC. The function of thissystem is that , by Matlab programming ,computer can control of the Sampling rate of data acquisition system through USB interface. Then, by USBs interface ,the data is sent to the process system based on Matlab-GUI Interface to analyze、operate、display and

6、store. To compare with general data acquisition system, it has the characters of fast speed、low bit error rate and powerful to process data in PC. This method is reliable and easy to implement. And it brings a lot of convenience for the research of data acquisition and process system.Key words: USB

7、AT89C51 GUI1. 引言通用串行總線USB(Universal Serial Bus)作為一種新型的數(shù)據(jù)通信接口在越來(lái)越廣闊的領(lǐng)域得到應(yīng)用。而基于USB接口的數(shù)據(jù)采集與傳統(tǒng)的串口數(shù)據(jù)采集相比具有即插即用、熱插拔、傳輸速度快、通用性強(qiáng)、易擴(kuò)展和性價(jià)比高等優(yōu)點(diǎn)。數(shù)據(jù)采集的后端數(shù)據(jù)處理一般采用Visual C+編寫,較為復(fù)雜,花費(fèi)的時(shí)間較長(zhǎng)。由美國(guó)Mathworks公司開(kāi)發(fā)的Matlab語(yǔ)言是面向理論分析研究、工程計(jì)算數(shù)據(jù)處理和作圖的一套具有強(qiáng)大功能的軟件系統(tǒng)。其中Matlab語(yǔ)言是一種以矩陣為基本運(yùn)算單元的解釋執(zhí)行的高級(jí)語(yǔ)言,只要幾條語(yǔ)句就能實(shí)現(xiàn)諸如FFT變換、FIR/IIR濾波等數(shù)據(jù)分析

8、處理,易于調(diào)試、理解和維護(hù),而且程序編程簡(jiǎn)單、直觀。因此它特別適用于數(shù)據(jù)采集處理系統(tǒng)。利用它編制USB接口程序,把Matalb語(yǔ)言和USB總線緊密結(jié)合起來(lái)的數(shù)據(jù)采集及處理系統(tǒng)將集成兩者的優(yōu)點(diǎn)。USB總線可以實(shí)現(xiàn)對(duì)外部數(shù)據(jù)實(shí)時(shí)高速的采集,把采集的數(shù)據(jù)傳送到主機(jī)后再通過(guò)Matlab的功能模塊順利實(shí)現(xiàn)數(shù)據(jù)分析、處理、顯示和存儲(chǔ)。2. 系統(tǒng)總體設(shè)計(jì)簡(jiǎn)介本設(shè)計(jì)以Atmel公司的AT89C51單片機(jī)為下位機(jī),PC機(jī)為上位機(jī)組成的實(shí)時(shí)數(shù)據(jù)采集及處理系統(tǒng),介紹了基于USB傳輸?shù)腗atlab環(huán)境下,PC機(jī)與單片機(jī)通信的實(shí)時(shí)數(shù)據(jù)處理方法的實(shí)現(xiàn)。數(shù)據(jù)采集系統(tǒng)的結(jié)構(gòu)框圖,如圖1所示。PC機(jī)USB接口與單片機(jī)UART口

9、通過(guò)MAX232電平轉(zhuǎn)換芯片相連,系統(tǒng)工作時(shí),Matlab通過(guò)調(diào)用設(shè)備控制工具箱中的serial類及相關(guān)函數(shù),來(lái)創(chuàng)建串口設(shè)備對(duì)象,得到設(shè)備的文件句柄,從而以操作文件的方式實(shí)現(xiàn)對(duì)PC機(jī)USB接口的讀寫操作。因而PC機(jī)可以通過(guò)Matlab向USB接口發(fā)送特殊指令,單片機(jī)應(yīng)用系統(tǒng)對(duì)此作出相應(yīng)的反應(yīng),將A/D采樣數(shù)據(jù)通過(guò)USB串口回送給PC機(jī)。此時(shí),Matlab通過(guò)查詢的方式,實(shí)時(shí)接收單片機(jī)發(fā)送的數(shù)據(jù),并完成對(duì)數(shù)據(jù)的分析處理、文件存儲(chǔ)、傅立葉變換及圖形顯示。圖1 基于USB傳輸?shù)臄?shù)據(jù)采集及處理系統(tǒng)的原理框圖3. 系統(tǒng)的硬件體系結(jié)構(gòu)基于USB傳輸?shù)臄?shù)據(jù)采集及處理系統(tǒng)硬件模塊主要由微控制器、A/D轉(zhuǎn)換器、

10、USB通信接口芯片、MAX232電平轉(zhuǎn)換芯片和分頻器等模塊組成。整個(gè)硬件系統(tǒng)按功能分則由USB接口電路和數(shù)據(jù)采集電路兩部分組成。數(shù)據(jù)采集電路部分完成前端采樣信號(hào)的采集、模數(shù)轉(zhuǎn)換以及處理、采樣速率控制和傳輸控制;USB接口電路則完成單片機(jī)與PC機(jī)之間的通信。 系統(tǒng)的A/D轉(zhuǎn)換、數(shù)字I/O的設(shè)計(jì)沿用了傳統(tǒng)的設(shè)計(jì)方法。根據(jù)采集的精度、速率、通道數(shù)等諸元素選擇合適的芯片,設(shè)計(jì)時(shí)充分注意了抗干擾的性能,尤其對(duì)A/D采集更是如此。在微控制器和USB接口的選擇上有兩種方式:一種方案是采用具備USB通信功能的單片機(jī),如Intel、SGS-Tomson、Cypress、Philips等芯片廠商都推出了具備USB

11、通信接口的單片機(jī);另一種方案是采用普通單片機(jī)加上專用的USB通信芯片,現(xiàn)在的專用芯片中較流行的有Silicon Laboratories公司的CP2101、National Semiconductor公司的USBN9602、ScanLogic公司的SL11等。本設(shè)計(jì)的微控制器和USB接口的選擇采用了第二個(gè)方案,選用ATLMEL公司的AT89C51單片機(jī)和Silicon Laboratories公司的CP2101橋接器構(gòu)成系統(tǒng)。CP2101橋接器拋開(kāi)了USB協(xié)議問(wèn)題,使開(kāi)發(fā)人員基本專注在硬件方面就行了。它可以把USB當(dāng)成一個(gè)普通的串口來(lái)使用,將它與單片機(jī)中的串口相連,就可以把單片機(jī)的串口變成一個(gè)

12、USB接口。這種方案的設(shè)計(jì)和調(diào)試比較簡(jiǎn)便,成本相對(duì)而言也比較低。下面將分點(diǎn)介紹系統(tǒng)硬件體系中幾個(gè)重要的模塊。3.1 UART轉(zhuǎn)USB接口的設(shè)計(jì)通用串行總線USB是用來(lái)連接外圍設(shè)備與計(jì)算機(jī)之間的新式標(biāo)準(zhǔn)接口總線。它是一種快速、雙向、同步傳輸、廉價(jià)的并可以實(shí)現(xiàn)熱拔插的串行接口。它自20世紀(jì)90年代末出現(xiàn)以來(lái),USB(通用串行總線)簡(jiǎn)化了鍵盤及鼠標(biāo)等計(jì)算機(jī)外部設(shè)備的連接與安裝?,F(xiàn)在,隨著USB的應(yīng)用越來(lái)越廣泛,開(kāi)發(fā)電子系統(tǒng)的工程師們也充分利用USB即插即用的好處,開(kāi)發(fā)USB數(shù)據(jù)采集設(shè)備。那么USB為什么能成為最受歡迎的計(jì)算機(jī)外部設(shè)備總線呢?首先,其傳輸速度快。USB有高速和低速兩種方式,主模式為高速

13、模式,速率為12Mbps,另外為了適應(yīng)一些不需要很大吞吐量和很高實(shí)時(shí)性的設(shè)備,如鼠標(biāo)等,USB還提供低速方式,速率為1.5Mbps。其次,其易于擴(kuò)展。雖然每條USB總線只能有一臺(tái)主機(jī)(一般是您的計(jì)算機(jī)),但是它可以同時(shí)連接多達(dá)127臺(tái)設(shè)備。主機(jī)初始化并控制所有總線通信,所以它擁有大多數(shù)協(xié)議信息。根據(jù)USB規(guī)格的規(guī)定,總線信號(hào)在一對(duì)數(shù)據(jù)線(D+和D-)上產(chǎn)生。再次,其使用靈活。USB共有種傳輸模式:控制傳輸(control、同步傳輸(Synchronization、中斷傳輸(interrupt、批量傳輸(bulk,以適應(yīng)不同設(shè)備的需要。最后,設(shè)備安裝和配置容易。USB的易用性來(lái)自于設(shè)備的自動(dòng)識(shí)別

14、和安裝性能。在將任何一臺(tái)設(shè)備插入到USB端口上之后,它的默認(rèn)地址為0。在連接完畢后,設(shè)備將D+線拉到3.3 V的“高”狀態(tài)。主機(jī)檢測(cè)到此變化,給設(shè)備重新分配一個(gè)新地址,然后啟動(dòng)一個(gè)安裝任務(wù),在此任務(wù)中,它要求獲得設(shè)備的各種信息,例如它的類型(集線器或具有特定功能的終端設(shè)備)等。當(dāng)主機(jī)安裝好了總線上的設(shè)備之后,操作系統(tǒng)將立即接管并安裝所有需要的驅(qū)動(dòng)程序,從而用戶可以與該設(shè)備進(jìn)行交流。PCI等內(nèi)部總線要求用戶關(guān)機(jī)并重新開(kāi)啟計(jì)算機(jī)后才能安裝硬件,而即插即用USB連接功能為需要頻繁斷開(kāi),然后重新連接。由于USB通信的以上優(yōu)點(diǎn),使數(shù)據(jù)基于USB傳輸?shù)牟杉O(shè)備帶來(lái)極大的高速性、便攜性等諸多益處。RS232

15、是單個(gè)設(shè)備接入計(jì)算機(jī)時(shí)常采用的一種接入方式,其硬件和軟件協(xié)議比較簡(jiǎn)單,有很多傳統(tǒng)設(shè)備采用了這種通信方式。本系統(tǒng)是將USB轉(zhuǎn)UART技術(shù)應(yīng)用于單片機(jī)與PC機(jī)之間的數(shù)據(jù)通信,在計(jì)算機(jī)上產(chǎn)生一個(gè)虛擬的COM口,用戶只需按照通用串行口一樣使用USB口即可。這樣不僅能使單片機(jī)具備USB通信的諸多優(yōu)點(diǎn),簡(jiǎn)化了USB編程,同時(shí)還可以利用USB對(duì)單片機(jī)提供5V的電源(500mA以下。本系統(tǒng)采用Cygnal公司出的CP2101-UART轉(zhuǎn)USB橋接器。芯片CP2101是一種高度集成的USB轉(zhuǎn)UART橋接器,它包含有USB2.0全速功能控制器、USB收發(fā)器振蕩器和異步串行接口(UART。該芯片的全部功能集成在一個(gè)

16、5mm×5mm的MLP28封裝的IC中。CP2101內(nèi)置有與計(jì)算機(jī)通信的USB協(xié)議,工作時(shí),會(huì)在計(jì)算機(jī)上產(chǎn)生一個(gè)虛擬COM口,用戶就可以按照通用串行口的控制方式來(lái)使用這個(gè)COM口。CP2101內(nèi)集成有多個(gè)模塊,各自完成不同的功能,如圖2所示。1 USB功能控制器是一個(gè)符合USB 2.0的全速器件,集成了收發(fā)器和片內(nèi)相應(yīng)的上拉電阻,USB功能控制器管理 USB和 UART間所有的數(shù)據(jù)傳輸和由 USB主控制器發(fā)出的命令請(qǐng)求以及用于控制 UART功能的命令,USB接口的信號(hào)描述如表1所列。圖2 CP2101的功能框圖表1 USB信號(hào)描述引腳描述1VBUS(+5V)2D-3D+4GND(地)

17、2 異步串行接口(UART包括TX (發(fā)送 、RX (接收 、數(shù)據(jù)信號(hào)以及RTS、 CTS、 DSR、 DTR、 DCD和 RI控制信號(hào)。UART支持 RTS/CTS、 DSR/DTR和 XOn/XOff握手協(xié)議,可以通過(guò)編程使UART支持各種數(shù)據(jù)格式和波特率,波特率的范圍從300921600不等。從CP2101轉(zhuǎn)換出來(lái)的UART信號(hào)不是標(biāo)準(zhǔn)的RS232電平,而是TTL電平,其信號(hào)描述如表2所列。表2 UART信號(hào)描述引腳序號(hào)信號(hào)名稱符號(hào)流向功能1載波檢測(cè)DCDDCE 到 DTE表示DCE接收到遠(yuǎn)程載波2接收數(shù)據(jù)RXDDCE 到 DTEDTE接收串行數(shù)據(jù)3發(fā)送數(shù)據(jù)TXDDTE 到 DCEDTE

18、發(fā)送串行數(shù)據(jù)4數(shù)據(jù)終端準(zhǔn)備好DTRDTE 到 DCEDTE準(zhǔn)備好5信號(hào)地GND信號(hào)公共地6數(shù)據(jù)設(shè)備準(zhǔn)備好DSRDCE 到 DTEDCE準(zhǔn)備好7請(qǐng)求發(fā)送RTSDTE 到 DCEDTE請(qǐng)求DCE將線路切換到發(fā)送方式8允許發(fā)送CTSDCE 到 DTEDCE告訴DTE線路已接通可以發(fā)送9振鈴指示RIDCE 到 DTE表示DCE與線路接通,出現(xiàn)振鈴3 內(nèi)部 EEPROM可以用于存儲(chǔ)由設(shè)備原始制造商定義的USB供應(yīng)商ID、產(chǎn)品ID、產(chǎn)品說(shuō)明、電源參數(shù)器件、版本號(hào)和器件序列號(hào)等信息。4 電壓調(diào)節(jié)器是一個(gè)可以由USB總線驅(qū)動(dòng)的器件電源,可在VDD引腳輸出3.03.6 V電壓,1100 mA電流。的外圍接口電路

19、USB應(yīng)用通常需要硅晶體和許多其它組件,雖然CP2101內(nèi)置了EEPROM、穩(wěn)壓器、USB收發(fā)器和集成式內(nèi)部振蕩器,使其可以簡(jiǎn)化設(shè)計(jì),降低成本。但作為和普通單片機(jī)串口相接的橋接器,它還需要設(shè)計(jì)外接USB接口電路和RS232接口電路。USB接口電路實(shí)現(xiàn)CP2101與計(jì)算機(jī)之間的通信;RS232接口電路實(shí)現(xiàn)CP2101和單片機(jī)之間的通信。接口電路如圖3所示。其中RS232電平轉(zhuǎn)換電路可根據(jù)需要選用MAX3243或MAX232。對(duì)于本設(shè)計(jì)來(lái)說(shuō),采用的CP2101評(píng)估板就是一個(gè)USB轉(zhuǎn)RS232的轉(zhuǎn)換器。雖然CP2101芯片的輸入和輸出信號(hào)均為TTL電平,但設(shè)計(jì)所采用的評(píng)估板已對(duì)CP2101輸入輸出的

20、信號(hào)進(jìn)行了RS232電平轉(zhuǎn)換,而本設(shè)計(jì)所采用的51單片機(jī)串行口輸入輸出的信號(hào)卻還是TTL電平。因此,本設(shè)計(jì)在評(píng)估板與單片機(jī)之間又加上RS232電平轉(zhuǎn)換電路,使其能進(jìn)行正確地進(jìn)行數(shù)據(jù)通信。 CP2101的使用與普通的USB外設(shè)相同,當(dāng)?shù)谝淮螏щ姴迦隤C機(jī)USB接口時(shí),系統(tǒng)會(huì)提示安裝相應(yīng)的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序安裝完后,系統(tǒng)會(huì)自動(dòng)增加一個(gè)COM口,并更新計(jì)算機(jī)硬件設(shè)備管理中“端口”項(xiàng)的內(nèi)容,添加進(jìn)CP2101的名稱:CP210X USB to UART Bridge Controller(COMX.而這個(gè)虛擬COM口的序號(hào)則要根據(jù)所用計(jì)算機(jī)上已存在的COM口數(shù)量而定,一般情況下是COM3。運(yùn)行在 PC

21、機(jī)上的應(yīng)用軟件可以按照訪問(wèn)一個(gè)傳統(tǒng)的標(biāo)準(zhǔn)的硬件COM口的方式訪問(wèn)基于 CP2101 的器件。但 PC 與 CP2101 器件間的數(shù)據(jù)傳輸卻是通過(guò) USB 完成的。因此,無(wú)需修改現(xiàn)有的 COM 口應(yīng)用就可以實(shí)現(xiàn)通過(guò) USB 向這個(gè)帶有5 V和3.3 V供電的“COM口”傳輸數(shù)據(jù)。圖3 CP2101的外圍接口電路電平轉(zhuǎn)換電路RS-232標(biāo)準(zhǔn)是由美國(guó)電子工業(yè)協(xié)會(huì)(Electronic Industry Association)的推薦標(biāo)準(zhǔn)。它是一種電壓型總線標(biāo)準(zhǔn),以不同極性的電壓表示邏輯值:-3V-25V表示邏輯“1”;+3V+25V表示邏輯“0”。標(biāo)準(zhǔn)數(shù)據(jù)傳送速率有50、75、110、150、300

22、、600、1200、2400、4800、9600、19200波特等。目前較為常用的串口有9針串口(DB9)和25針串口(DB25),通信距離較近時(shí)(<12m,可以用電纜線直接連接標(biāo)準(zhǔn)RS232端口(RS422,RS485較遠(yuǎn),若距離較遠(yuǎn),需附加調(diào)制解調(diào)器(MODEM)。最為簡(jiǎn)單且常用的是三線制接法,即地、接收數(shù)據(jù)和發(fā)送數(shù)據(jù)三腳相連。本系統(tǒng)所設(shè)計(jì)的電平轉(zhuǎn)換電路的芯片選用MAX232CPE。它是一個(gè)雙9 芯的轉(zhuǎn)換接頭,具有2路RS-232 電平至TTL及2 路TTL至RS-232電平的轉(zhuǎn)換。一般情況下,MAX232外加幾個(gè)0.1uF的電容就可以輕松地完成TTL電平與RS-232電平相互轉(zhuǎn)換的

23、功能。本設(shè)計(jì)RS-232串口通信的接線采用最為基本的接法:三線制,即接收數(shù)據(jù)針腳(或線)與發(fā)送數(shù)據(jù)針腳(或線)相連,彼些交叉,信號(hào)地對(duì)應(yīng)相接。本設(shè)計(jì)的RS-232電平轉(zhuǎn)換電路圖,如圖4所示 。圖4 RS232電平轉(zhuǎn)換電路3.2 數(shù)據(jù)采集子系統(tǒng)的設(shè)計(jì)數(shù)據(jù)采集子系統(tǒng)的工作原理,如圖5所示。由8051單片機(jī)、信號(hào)采樣電路、A/D轉(zhuǎn)換器、四分頻電路和復(fù)位電路等部分組成。當(dāng)上位機(jī)有采集指令時(shí),單片機(jī)就開(kāi)始接收上位機(jī)發(fā)來(lái)的采樣速率,接著單片機(jī)啟動(dòng)A/D轉(zhuǎn)換器采集信號(hào)采樣電路輸入的模擬量信號(hào),并控制A/D轉(zhuǎn)換器的采樣速率。當(dāng)上位機(jī)發(fā)來(lái)停止采集指令或處理系統(tǒng)關(guān)閉時(shí),單片機(jī)就停止A/D轉(zhuǎn)換器工作,并等待上位機(jī)的

24、新指令。A/D轉(zhuǎn)換器的選擇從精度和轉(zhuǎn)換速率上考慮,AD574比ADC0809凡精度還是轉(zhuǎn)換速率都要高,但價(jià)格昂貴。而從系統(tǒng)實(shí)用的設(shè)計(jì)要求上考慮,本系統(tǒng)選用ADC0809八位A/D轉(zhuǎn)換器,它具有8路輸入通道,轉(zhuǎn)換速率為130s,基準(zhǔn)電壓為5V時(shí),其分辨率為0.0196V,基本滿足本系統(tǒng)的要求。數(shù)據(jù)采集子系統(tǒng)需要微處理器控制的器件不多,執(zhí)行任務(wù)不復(fù)雜。ATMEL公司的89C51(Flash Rom型)微處理器,利用其自帶的4K存儲(chǔ)器、I/O口、定時(shí)器及串行通信口等內(nèi)置功能,足以滿足存儲(chǔ)全部程序、讀取A/D轉(zhuǎn)換器和上位機(jī)的通信等功能。雖然系統(tǒng)需要采集大量的數(shù)據(jù),但采取了即采即發(fā)的方法,無(wú)需外擴(kuò)存儲(chǔ)器

25、。因此,微處理器選用AT89C51。A/D轉(zhuǎn)換電路連接主要解決兩個(gè)問(wèn)題:一是8路模擬信號(hào)通道選擇;二是A/ D轉(zhuǎn)換完成后轉(zhuǎn)換數(shù)據(jù)的傳送。如圖6所示,模擬通道選擇信號(hào)A、B、C分別接最低位地址A0、A1、A2(即P0.0、P0.1、P0.2),而地址鎖存允許信號(hào)ALE由138的控制(138的A0、A1、A2分別接單片機(jī)的P2.5、P2.6、2.7),則8路模擬通道的地址為8000H8007H。此外,通道地址選擇以/WR作寫選通信號(hào),這一部分電路連接如圖6所示。從圖中可以看到,把ALE信號(hào)與START信號(hào)連接在一起,這樣使得在信號(hào)前沿寫入(鎖存)通道地址,緊接著在其后就啟動(dòng)轉(zhuǎn)換,有關(guān)信號(hào)的時(shí)序配合

26、如圖7所示。A/D轉(zhuǎn)換完成的確認(rèn)方法可以采用三種方式:定時(shí)傳送方式、查詢方式、中斷方式。不管采用哪種確認(rèn)方式,只要一旦確認(rèn)轉(zhuǎn)換完成,即可通過(guò)指令進(jìn)行數(shù)據(jù)傳送。首先送出口地址并以/RD作選通信號(hào),當(dāng)/RD信號(hào)有效時(shí),OE信號(hào)即有效,把轉(zhuǎn)換數(shù)據(jù)送上數(shù)據(jù)總線,供單片機(jī)接收。在圖6中,AD轉(zhuǎn)換完成的信號(hào)EOC與CPU的P3.2相接,采用查詢方式連接;/WR、/RD分別接CPU的/WR(P3.6)和/RD(P3.7);/CSAD接138的。圖6 A/D轉(zhuǎn)換電路連接圖圖7 信號(hào)的時(shí)序配合ADC0809的內(nèi)部沒(méi)有時(shí)鐘電路,所需時(shí)鐘信號(hào)由外部提供,通常使用的頻率為500kHz,其時(shí)鐘信號(hào)輸入為引腳10,即圖6

27、中的CLKAD。本設(shè)計(jì)充分考慮了整個(gè)系統(tǒng)中已存在的條件,決定AD0809的時(shí)鐘信號(hào)不外加500kHz晶振,而是對(duì)單片機(jī)的ALE信號(hào)進(jìn)行分頻來(lái)提供。由于本系統(tǒng)單片機(jī)晶振采用的是12MHz,所以其ALE輸出信號(hào)的頻率為2 MHz。因此,本系統(tǒng)設(shè)計(jì)了一四分頻電路,對(duì)ALE進(jìn)行四分頻,以滿足ADC0809轉(zhuǎn)換器時(shí)鐘信號(hào)的要求。本設(shè)計(jì)的分頻器采用74LS161四位二進(jìn)制同步計(jì)數(shù)器為主要器件,采用反饋方式構(gòu)成四進(jìn)制計(jì)數(shù)器。反饋式一般有兩種形式:其一,利用預(yù)置端/LD構(gòu)成。把計(jì)數(shù)器輸入端D0D1D2D3全部接地。當(dāng)計(jì)數(shù)器計(jì)數(shù)已滿時(shí),輸出端等于輸入端電平,以達(dá)到清零目的。其二,利用清除端/CR構(gòu)成。即當(dāng)Q3Q

28、2Q1Q0=0100時(shí),通過(guò)反饋線強(qiáng)制計(jì)數(shù)器清零。本設(shè)計(jì)采用第二種接法,電路圖如圖8所示。圖8 分頻電路圖4.系統(tǒng)軟件體系結(jié)構(gòu)4.1 數(shù)據(jù)處理子系統(tǒng)的設(shè)計(jì)本數(shù)據(jù)處理子系統(tǒng)需要實(shí)現(xiàn)的基本功能:a.隨時(shí)啟動(dòng)或暫停數(shù)據(jù)采集子系統(tǒng)的采集工作;b.采用控制方式,便于該控制平臺(tái)的擴(kuò)展,現(xiàn)已完成采樣速率控制、各種電壓顯示的選擇控制、傅立葉變換和自動(dòng)或手動(dòng)保存數(shù)據(jù)文件等控制,實(shí)時(shí)、在線更改數(shù)據(jù)采集系統(tǒng)采樣速率的設(shè)定值和數(shù)據(jù)保存的文件名;c.將采集所得的數(shù)據(jù)實(shí)時(shí)地以圖形的方式顯示在中央的圖形顯示區(qū),便于觀察前端信號(hào)變化以及走勢(shì);d.保存的數(shù)據(jù)文件更是可以在系統(tǒng)停止數(shù)據(jù)采集的時(shí)候,隨時(shí)調(diào)出來(lái)進(jìn)行綜合分析和處理。隨

29、著計(jì)算機(jī)技術(shù)的飛速發(fā)展,人與計(jì)算機(jī)之間的通信方式也發(fā)生了深刻變化。從傳統(tǒng)的命令通信方式演變成了圖形界面下的交互通信方式。在圖形用戶界面(GUI)下,用戶可以通過(guò)鼠標(biāo)等輸入設(shè)備與計(jì)算機(jī)進(jìn)行信息的交流,選擇欲運(yùn)行的計(jì)算機(jī)程序,并控制程序的運(yùn)行?,F(xiàn)在,絕大部分的程序設(shè)計(jì)工具如VB、VC+都可以進(jìn)行圖形用戶界面(GUI)的設(shè)計(jì)與開(kāi)發(fā)工作。作為強(qiáng)大的科學(xué)計(jì)算軟件,MATLAB也提供了圖形用戶界面的設(shè)計(jì)與開(kāi)發(fā)功能。MALAB中的基本圖形用戶界面對(duì)象分為3類:用戶界面控件對(duì)象(uicontrol)、下拉式菜單對(duì)象(uimenu)和內(nèi)容式菜單(uicontextmenu)。其中,uicontrol能建立按鈕、

30、列表框、編輯框等圖形用戶界面對(duì)象,uimenu能建立下拉式菜單和子菜單等圖形用戶界面對(duì)象,uicontextmenu能建立內(nèi)容式菜單用戶界面對(duì)象。利用上述對(duì)象,進(jìn)行周密的組織、設(shè)計(jì),就可以設(shè)計(jì)出一個(gè)界面良好、操作簡(jiǎn)便、功能強(qiáng)大的圖形用戶界面。本設(shè)計(jì)的數(shù)據(jù)處理子系統(tǒng)就是應(yīng)用MATLAB 語(yǔ)言的可視化圖形界面(GUI 設(shè)計(jì)了人機(jī)交互界面. 通過(guò)鼠標(biāo)點(diǎn)擊的方式來(lái)選擇或者激活某一控件對(duì)象, 運(yùn)行所需的M 文件, 完成特定的功能,如圖9所示。用戶操作界面主要包括參數(shù)輸入?yún)^(qū)、控制區(qū)、繪圖區(qū)和觀察對(duì)象選擇區(qū)等四個(gè)部分。數(shù)據(jù)處理系統(tǒng)用戶界面控件回調(diào)程序設(shè)計(jì)實(shí)現(xiàn)一個(gè)圖形界面的動(dòng)態(tài)和友好交互設(shè)計(jì), 最終是要通過(guò)圖

31、形界面中的控件對(duì)象的操作來(lái)完成, 而這些操作必定是通過(guò)MATLAB中函數(shù)代碼的執(zhí)行來(lái)完成的。這些函數(shù)代碼的編制可以通過(guò)編寫每個(gè)控件的回調(diào)函數(shù)來(lái)完成, 而編寫時(shí)可以把該控件的函數(shù)代碼直接書寫在“CallBack”中, 也可以把函數(shù)代碼放在一個(gè)自定義的M 文件中。 而在“CallBack”中只將其文件名寫上,當(dāng)操作該控件時(shí),系統(tǒng)會(huì)自動(dòng)執(zhí)行“CallBack”中所要求執(zhí)行的內(nèi)容。無(wú)論是函數(shù)代碼, 還是以文件方式的函數(shù)代碼。觀察對(duì)象選擇區(qū)圖9 數(shù)據(jù)處理系統(tǒng)界面本系統(tǒng)的軟件設(shè)計(jì)就是將每個(gè)控件的回調(diào)函數(shù)代碼直接寫在了“allack”中,總共編寫了個(gè)大小不等的回調(diào)程序。通過(guò)這些函數(shù)文件的調(diào)用實(shí)現(xiàn)了界面友好及

32、各個(gè)功能,現(xiàn)將幾個(gè)主要回調(diào)函數(shù)介紹如下:1 “啟動(dòng)”鍵回調(diào)函數(shù):數(shù)據(jù)處理系統(tǒng)軟件的核心部分。包括GUI界面部分控件的初始化,相關(guān)文件的調(diào)用,控件的實(shí)現(xiàn),與數(shù)據(jù)采集系統(tǒng)輸入輸出的控制,GUI作圖等等??梢哉f(shuō),只要在GUI界面上存在事件觸發(fā),就會(huì)對(duì)該回調(diào)函數(shù)進(jìn)行調(diào)用或與該回調(diào)函數(shù)發(fā)生關(guān)聯(lián)。2 “修改”鍵回調(diào)函數(shù):主要功能是輸入修改后的采樣速率值。為了更好地實(shí)現(xiàn)整個(gè)數(shù)據(jù)處理系統(tǒng)的人機(jī)交互性,采樣速率的輸入采用了彈出式對(duì)話框,并加入了兩個(gè)信息提示框函數(shù)來(lái)引導(dǎo),以便整個(gè)修改過(guò)程方便、明確??紤]到A/D的轉(zhuǎn)換速度以及采集控制中心的控制精度,本系統(tǒng)在“修改”回調(diào)函數(shù)中設(shè)定了采樣速率的步徑:0.5KS/s,和

33、采樣速率的范圍:07KS/s。因此,若在修改對(duì)話框內(nèi)輸入超出7或遞加的步徑非0.5的值(例如8或2.3等等),則都被提示為無(wú)效輸入;若輸入的值在有效范圍內(nèi),則被傳遞給“啟動(dòng)”回調(diào)函數(shù),請(qǐng)求與下位機(jī)聯(lián)系更改采樣速率,并在數(shù)據(jù)處理系統(tǒng)界面的采樣速率框內(nèi)顯示新的采樣速率值,采樣速率的默認(rèn)值為1KS/s。3 “電壓控制組合框”回調(diào)函數(shù):主要功能實(shí)時(shí)顯示所選種類的電壓值。在取得下位機(jī)上傳的數(shù)據(jù)后,處理系統(tǒng)會(huì)實(shí)時(shí)地處理數(shù)據(jù),并將最新的電壓變化傳給相應(yīng)的參數(shù),如剛采得的瞬時(shí)電壓,已采得的所有數(shù)據(jù)中最大電壓、平均電壓及最小電壓。當(dāng)在GUI界面上選中相應(yīng)的單選按鈕后,此按鈕的回調(diào)函數(shù)就會(huì)將相應(yīng)的數(shù)據(jù)處理結(jié)果顯示

34、在其上面的電壓值顯示框內(nèi),并更改顯示框的名稱。其默認(rèn)值為:瞬時(shí)電壓?jiǎn)芜x按鈕有效。4 “傅立葉變換”鍵回調(diào)函數(shù):此回調(diào)函數(shù)先為“傅立葉變換”設(shè)立標(biāo)志位,并將其傳給“啟動(dòng)”回調(diào)函數(shù)。若此標(biāo)志位為真,則停止數(shù)據(jù)采樣,將已采得的數(shù)據(jù)進(jìn)行傅立葉變換,繪出頻譜圖在主顯示區(qū)。5 “清屏”鍵回調(diào)函數(shù):本系統(tǒng)設(shè)計(jì)的主顯示區(qū)清屏分為兩種,一種是在實(shí)時(shí)顯示時(shí),當(dāng)達(dá)到一千個(gè)采樣點(diǎn)就自動(dòng)清屏;另一種就是在任何采樣點(diǎn)數(shù)時(shí),根據(jù)觀察需發(fā)按下“清屏”鍵來(lái)手動(dòng)清屏。6 “停止”鍵回調(diào)函數(shù):設(shè)立停止采樣標(biāo)志位。當(dāng)采樣子程序檢測(cè)到此標(biāo)志使能時(shí),就停止處理平臺(tái)部分程序,并向下位機(jī)發(fā)送停止采樣命令,使其處于待命狀態(tài)。7 “退出”鍵回調(diào)

35、函數(shù):關(guān)閉平臺(tái)的所有程序和GUI界面??傊? 以上是一些本數(shù)據(jù)處理子系統(tǒng)主要的函數(shù)執(zhí)行文件, 還有一些M文件(如文件、操作、打印和幫助等等菜單下的回調(diào)文件 , 由于在其他編程中十分普遍, 這里就不一一列出了(程序詳見(jiàn)附錄)。前面已經(jīng)介紹了USB轉(zhuǎn)換芯片CP2101內(nèi)置了USB與計(jì)算機(jī)通信的協(xié)議,當(dāng)其插入計(jì)算機(jī)USB接口的時(shí)候,已安裝的驅(qū)動(dòng)程序把USB口轉(zhuǎn)化為計(jì)算機(jī)上的一個(gè)虛擬COM口。對(duì)于這個(gè)COM口的序號(hào),要看這臺(tái)計(jì)算機(jī)上已經(jīng)存在的COM口數(shù)量,一般是COM3。在Matlab6.0中新增的設(shè)備控制工具條(instrument control toolbox)用來(lái)負(fù)責(zé)上、下位機(jī)之間的通信。該設(shè)

36、備控制工具箱的特點(diǎn)如下:1 支持基于串行接口(RS-232、RS-422、RS-485)、GPIB總線(IEEE2488、HPIB標(biāo)準(zhǔn))、VISA總線的通信;2 通信數(shù)據(jù)支持二進(jìn)制和文本(ASCII)兩種方式,文本方式支持SCPI(Standard Commands for Programmable Instruments)語(yǔ)言;3 支持異步通信和同步通信;4 支持基于事件驅(qū)動(dòng)的通信。從以上Matlab設(shè)備控制工具箱的特點(diǎn)以及本系統(tǒng)所采用的UART轉(zhuǎn)USB橋接器的特點(diǎn)可以看出:Matlab完全可以滿足本系統(tǒng)實(shí)現(xiàn)基于傳輸?shù)臋C(jī)與單片機(jī)之間通信的要求。1 創(chuàng)建串口設(shè)備對(duì)象并設(shè)置其屬性scom=ser

37、ial('com3'%創(chuàng)建串口3的設(shè)備對(duì)象scomscom.Terminator='CR'%設(shè)置終止符為CR(回車符),缺省為L(zhǎng)F(換行符)scom.InputBufferSize=1024;%輸入緩沖區(qū)為256B,缺省值為512Bscom.OutputBufferSize=1024;%輸出緩沖區(qū)為256B,缺省值為512Bscom.Timeout=0.5;%Y設(shè)置一次讀或?qū)懖僮鞯淖畲笸瓿蓵r(shí)間為0.5s,缺省值為10ss.ReadAsyncMode='continuous'(缺省方式;%在異步通信模式方式下,讀取串口數(shù)據(jù)采用連續(xù)接收數(shù)據(jù)(cont

38、inuous的缺省方式,那么下位機(jī)返回的數(shù)據(jù)會(huì)自動(dòng)地存入輸入緩沖區(qū)中.注意:這些屬性只有在對(duì)象沒(méi)有被打開(kāi)時(shí)才能改變其值,如InputBufferSize、OutputBufferSize屬性等。對(duì)于一個(gè)RS-232/RS-422/RS-485串口設(shè)備對(duì)象,其屬性的缺省值為波特率9 600b/s,異步方式,通信數(shù)據(jù)格式為8位數(shù)據(jù)位,無(wú)奇偶校驗(yàn)位,1位停止位。如果要設(shè)置的串口設(shè)置對(duì)象的屬性值與缺省值的屬性值相同,可以不用另行設(shè)置。另外,設(shè)置串口設(shè)置對(duì)象的屬性也可以用一條指令完成,如:scom=serial('COM1','BaudRate',38400,'P

39、arity','none','DataBits',8,'StopBits',1。也可以用set命令,如set(scom,'BaudRate',19200,'Parity','even'。創(chuàng)建了對(duì)象后可以在Matlab命令窗口直接敲對(duì)象名并回車,看到其基本屬性和當(dāng)前狀態(tài)。若需要知道其全部的屬性,可以用get(scom命令。2 打開(kāi)串口設(shè)備對(duì)象。fopen(scom;3 讀寫串口操作。初始化并打開(kāi)串口調(diào)協(xié)對(duì)象之后,現(xiàn)在可以對(duì)串口設(shè)備對(duì)象進(jìn)行讀寫操作,串口的讀寫操作支持二進(jìn)制和文本(ASCII)兩

40、種方式。當(dāng)Matlab通信數(shù)據(jù)采用西方(ASCII)方式時(shí),讀寫串口設(shè)備的命令分別是fscanf、fpritf;當(dāng)Matlab通信數(shù)據(jù)采用二進(jìn)制方式時(shí),讀寫串口設(shè)備的命令分別是fread、fwrite。下面以二進(jìn)制方式讀寫串口為例:a. 讀串口:out=fread(scom,33,'uint8' %接收單片機(jī)發(fā)送的33個(gè)數(shù)據(jù)(8位),并存入out數(shù)組中.b. 寫串口:fwrite(scom,255;%以二進(jìn)制的方式發(fā)送握手信號(hào)0xFF,缺省為異步通信方式5 關(guān)閉并清除設(shè)備對(duì)象。fclose(scom;%關(guān)閉串口設(shè)備對(duì)象delete(scom;%刪除內(nèi)存中的串口設(shè)備對(duì)象clear

41、 scom; %清除工作空間中的串口設(shè)備對(duì)象當(dāng)不再使用該串口設(shè)備對(duì)象時(shí),順序使用以上3條命令,可以將所創(chuàng)建的串口對(duì)象清除,以免占用系統(tǒng)資源??梢钥闯?,在Matlab中進(jìn)行串行通信是十分方便的,編程較為簡(jiǎn)單。而且,在Matlab中串行通信的失誤率很低,通信較為可靠,也可以采用增加握手信號(hào)以及數(shù)據(jù)校驗(yàn)等的方式進(jìn)一步增加通信的可靠性。在Matlab環(huán)境下,讀取串口數(shù)據(jù)的方式可以分為兩種查詢和中斷。以查詢的方式進(jìn)行串行通信時(shí),如下位單片機(jī)有大量的數(shù)據(jù)分時(shí)分批傳送給PC機(jī),就需要不停查詢串行口的緩沖區(qū),有數(shù)據(jù)就讀取,編程較容易。以中斷的方式對(duì)串口進(jìn)行控制實(shí)現(xiàn)串行通信,就可以實(shí)時(shí)處理下位機(jī)傳送的數(shù)據(jù),但編

42、程復(fù)雜的多,需要采用Matlab的事件和回調(diào)函數(shù)機(jī)制。從本系統(tǒng)數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性和數(shù)量上來(lái)考慮,決定采用查詢方式的通信模式(程序詳見(jiàn)附錄部分)。4.2 USB 設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)USB 系統(tǒng)驅(qū)動(dòng)程序的設(shè)計(jì)是基于WDM(Windows driver model 驅(qū)動(dòng)程序模型的。WDM 采用分層驅(qū)動(dòng)程序模型(見(jiàn)圖10 所示,分為較高級(jí)的USB設(shè)備驅(qū)動(dòng)程序和較低級(jí)的USB 函數(shù)層。其中USB 函數(shù)層由兩部分組成:較高級(jí)的通用串行總線模塊(USBD和較低級(jí)的主控制器驅(qū)動(dòng)程序模塊(HCD。在上述USB 分層模塊中,USB函數(shù)層由WindowsXP 提供,負(fù)責(zé)管理USB 設(shè)備驅(qū)動(dòng)程序和USB 控制器之間的通信

43、,加載及卸載USB 驅(qū)動(dòng)程序,與U S B 設(shè)備通用端點(diǎn)(endpoint建立通信來(lái)執(zhí)行設(shè)備配置、數(shù)據(jù)與USB 協(xié)議框架和打包格式的雙向轉(zhuǎn)換任務(wù)。目前WindowsXP提供了多種USB 設(shè)備驅(qū)動(dòng)程序,但并不針對(duì)數(shù)據(jù)采集設(shè)備,因此需用DDK 開(kāi)發(fā)工具設(shè)計(jì)專用的USB 設(shè)備驅(qū)動(dòng)程序。在本設(shè)計(jì)中由四個(gè)模塊實(shí)現(xiàn):初始化模塊、即插即用管理模塊、電源管理模塊以及I/O功能實(shí)現(xiàn)模塊。初始化模塊提供一個(gè)入口函數(shù)DriverEntry(,所有對(duì)各種IRP(I/O Request Packet,IRP請(qǐng)求包的處理例程都在此入口函數(shù)中做出定義。即插即用管理模塊實(shí)現(xiàn)USB設(shè)備的熱拔插及動(dòng)態(tài)配置。當(dāng)硬件檢測(cè)到USB 設(shè)

44、備接入時(shí),WindowsXP查找響應(yīng)的驅(qū)動(dòng)程序,并調(diào)用它的DriverEntry例程,PnP(即插即用管理器調(diào)用驅(qū)動(dòng)程序的AddDevice例程,告訴它添加了一個(gè)設(shè)備;在此處理過(guò)程中,驅(qū)動(dòng)程序收到一個(gè)設(shè)備啟動(dòng)請(qǐng)求(IRP_MN_START_DEVICE的IRP。同理,當(dāng)要拔除時(shí),PnP管理器會(huì)發(fā)出一個(gè)設(shè)備刪除請(qǐng)求(IRP_MN_REMOVE_DEVICE的IRP,由驅(qū)動(dòng)程序進(jìn)行處理。通過(guò)對(duì)這些PnP 請(qǐng)求的處理,可支持設(shè)備的熱插拔和即插即用功能。電源管理模塊負(fù)責(zé)設(shè)備的掛起與喚醒。I/O功能實(shí)現(xiàn)模塊完成I/O請(qǐng)求的大部分工作。若應(yīng)用程序想對(duì)設(shè)備進(jìn)行I/O操作,它便使用WindowsAPI 函數(shù),

45、 對(duì)WIN32 子系統(tǒng)進(jìn)行WIN32 調(diào)用。此調(diào)用由I/O 系統(tǒng)服務(wù)接收并通知I/O管理器,I/O管理器將此請(qǐng)求構(gòu)造成一個(gè)合適的I/O請(qǐng)求包(IRP并把它傳遞給USB 設(shè)備驅(qū)動(dòng)程序,USB 設(shè)備驅(qū)動(dòng)程序接收到這個(gè)IRP 以后,根據(jù)IRP 中包含的具體操作代碼,構(gòu)造相應(yīng)的USB 請(qǐng)求塊并把此URB(USB 請(qǐng)求塊放到一個(gè)新的IRP中,然后把此IRP 傳遞到USB總線驅(qū)動(dòng)程序,USB總線驅(qū)動(dòng)程序根據(jù)IRP 中所含的URB 執(zhí)行相應(yīng)的操作(如從USB 設(shè)備讀取數(shù)據(jù)等,并把操作結(jié)果通過(guò)IRP 返還給USB設(shè)備驅(qū)動(dòng)程序。USB設(shè)備驅(qū)動(dòng)程序接收到此IRP 后,將操作結(jié)果通過(guò)IRP 返還給I/O 管理器,最

46、后I/O管理器將此IRP中操作結(jié)果返還給應(yīng)用程序,至此應(yīng)用程序?qū)SB設(shè)備的一次I/O操作完成。圖10 USB系統(tǒng)驅(qū)動(dòng)程序?qū)哟侮P(guān)系生4.3 數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì)數(shù)據(jù)采集系統(tǒng)軟件主要是與上位機(jī)的通信以及對(duì)A/D轉(zhuǎn)換器的控制,其程序流程圖如圖11所示。本系統(tǒng)的通信協(xié)議規(guī)定的字符格式為:每一幀的數(shù)據(jù)占10位1位起始位,8位數(shù)據(jù)位,1位停止位,無(wú)奇偶校驗(yàn)位。中間的8位數(shù)據(jù)位即為有效的通信傳輸字節(jié)。雙方的波特率設(shè)置為9600b/s,以較高速度進(jìn)行通信。同時(shí),為了增強(qiáng)通信的可靠性、減少通信的誤碼率,在通信過(guò)程中約定了雙方的軟件握手方法。為了不致使通信過(guò)于復(fù)雜,提高通信速度,可以直接將握手信號(hào)嵌入到數(shù)據(jù)包

47、中。軟件握手協(xié)議規(guī)定如下:PC機(jī)發(fā)送符合握手信號(hào)0xFF給單片機(jī),單片機(jī)接收到的上位機(jī)數(shù)據(jù)若為握手信號(hào)0xFF,則等待上位機(jī)繼續(xù)發(fā)送采樣速率;上位機(jī)發(fā)完采樣速率后,發(fā)送握手結(jié)束信號(hào)0x01給單片機(jī),單片機(jī)接收到握手結(jié)束信號(hào)時(shí)就給上位機(jī)發(fā)送數(shù)據(jù)傳輸開(kāi)始信號(hào)0x00,并開(kāi)始回送A/D采樣數(shù)據(jù)包。每次發(fā)送數(shù)據(jù)的時(shí)間間隔由上位機(jī)所發(fā)來(lái)的采樣速率所決定。單片機(jī)接收到的上位機(jī)數(shù)據(jù)若不是握手信號(hào),則繼續(xù)等待。若PC機(jī)接收到的數(shù)據(jù)包的第1個(gè)字節(jié)不是0x00,則屏棄該數(shù)據(jù)包;若是,則表示握手成功,經(jīng)校驗(yàn)正確后將有效的A/D采樣數(shù)據(jù)信息直接存儲(chǔ)。(程序詳見(jiàn)附錄) 在實(shí)際工作中應(yīng)考慮系統(tǒng)會(huì)受到外界的干擾,而導(dǎo)致采進(jìn)

48、來(lái)的數(shù)據(jù)不真實(shí)。在非連續(xù)的數(shù)據(jù)采集系統(tǒng)中,可以對(duì)某一點(diǎn)實(shí)行多次采集,取平均值來(lái)消除干擾。但本系統(tǒng)設(shè)計(jì)的是一實(shí)時(shí)數(shù)據(jù)采集系統(tǒng),前端信號(hào)變化的實(shí)時(shí)性很強(qiáng),A/D的速率不可能實(shí)現(xiàn)對(duì)一點(diǎn)采集多次的任務(wù)。因此,無(wú)法在軟件設(shè)計(jì)上來(lái)消除干擾,只能在硬件上加入消干擾的信號(hào)處理電路和加強(qiáng)整個(gè)系統(tǒng)運(yùn)行的穩(wěn)定性。A/D轉(zhuǎn)換子程序框圖如圖12所示。圖12 A/D轉(zhuǎn)換子程序框圖圖11 數(shù)據(jù)采集系統(tǒng)程序流程圖5.應(yīng)用實(shí)例5.1 實(shí)例(一). 采集頻率為1Hz的周期矩形脈沖信號(hào)如圖13所示,其幅度為1V,脈沖寬度為20。經(jīng)傅立葉變換后的頻譜結(jié)果如圖14所示。 圖13 周期矩形脈沖信號(hào)采集結(jié)果圖圖14 周期矩形脈沖信號(hào)頻譜圖

49、5.2 實(shí)例(二) 采集頻率為1Hz的周期正弦波信號(hào)如圖15所示,其幅度為1V,偏置電壓2V。由于正弦波是含有正負(fù)電壓的信號(hào),而對(duì)A/D轉(zhuǎn)換器來(lái)說(shuō),小于零的信號(hào)其轉(zhuǎn)換結(jié)果都為零。因此,若正弦波信號(hào)不加偏置電壓,則系統(tǒng)只能采集正弦波的正半周;但加了適當(dāng)?shù)钠秒妷汉螅拐也ㄔ瓉?lái)的負(fù)半周全提升為大于零,這樣系統(tǒng)就能采集到正弦的全波圖。經(jīng)傅立葉變換后信號(hào)的頻譜圖,如圖16所示。圖15 周期正弦波信號(hào)采集結(jié)果圖圖16 周期正弦波信號(hào)頻譜圖6.總結(jié)本設(shè)計(jì)介紹的基于USB傳輸?shù)臄?shù)據(jù)采集及處理系統(tǒng)具有結(jié)構(gòu)簡(jiǎn)單,界面友好,強(qiáng)大的功能可擴(kuò)性等優(yōu)點(diǎn)。本系統(tǒng)經(jīng)過(guò)適當(dāng)?shù)臄U(kuò)展可應(yīng)用于各種環(huán)境下的信號(hào)采集,例如前端信號(hào)采

50、樣電路添加溫度傳感器及處理電路,就可將本系統(tǒng)應(yīng)用于測(cè)溫以及控溫現(xiàn)場(chǎng)。本系統(tǒng)的缺點(diǎn)是選用的A/D轉(zhuǎn)換器的轉(zhuǎn)換速率還不夠快,極大地限制了采樣速率的可調(diào)范圍與步徑。還有,數(shù)據(jù)處理系統(tǒng)已經(jīng)實(shí)現(xiàn)的分析與處理方法種類有限,還不能對(duì)采樣數(shù)據(jù)進(jìn)行更深入地分析和處理。最后,數(shù)據(jù)處理系統(tǒng)的采集數(shù)據(jù)保存缺少數(shù)據(jù)庫(kù)對(duì)其進(jìn)行更有效的管理。致謝首先,衷心地感謝指導(dǎo)老師李方洲副教授對(duì)本畢業(yè)設(shè)計(jì)所提供的巨大幫助和精心指導(dǎo)。其嚴(yán)謹(jǐn)?shù)闹螌W(xué)理念,淵博的學(xué)識(shí),為我營(yíng)造了一種良好的學(xué)習(xí)氛圍。使我不僅接受了全新的思維方式,還掌握了一定的軟硬件實(shí)際設(shè)計(jì)的能力和寫作能力。同時(shí),也將感謝送給宋元平老師及每一位幫助過(guò)我的老師和朋友們!8.參考文

51、獻(xiàn)1. MindShar,Don Anderson,Dave Dzatko著 孟文譯. USB系統(tǒng)體系(第二版).中國(guó)電力出版社.2003年2. 馬偉 編著. 計(jì)算機(jī)USB系統(tǒng)原理及其主/從機(jī)設(shè)計(jì) . 北京航空航天大學(xué)出版社. 2004年3. 許永和 編著. 8051單片機(jī)USB接口程序設(shè)計(jì)(上下冊(cè)) . 北京航空航天大學(xué)出版社 . 2004年4. 阮沈勇,王永利,桑群芳 編. MATLAB程序設(shè)計(jì) . 電子工業(yè)出版社 . 2004年5. Duane Hanselman ,Bruse Littlefield 著 李人厚,張平安等譯校 . 精通MATLAB綜合輔導(dǎo)與指南 西安交通大學(xué)出版社 .

52、1999年6. 梁虹,梁潔,陳躍斌等編著 .信號(hào)與系統(tǒng)分析及MATLAB實(shí)現(xiàn) . 電子工業(yè)出版社 . 2002年7. 余永權(quán),汪明慧,黃英 . 單片機(jī)在控制系統(tǒng)中的應(yīng)用 . 電子工業(yè)出版社 . 2003年8. 李廣弟,朱月秀,王秀山等編著 . 單片機(jī)基礎(chǔ) .北京航空航天大學(xué)出版社 . 2001年9. 胡漢才編著 . 單片機(jī)原理及其接口技術(shù) . 清華大學(xué)出版社 . 2002年10. 華中理工大學(xué)電子學(xué)教研室編,陳大欽主編 . 電子技術(shù)基礎(chǔ)實(shí)驗(yàn)-電子電路實(shí)驗(yàn)·設(shè)計(jì)·仿真(第二版) . 高等教育出版社 . 2000年11. 高傳善,錢松榮,毛迪林編著 . 數(shù)據(jù)通信與計(jì)算機(jī)網(wǎng)絡(luò) .

53、 高等教育出版社 . 2001年9.附錄9.1 數(shù)據(jù)處理子系統(tǒng)程序function varargout = chulisty(varargin% CHULISTY Application M-file for chulisty.fig% FIG = CHULISTY launch chulisty GUI.% CHULISTY('callback_name', . invoke the named callback.% Last Modified by GUIDE v2.0 23-May-2005 18:06:55if nargin = 0 % LAUNCH GUIfig =

54、openfig(mfilename,'reuse'% Generate a structure of handles to pass to callbacks, and store it. handles = guihandles(fig;guidata(fig, handles;if nargout > 0varargout1 = fig;endelseif ischar(varargin1 % INVOKE NAMED SUBFUNCTION OR CALLBACKtryif (nargoutvarargout1:nargout = feval(varargin:;

55、% FEVAL switchyardelsefeval(varargin:; % FEVAL switchyardendcatchdisp(lasterr;endend%| ABOUT CALLBACKS:%| GUIDE automatically appends subfunction prototypes to this file, and %| sets objects' callback properties to call them through the FEVAL %| switchyard above. This comment describes that mech

56、anism.%|%| Each callback subfunction declaration has the following form:%| (H, EVENTDATA, HANDLES, VARARGIN %|%| The subfunction name is composed using the object's Tag and the %| callback type separated by '_', e.g. 'slider2_Callback',%| 'figure1_CloseRequestFcn', 'a

57、xis1_ButtondownFcn'.%|%| H is the callback object's handle (obtained using GCBO.%|%| EVENTDATA is empty, but reserved for future use.%|%| HANDLES is a structure containing handles of components in GUI using%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This%| structure is crea

58、ted at GUI startup using GUIHANDLES and stored in%| the figure's application data using GUIDATA. A copy of the structure%| is passed to each callback. You can store additional information in%| this structure at GUI startup, and you can change the structure%| during callbacks. Call guidata(h, handles after changing your%| copy to replace the stor

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論