基于聲卡的虛擬示波器設(shè)計(jì)【畢業(yè)論文】_第1頁
基于聲卡的虛擬示波器設(shè)計(jì)【畢業(yè)論文】_第2頁
基于聲卡的虛擬示波器設(shè)計(jì)【畢業(yè)論文】_第3頁
基于聲卡的虛擬示波器設(shè)計(jì)【畢業(yè)論文】_第4頁
基于聲卡的虛擬示波器設(shè)計(jì)【畢業(yè)論文】_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、中北大學(xué)2013屆畢業(yè)設(shè)計(jì)說明書基于聲卡的虛擬示波器設(shè)計(jì)摘 要當(dāng)今的世界正以一種前所未有的速度發(fā)展著,科技的發(fā)展更是日新月異。計(jì)算機(jī)擁有著強(qiáng)大的數(shù)據(jù)處理能力,故而成為人們生活中必不可少的一部分。本文正是利用計(jì)算機(jī)所具有的不可代替的邏輯運(yùn)算能力,使得實(shí)現(xiàn)虛擬儀器的開發(fā)變?yōu)榭赡?,理論上可以設(shè)計(jì)出基于聲卡的虛擬示波器。雖然傳統(tǒng)儀器得到迅猛的發(fā)展,精度越來越高,功能越來越強(qiáng),性能越來越好,但傳統(tǒng)儀器仍然是由廠家設(shè)定好的封閉結(jié)構(gòu),有固定的輸入輸出和儀器操作面板。每種儀器實(shí)現(xiàn)一種特定的功能,并以確定的方式提供給用戶。我國(guó)的高檔儀器主要依賴進(jìn)口,因?yàn)槟壳皣?guó)內(nèi)的技術(shù)水平還不夠成熟,沒有達(dá)到世界先進(jìn)水平,所以試

2、圖研究一種簡(jiǎn)單方便、成本低又能夠滿足需求的虛擬示波器是非常有必要的。聲卡的性能指標(biāo)已經(jīng)非常成熟,擁有非常優(yōu)越的A/D轉(zhuǎn)換性能,再加上LabWindows/CVI的強(qiáng)大的函數(shù)庫(kù)和驅(qū)動(dòng)庫(kù),使得研制虛擬示波器變得更加方便和靈活。本文利用計(jì)算機(jī)聲卡代替?zhèn)鹘y(tǒng)意義上的數(shù)據(jù)采集卡,設(shè)計(jì)了一種雙通道數(shù)字存儲(chǔ)示波器。由于聲卡所能承載的最大電壓是1V,通過聲卡的采集的輸入信號(hào)只能限定在1V以內(nèi)。在這個(gè)前提下,本示波器最高可以達(dá)到44.1KHz的采樣頻率,量化精度是16位?;诼暱ǖ奶摂M示波器通過計(jì)算機(jī)的I/O接口聲卡采集到需要測(cè)量的信號(hào),通過軟件編程對(duì)信號(hào)進(jìn)行運(yùn)算、分析、顯示,可以通過計(jì)算機(jī)的顯示器觀察到設(shè)計(jì)的面

3、板,并且可以通外接設(shè)備(如鼠標(biāo)或鍵盤)對(duì)事先設(shè)計(jì)好的面板進(jìn)行操作,達(dá)到替代傳統(tǒng)儀器的目的。關(guān)鍵詞:虛擬儀器、虛擬示波器、聲卡、LabWindowsThe Design of a Virtual Oscilloscope Based on Sound CardABSTRACTWe are living in a world developing in a speed never seen before, and the development of technology changes with new day. So far, people cannot live without comput

4、ers because of their powerful processing capacity. What we use in this paper is the logically computing power of computers which is irreplaceable, so it makes it possible to develop virtual instruments or a virtual oscilloscope at last. Though traditional instruments have reached a new level, and th

5、ey have got high precision, better function and performance. However, traditional instruments always cannot get rid of close structure, fixed I/O and operation panel. In addition, every instrument offers a fixed function to users in a set way. In our country, we import top grade instruments because

6、we have not grasp this technology which is advanced in the world. So it is necessary to develop a simple and cheap virtual oscilloscope. People have done a lot about PC card which can transform analog signal to digital signal in a unexceptionable mode. Together with powerful function library and dri

7、ve library, it becomes more convenient and versatile. In this paper, we design a two-channel stored digital oscilloscope making use of Sound card instead of traditional data acquisition card. In fact, 1V is the maximum voltage that Sound card can stand, so we must limit the input voltage under 1V. I

8、f the instrument works properly, its sample frequency can reach 44.1 KHz, and its quantification precision is 16 bits. The virtual oscilloscope collect signal from computer input -PC card, and calculate, process, display the signals, and users can operate the panel with external device(mouse or keyb

9、oard) just like using traditional oscilloscope. Key Words:Virtual Instrument, Virtual Oscilloscope, PC card, LabWindows目 錄1 引言11.1 課題研究背景及意義11.2 國(guó)內(nèi)外研究現(xiàn)狀21.3 本文的主要研究?jī)?nèi)容31.4 主要章節(jié)安排41.5 本章小結(jié)42 LabWindows/CVI編程環(huán)境的介紹52.1 LabWindows/CVI簡(jiǎn)介52.2 創(chuàng)建用戶界面52.3 添加相應(yīng)代碼72.4 本章小結(jié)73 虛擬示波器的模塊化設(shè)計(jì)83.1 信號(hào)采集模塊83.2 波形顯示模塊93

10、.3 頻譜分析模塊103.4 波形調(diào)節(jié)模塊113.5 信號(hào)存儲(chǔ)模塊203.6 其他功能模塊213.7 本章小結(jié)214 虛擬示波器實(shí)驗(yàn)驗(yàn)證224.1 光標(biāo)功能驗(yàn)證224.2 頻率精度及范圍驗(yàn)證254.3 移動(dòng)功能驗(yàn)證304.4縮放功能驗(yàn)證324.5 本章小結(jié)335 總結(jié)35參 考 文 獻(xiàn)36致 謝381 引言1.1 課題研究背景及意義虛擬儀器技術(shù)是以各專業(yè)學(xué)科知識(shí)為應(yīng)用背景,以計(jì)算機(jī)軟、硬件技術(shù)為核心,把傳感器技術(shù)、自動(dòng)控制技術(shù)、現(xiàn)代網(wǎng)絡(luò)技術(shù)、現(xiàn)代信號(hào)處理技術(shù)、數(shù)值分析技術(shù)有效整合在一起的現(xiàn)代測(cè)試技術(shù),是目前自動(dòng)測(cè)試與電子測(cè)量?jī)x器技術(shù)發(fā)展的重要方向1,2。它基于個(gè)人電腦的測(cè)控設(shè)備或系統(tǒng),通常由計(jì)

11、算機(jī)、測(cè)控電路模塊和專門應(yīng)用軟件組成,通過人機(jī)交互來完成對(duì)信號(hào)的采集、分析、處理和顯示。虛擬儀器具有性能高、功能強(qiáng)、操作方便、自動(dòng)化程度高、開發(fā)周期短以及易于實(shí)現(xiàn)軟硬件的系統(tǒng)集成和構(gòu)建多用途的測(cè)控系統(tǒng)等優(yōu)點(diǎn)3。其主要任務(wù)是通過軟件將計(jì)算機(jī)硬件與儀器硬件有機(jī)結(jié)合一起,將以前需硬件實(shí)現(xiàn)的相關(guān)技術(shù)通過軟件來實(shí)現(xiàn),完成對(duì)被測(cè)信號(hào)的采集、分析、處理、判斷及顯示等一系列功能。由于虛擬示波器擁有了靈活、迅速和低成本等優(yōu)點(diǎn),使得它逐漸代替了傳統(tǒng)的臺(tái)式儀器4。20世紀(jì)70年代,由于個(gè)人電腦技術(shù)的出現(xiàn),人們開始考慮用電腦來處理傳統(tǒng)儀器測(cè)試的數(shù)據(jù);20世紀(jì)80年代,隨著計(jì)算機(jī)技術(shù)的進(jìn)一步發(fā)展,計(jì)算機(jī)主板上有了多個(gè)擴(kuò)

12、展槽,并出現(xiàn)了插在計(jì)算機(jī)里的數(shù)據(jù)采集卡,這樣的系統(tǒng)已經(jīng)可以進(jìn)行一些簡(jiǎn)單的數(shù)據(jù)采集工作,將采集到的數(shù)據(jù)直接由計(jì)算機(jī)軟件進(jìn)行處理,這就是虛擬儀器技術(shù)的雛形5。憑借電腦強(qiáng)大的運(yùn)算及分析能力,配合相關(guān)的硬件及軟件,組合成自己所需的各種儀器,對(duì)一些信號(hào)(如周期信號(hào))進(jìn)行處理,這正是虛擬儀器的興起6。虛擬示波器是虛擬儀器技術(shù)的應(yīng)用,它使用下位機(jī)采集現(xiàn)場(chǎng)信號(hào),通過接口電路傳輸數(shù)據(jù)到計(jì)算機(jī),再借助強(qiáng)大的監(jiān)控軟件模擬示波器的操作面板,實(shí)現(xiàn)信號(hào)采集、分析、處理、存儲(chǔ)、顯示、打印輸出等功能7,9。世界上第一塊聲卡魔音卡,是由創(chuàng)新公司董事長(zhǎng)沈望傅先生發(fā)明的。這只聲卡在當(dāng)時(shí)引起了一場(chǎng)轟動(dòng)。有的人認(rèn)為,這是一個(gè)很好的開端

13、,因?yàn)镻C終于可以“說話”了,并聯(lián)想到將來多媒體PC的模樣;但另有一些人卻認(rèn)為,這只是一場(chǎng)鬧劇(因?yàn)楫?dāng)時(shí)的聲卡根本不能夠發(fā)出很真實(shí)的聲音)。但是,10年過后,正如前者所預(yù)料的,多媒體PC成了現(xiàn)今的標(biāo)準(zhǔn),每個(gè)人都能利用自己的PC來聽CD、玩有聲游戲、通過Iphone等網(wǎng)絡(luò)電話來交談,幾乎每一樣事情都和PC音頻發(fā)生關(guān)系?,F(xiàn)在看起來,PC如果沒有了聲卡,也就沒有了繽紛多彩的多媒體世界10。聲卡是計(jì)算機(jī)與外部環(huán)境聯(lián)系的重要途徑,作為數(shù)據(jù)采集卡來使用,聲卡可以采集音頻范圍內(nèi)的信號(hào)。麥克風(fēng)輸入的信號(hào)和喇叭輸出的信號(hào)都是模擬信號(hào),而計(jì)算機(jī)所能識(shí)別和處理的信號(hào)都是數(shù)字信號(hào),聲卡的作用之一就是實(shí)現(xiàn)模擬信號(hào)和數(shù)字

14、信號(hào)之間的轉(zhuǎn)換11。聲卡的組成部分主要包括:聲音控制/處理芯片,聲音輸入輸出端口和功放芯片等,其中集成了采樣保持、音效處理、A/D轉(zhuǎn)換、D/A轉(zhuǎn)換等電路的聲音控制/處理芯片是聲卡的核心,它對(duì)聲卡的性能和檔次起到了決定的作用,具有聲波采樣處理MIDI指令和回放控制等基本功能,有些聲音控制/處理芯片還加進(jìn)了合聲、混響、音場(chǎng)調(diào)整等功能12。目前,在多數(shù)院校的電子學(xué)實(shí)驗(yàn)教學(xué)中,常用的仍然是功能固定的臺(tái)式示波器。對(duì)于一所高等院校而言,臺(tái)式示波器成本很高,而且對(duì)于剛接觸的學(xué)生來講,既難以調(diào)試,又容易損壞,使用起來極其不方便,而虛擬示波器是利用計(jì)算機(jī)強(qiáng)大的資源使本來需要硬件實(shí)現(xiàn)的技術(shù)軟件化,以便最大限度的降

15、低系統(tǒng)成本,同時(shí)提高系統(tǒng)的靈活性13。虛擬示波器具有如下優(yōu)點(diǎn):(1)由于虛擬示波器的內(nèi)容豐富,人機(jī)界面好,可以減輕教師的教學(xué)負(fù)擔(dān),加深學(xué)生對(duì)知識(shí)的理解。(2)提高實(shí)驗(yàn)效率,降低教學(xué)成本,參數(shù)輸入簡(jiǎn)便,結(jié)果顯示明確。(3)借助虛擬示波器把儀器與計(jì)算機(jī)相連接,可以充分利用實(shí)驗(yàn)資源14。示波器是科研機(jī)關(guān)、企業(yè)研發(fā)實(shí)驗(yàn)室、大專院所的必備測(cè)量設(shè)備,傳統(tǒng)示波器缺乏相應(yīng)的計(jì)算機(jī)接口配合數(shù)據(jù)采集及數(shù)據(jù)處理比較困難。隨著計(jì)算機(jī)技術(shù)和測(cè)量技術(shù)的發(fā)展,虛擬儀器技術(shù)得到飛快發(fā)展,虛擬示波器系統(tǒng)也就應(yīng)運(yùn)而生15。1.2 國(guó)內(nèi)外研究現(xiàn)狀 測(cè)試儀器已經(jīng)有很久的歷史,早些時(shí)候的一起都是完全的測(cè)試設(shè)備,比如EEG(electr

16、oencephalo- graph 腦電圖描記器)記錄系統(tǒng)和示波器,它們包括電源,傳感器,數(shù)字轉(zhuǎn)換和演示,需要人工的參數(shù)設(shè)置16。然而隨著虛擬儀器技術(shù)的發(fā)展,采用“虛擬儀器”來取代傳統(tǒng)儀器的新的測(cè)控方法正在取代傳統(tǒng)的測(cè)控系統(tǒng),即利用數(shù)據(jù)采集卡、信號(hào)調(diào)理卡或其他計(jì)算機(jī)外圍硬件進(jìn)行信號(hào)的采集與檢測(cè)。然后由計(jì)算機(jī)來實(shí)現(xiàn)對(duì)信號(hào)的處理、計(jì)算和分析以及測(cè)試結(jié)果的顯示17。LabWindows/CVI是基于標(biāo)準(zhǔn)C語言的集成軟件開發(fā)環(huán)境,其開發(fā)虛擬儀器的步驟主要是先確定程序的基本框架,創(chuàng)建用戶界面,然后完成程序代碼的編寫,最后創(chuàng)建工程文件,將程序文件、頭文件、用戶界面文件加入工程中,編譯調(diào)試生成可執(zhí)行文件。虛

17、擬儀器在性能上更具有靈活性用戶可根據(jù)自身需要定制儀器的功能充分體現(xiàn)了它的優(yōu)越性徹底打破了傳統(tǒng)儀器由廠家定義用戶無法改變的模式18,19。1986年,美國(guó)國(guó)家儀器公司(National Instruments Crop.)首先提出了“軟件就是儀器”的概念。將虛擬儀器應(yīng)用于教學(xué)和科研,已成為當(dāng)今的發(fā)展趨勢(shì)。在采樣頻率不是很高的情況下,基于計(jì)算機(jī)聲卡的虛擬示波器將更加便宜和靈活,可以利用聲卡進(jìn)行采樣和輸出,可以實(shí)現(xiàn)自動(dòng)測(cè)量,這一點(diǎn)在LabVIEW(包括LabWindows)上已經(jīng)實(shí)現(xiàn)20?;谟?jì)算機(jī)的虛擬設(shè)備已經(jīng)得到很大發(fā)展,在某些程度可以代替?zhèn)鹘y(tǒng)的儀器儀表測(cè)試。設(shè)備的各個(gè)部分既可以分開工作,又可以

18、協(xié)作,具有很大的靈活性?;诼暱ǖ奶摂M示波器V0.94巧妙地利用電腦聲卡的AD/DA轉(zhuǎn)換電路,把電腦變成一臺(tái)集信號(hào)發(fā)生器、數(shù)字存儲(chǔ)示波器、頻率計(jì)、萬用表等多種功能于一體的儀器。在音頻范圍內(nèi)完全可以替代上述各種測(cè)量?jī)x器,甚至功能更強(qiáng)大21,22。虛擬儀器產(chǎn)業(yè)在國(guó)內(nèi)的現(xiàn)狀和發(fā)展態(tài)勢(shì)不容樂觀。我國(guó)高檔臺(tái)式儀器如數(shù)字示波器主要依靠進(jìn)口,一方面這些儀器加工工藝復(fù)雜、制造水平要求高,生產(chǎn)突破有困難;另一方面,用戶可以將一些先進(jìn)的數(shù)字信號(hào)處理算法應(yīng)用于虛擬儀器的設(shè)計(jì),提供傳統(tǒng)臺(tái)式儀器所不具備的功能,而且完全可以通過軟件配置實(shí)現(xiàn)多功能集成的儀器設(shè)計(jì)23。而且我國(guó)的計(jì)算機(jī)技術(shù)通信電子等產(chǎn)業(yè)的起步比較晚,相對(duì)滯后

19、與歐美國(guó)家,因此我國(guó)對(duì)虛擬儀器的研究起步也比較晚,發(fā)展比較緩慢。一些高等院校和附屬高科技公司,在研究和開發(fā)儀器產(chǎn)品和虛擬式儀器設(shè)計(jì)平臺(tái)以及引進(jìn)消化NI公司、HP公司的產(chǎn)品等方面做了一系列有益工作,取得了一批矚目的成果,部分院校的實(shí)驗(yàn)室引入了虛擬儀器系統(tǒng),上海復(fù)旦大學(xué)、上海交通大學(xué)、廣州暨南大學(xué)、華中理工大學(xué)、四川聯(lián)合大學(xué)等24。近一、兩年來這些學(xué)校在原有的基礎(chǔ)上,又開發(fā)了一批新的虛擬儀器系統(tǒng)用于教學(xué)和科研。其中,華中理工大學(xué)機(jī)械學(xué)院工程測(cè)試實(shí)驗(yàn)室將其開發(fā)成果在網(wǎng)上公開展示。四川聯(lián)合大學(xué)的教師基于虛擬儀器的設(shè)計(jì)思想,研制了航空電臺(tái)二線綜合測(cè)試儀將8臺(tái)儀器集成于一體,組成虛擬儀器系統(tǒng),使用方便、靈

20、活。清華大學(xué)汽車系利用虛擬儀器技術(shù)構(gòu)建的汽車發(fā)動(dòng)機(jī)檢測(cè)系統(tǒng),用于汽車發(fā)動(dòng)機(jī)的出廠檢驗(yàn)。此外,國(guó)內(nèi)己有幾家企業(yè)在研制PC虛擬儀器,哈工大儀器王電子有限責(zé)任公司就是其中之一,它的產(chǎn)品已達(dá)到一定的批量。其主要產(chǎn)品有數(shù)字存儲(chǔ)示波器系列、任意波形發(fā)生器及頻率計(jì)系列、多通道大容量波形記錄儀系列25,26。1.3 本文的主要研究?jī)?nèi)容利用計(jì)算機(jī)聲卡進(jìn)行A/D轉(zhuǎn)換,將待測(cè)電壓信號(hào)轉(zhuǎn)換為數(shù)字量信號(hào),并在LabWindows/CVI下設(shè)計(jì)可視化操作界面,實(shí)時(shí)顯示采集到的信號(hào)及經(jīng)頻譜分析后的曲線,并能對(duì)波形進(jìn)行控制。利用C語言編寫相應(yīng)的代碼,在LabWindows/CVI的環(huán)境下,實(shí)現(xiàn)對(duì)聲卡采集的信號(hào)進(jìn)行顯示、分析、

21、存儲(chǔ)等,實(shí)現(xiàn)對(duì)外界數(shù)據(jù)的采集和處理,模擬傳統(tǒng)示波器的功能,完成基于聲卡的虛擬示波器設(shè)計(jì)。1.4 主要章節(jié)安排本說明書主要包括以下幾個(gè)章節(jié):1)第一章為引言,主要介紹了虛擬儀器(主要是虛擬示波器)的產(chǎn)生的原因以及國(guó)內(nèi)外發(fā)展情況的差距,并簡(jiǎn)單介紹了聲卡的由來,最后簡(jiǎn)要說明了本次設(shè)計(jì)的主要目的和要完成的內(nèi)容。2)第二章介紹如何使用LabWindows/CVI。它作為一門通用測(cè)試系統(tǒng)開發(fā)工具,已經(jīng)為很多工程師和科學(xué)家所接受。所以,通過描述它的使用方法,更容易了解所編程序的步驟和思路。 3)第三章為虛擬示波器的模塊化設(shè)計(jì)。這種將每個(gè)主要的功能分成一個(gè)模塊的方法,使得編程過程中條理清晰,易于發(fā)現(xiàn)錯(cuò)誤,提高

22、工作的效率。其中包括:信號(hào)采集模塊、波形顯示模塊、頻譜分析模塊、波形調(diào)節(jié)模塊、信號(hào)存儲(chǔ)模塊等。4)第四章為實(shí)驗(yàn)驗(yàn)證階段。利用臺(tái)式機(jī)進(jìn)行測(cè)試:利用信號(hào)發(fā)生器產(chǎn)生信號(hào),接入聲卡的Line In輸入端,并且將信號(hào)同時(shí)接到傳統(tǒng)數(shù)字存儲(chǔ)示波器,執(zhí)行程序,將電腦屏幕顯示的波形與示波器顯示波形進(jìn)行比對(duì),以此判斷出本測(cè)試系統(tǒng)的精度。1.5 本章小結(jié)本章簡(jiǎn)單介紹了課題研究的背景和意義,并且對(duì)聲卡的產(chǎn)生歷史、虛擬示波器的國(guó)內(nèi)外研究現(xiàn)狀以及本次課題的主要研究?jī)?nèi)容和組成也做了一些介紹。下一章將對(duì)應(yīng)用軟件LabWindows/CVI進(jìn)行簡(jiǎn)單的描述。2 LabWindows/CVI編程環(huán)境的介紹2.1 LabWindow

23、s/CVI簡(jiǎn)介本次畢業(yè)設(shè)計(jì)首先要了解所用軟件LabWindows/CVI的具體用法,通過對(duì)工具的介紹,逐步過渡到設(shè)計(jì)的思路和具體實(shí)現(xiàn)辦法。LabWindows/CVI是National Instruments公司推出的一套面向測(cè)控領(lǐng)域的軟件開發(fā)平臺(tái),它以ANSI C為核心,將功能強(qiáng)大,使用靈活的C語言平臺(tái)與數(shù)據(jù)采集,分析和表達(dá)的測(cè)控專業(yè)工具有機(jī)地接和起來.它的集成化開發(fā)平臺(tái),交互式編程方法,豐富的控件和庫(kù)函數(shù)大大增強(qiáng)了C語言的功能,為熟悉C語言的開發(fā)人員建立檢測(cè)系統(tǒng)、自動(dòng)測(cè)量環(huán)境、數(shù)據(jù)采集系統(tǒng)、過程監(jiān)控系統(tǒng)等提供了一個(gè)理想的軟件開發(fā)環(huán)境,具有廣闊的開發(fā)前景和市場(chǎng)價(jià)值,正是由于這些優(yōu)點(diǎn),它早就已

24、經(jīng)被許許多多的工程師和科學(xué)家所接受和喜愛,各種關(guān)于虛擬儀器開發(fā)的報(bào)刊和書籍也蜂擁而至,這使得LabWindows/CVI應(yīng)用越來越廣泛。2.2 創(chuàng)建用戶界面一個(gè)良好的交互界面能夠讓用戶對(duì)設(shè)計(jì)者開發(fā)的系統(tǒng)產(chǎn)生更大的興趣,提高工作和學(xué)習(xí)的效率,增加了一種美感,所以這對(duì)于開發(fā)者來說是必須關(guān)注的。打開軟件后,會(huì)出現(xiàn)軟件的許多選項(xiàng),比如:打開、創(chuàng)建等。第一次使用時(shí)點(diǎn)擊創(chuàng)建新的工程,點(diǎn)擊New>Project,如圖2.1,下一次打開進(jìn)入時(shí)可以直接進(jìn)入上次的工程,無需重新創(chuàng)建,就可繼續(xù)未完成的工作。進(jìn)入后點(diǎn)擊File>New>User Interface(*.uir)創(chuàng)建一個(gè)用戶接口文件(

25、*.uir) ,會(huì)出現(xiàn)一個(gè)默認(rèn)的面板,如圖2.2,這樣可以在面板上添加所需部件了。 圖2.1 創(chuàng)建工程 圖2.2創(chuàng)建界面面板創(chuàng)建結(jié)束后,就可以通過右鍵或者點(diǎn)擊工具欄的Create按鈕可以在面板上加入需要的控件,比如:Numeric,Text,Command Button等,如圖2.3。根據(jù)個(gè)人的需要添加后,對(duì)控件的Control進(jìn)行修改(具體的修改方式由個(gè)人需要而定)。比如:修改Graph的橫縱坐標(biāo),修改Command Button的標(biāo)簽,或者加入Ring Dial的索引等等,如圖2.4。圖2.3添加控件圖2.4 對(duì)控件的Control進(jìn)行修改2.3 添加相應(yīng)代碼在這里可以很明顯的看出LabW

26、indows/CVI的強(qiáng)大之處了。這是由于:設(shè)置好界面后,利用LabWindows/CVI可以直接生成代碼框架,對(duì)于每個(gè)填寫Callback function的控件都有生成的函數(shù)框架,另外還有主函數(shù)。從用戶圖形界面窗口中選擇:Code>>Generate>>All Code,如圖2.5,并且會(huì)選擇需要程序停止時(shí)使用哪個(gè)控件,非常的方便和人性化。這個(gè)時(shí)候即使什么都不做了,程序會(huì)顯示設(shè)計(jì)好的界面,并且有停止按鈕,要想實(shí)現(xiàn)設(shè)定好的其他按鈕功能,比如:觸發(fā),光標(biāo)定位等,就需要望函數(shù)中添加代碼。當(dāng)然,一個(gè)復(fù)雜的程序光有生成好的框架是不夠的,還需要通過其他方式,比如多線程編寫部分代

27、碼,能夠使代碼簡(jiǎn)潔,執(zhí)行效率高,更有效利用內(nèi)存。我在程序中寫了一些自己的函數(shù),比如,int MyFunction(void *Data, int Resolution, int NumDataPerChannel, int Stereo)等等。點(diǎn)擊Run>Debug就可以執(zhí)行程序,如果程序正確無誤,就會(huì)成功的執(zhí)行,如圖2.6。 圖2.5 生成代碼 圖2.6 執(zhí)行程序2.4 本章小結(jié)本章首先簡(jiǎn)單介紹了設(shè)計(jì)軟件的環(huán)境-LabWindows/CVI。先簡(jiǎn)單描述下它的功能,這也就是為什么選擇這款軟件的主要原因之一;接下來簡(jiǎn)單描述進(jìn)行虛擬儀器設(shè)計(jì)的一般步驟:設(shè)計(jì)面板,生成并添加代碼,執(zhí)行程序。3

28、虛擬示波器的模塊化設(shè)計(jì)示波器是生產(chǎn)實(shí)踐和科學(xué)實(shí)驗(yàn)等常用的儀器之一,具有不可替代的作用。但是傳統(tǒng)示波器外形笨重,對(duì)使用者要求較高,而且生產(chǎn)傳統(tǒng)的臺(tái)式示波器工藝復(fù)雜、技術(shù)要求比較高、生產(chǎn)成本大,不可能全面推廣到各個(gè)科研和學(xué)習(xí)場(chǎng)所中,這就使得虛擬示波器應(yīng)運(yùn)而生,虛擬示波器相對(duì)傳統(tǒng)示波器有很多的優(yōu)點(diǎn),如表3.1。本文所設(shè)計(jì)的是基于聲卡的虛擬示波器,是在LabWindows/CVI 2009平臺(tái)下實(shí)現(xiàn)的,聲卡是一個(gè)非常優(yōu)秀的音頻信號(hào)采集系統(tǒng),技術(shù)已經(jīng)非常的成熟,其數(shù)字信號(hào)處理器包括模數(shù)變換器ADC(Analogue Digital Converter)和數(shù)模變換器DAC(Digital Analogue

29、 Converter),本文只用到ADC,用于采集音頻信號(hào)。在前人的基礎(chǔ)上,利用前輩們?cè)O(shè)計(jì)好的聲卡驅(qū)動(dòng),實(shí)現(xiàn)信號(hào)的采集和一系列的功能。由于作者的能力有限,只能實(shí)現(xiàn)傳統(tǒng)示波器的基本功能,但對(duì)于基本信號(hào)的測(cè)量和觀測(cè),已經(jīng)能夠滿足普通教學(xué)的需要,能為許多需要它的地方節(jié)省開支和資源。為了方便設(shè)計(jì)和其他需要的朋友閱讀,我采取了模塊化設(shè)計(jì)的方法,其中包括信號(hào)采集模塊、波形顯示模塊、頻譜分析模塊、波形調(diào)節(jié)模塊、信號(hào)存儲(chǔ)模塊以及其他功能模塊等。表3.1 傳統(tǒng)儀器和虛擬儀器對(duì)比 3.1 信號(hào)采集模塊本文的題目是基于聲卡的虛擬示波器,顧名思義,是在聲卡的基礎(chǔ)上設(shè)計(jì)的虛擬示波器,而不是常用的數(shù)據(jù)采集卡(DAQ),自

30、然不能直接運(yùn)用LabWindows/CVI的函數(shù)庫(kù)來實(shí)現(xiàn)。信號(hào)的是從聲卡輸入端接入的,而官方又沒有提供相應(yīng)的驅(qū)動(dòng),所以借用了參考書驅(qū)動(dòng)聲卡的方法28。聲卡的輸入端口有兩個(gè):分別是Line in端口和Mic in端口。Line in端口也就是線形輸入接口,將品質(zhì)較好的聲音、音樂信號(hào)輸入;Mic in端口用于連接麥克風(fēng)(話筒),也就是錄制聲音。但是我們這里只能用Line in,這是由于Mic in具有放大作用,在聲卡的前置放大器中將信號(hào)放大了,而這個(gè)放大倍數(shù)又是不確定的,它受聲卡類型、系統(tǒng)、驅(qū)動(dòng)等的影響。在主函數(shù)中,調(diào)用了聲卡配置函數(shù),用于獲取聲卡的配置信息,包括采樣點(diǎn)數(shù)、采樣位數(shù)、回調(diào)函數(shù)等。在

31、回調(diào)函數(shù)MyFunction()中,首先獲取通道數(shù),然后清除可能存在的曲線(如果事先進(jìn)行了觸發(fā)),接下來利用switch(Resolution)進(jìn)行分辨率的判斷,因?yàn)榇蠖鄶?shù)聲卡的配置都是16位的,本文利用的聲卡也是如此。所以在16位的情況下,判斷聲卡的設(shè)置是不是立體聲,如果是,則進(jìn)行雙聲道采集,將獲取的data也就是離散后的點(diǎn)的值存到相應(yīng)的數(shù)組中,再進(jìn)行接下來的一系列操作。信號(hào)采集是整個(gè)系統(tǒng)設(shè)計(jì)的第一步,是實(shí)現(xiàn)虛擬示波器的基礎(chǔ),只有將信號(hào)采集進(jìn)來之后,才能夠進(jìn)行接下來一系列的工作,比如顯示、傅立葉變換、存儲(chǔ)等等。3.2 波形顯示模塊虛擬示波器界面是人機(jī)交換的唯一途徑,合理的、舒適的界面會(huì)讓用戶

32、感覺到舒適和愉悅,非常有利于工作和學(xué)習(xí),提高效率,所以一個(gè)良好的可視化界面對(duì)于設(shè)計(jì)者來說至關(guān)重要,這直接影響著產(chǎn)品的好壞,直接影響它的推廣度,而LabWindows/CVI恰恰擁有圖形化的界面,可以很方便的在面板上添加所需要的控件,而不需要為了編制圖形控件浪費(fèi)大量的時(shí)間,這為設(shè)計(jì)者提供了一個(gè)很好的展示平臺(tái)。在面板上添加一個(gè)用于圖形顯示的控件,這樣就創(chuàng)建了顯示屏,雙擊它進(jìn)行屬性修改:將Callback function設(shè)置為show(這是回調(diào)函數(shù)的名稱),Bottom X-Axis內(nèi)的最小值和最大值分別設(shè)置為0和1023(這是由于屏幕顯示的是1024個(gè)點(diǎn),每次數(shù)據(jù)更新都是1024個(gè)點(diǎn)同時(shí)更新),

33、Left Y-Axis內(nèi)的最小值和最大值分別設(shè)置為-1和+1(聲卡的輸入范圍是固定的,如果超過1V,可能會(huì)燒壞聲卡)。為了實(shí)現(xiàn)光標(biāo)定位,還需要添加Cursors,在這個(gè)選項(xiàng)中,將光標(biāo)的數(shù)量設(shè)置為2,并且將光標(biāo)的顏色分別設(shè)置為紫色和淺綠色,并將交叉線形設(shè)置為長(zhǎng)交叉(這樣使用起來更方便),其他的可以按照自己的喜好進(jìn)行設(shè)置。在面板上添加一個(gè)用于表示控制開關(guān)的控件,單擊右鍵,將標(biāo)簽改為實(shí)時(shí)顯示,并將Callback function 設(shè)置為realtime_show,默認(rèn)狀態(tài)設(shè)置為on。再設(shè)置三個(gè)用于控制開始、停止和關(guān)閉的三個(gè)控件,分別將標(biāo)簽設(shè)置為開始采集、停止采集、關(guān)閉,顏色大小可以按照自己習(xí)慣的方

34、式。另外,設(shè)置兩個(gè)圓形開關(guān)控件,設(shè)置為通道1和通道2,默認(rèn)狀態(tài)設(shè)置為on。然后對(duì)控件點(diǎn)擊右鍵,選擇Generate Control Callback,生成函數(shù)框架,然后添加函數(shù)功能。在“開始采集”控件中,一旦觸發(fā),先將觸發(fā)模式關(guān)掉,開始采集里面調(diào)用MicStart()函數(shù),My Function()開始工作,信號(hào)采集進(jìn)來,利用if()語句進(jìn)行判斷實(shí)時(shí)顯示按鈕是否被選中,并且保證觸發(fā)沒有工作,通過判斷通道1或2才能將其中的波形顯示到Graph上,如果兩個(gè)通道都沒有被選中,則利用Message Popup()提出警告,“請(qǐng)選擇通道1或通道2”如圖3.1;同樣,停止采集時(shí),調(diào)用MicPause()函

35、數(shù),My Function()停止工作。在realtime_show中,一旦程序執(zhí)行時(shí),開始采集后點(diǎn)擊控件(同時(shí)實(shí)時(shí)顯示),則會(huì)顯示從聲卡讀取到的信號(hào)波形,可以在Graph上實(shí)時(shí)地觀測(cè)到,如圖3.2。 圖3.1 選擇通道 圖3.2 實(shí)時(shí)顯示波形3.3 頻譜分析模塊FFT(fast Fourier transform),即快速傅立葉變換,是一種DFT的高效算法,是一種線性的積分變換,屬于諧波分析,也可用于計(jì)算離散傅里葉變換的逆變換。其算法的原理是通過許多小的更加容易進(jìn)行的變換去實(shí)現(xiàn)大規(guī)模的變換,降低了運(yùn)算要求,提高了運(yùn)算速度??焖俑道锶~變換有廣泛的應(yīng)用,如數(shù)字信號(hào)處理、計(jì)算大整數(shù)乘法、求解偏微分

36、方程等等。本文中并不需要了解復(fù)雜的算法,只需要利用軟件本身設(shè)計(jì)好的函數(shù)就可以,因?yàn)檐浖O(shè)計(jì)者已經(jīng)將復(fù)雜難懂的算法利用程序代碼實(shí)現(xiàn)了,這里再次體現(xiàn)了LabWindows/CVI的優(yōu)越性。在面板上添加一個(gè)選擇控件,標(biāo)簽設(shè)置為FFT計(jì)算,默認(rèn)值設(shè)置為off,Callback function設(shè)置為fft,然后生成函數(shù)框架,在框架中添加一些語句。當(dāng)控件被點(diǎn)擊后,先將面板的實(shí)時(shí)顯示控件、波形相加控件設(shè)置為不選中,F(xiàn)FT計(jì)算控件設(shè)置為選中,并將定義的全局變量real_time_show_mode(實(shí)時(shí)顯示)設(shè)置為0,wave_sum_mode(波形相加)設(shè)置為0,fft_calculate_mode(傅立

37、葉計(jì)算)設(shè)置為1。不僅如此,此時(shí)還要修改顯示縱坐標(biāo),這是由于快速傅立葉變換后,幅值不是采樣點(diǎn)的大小值,只是代表著能量大小的包絡(luò),這里只能說明對(duì)于相應(yīng)信號(hào)進(jìn)行變化后的大致情況,或者說是快速傅立葉變化后的形狀等等。為了能夠描述出變化后的形狀,使用SetAxisScalingMode()函數(shù)設(shè)置變化后的縱坐標(biāo),這里的設(shè)定可以說是完全是為MyFunction()函數(shù)服務(wù)的,信號(hào)采集進(jìn)來之后,進(jìn)行傅立葉變換:首先將采樣點(diǎn)值設(shè)置為FFT的實(shí)部,通過循環(huán)使1024個(gè)點(diǎn)的虛部全部設(shè)定為0,然后利用FFT函數(shù)(FFT (wave, img, NumDataPerChannel),實(shí)現(xiàn)了傅立葉變換,再通過極坐標(biāo)轉(zhuǎn)

38、換函數(shù)ToPolar1D ()計(jì)算出FFT后的幅值大小,再利用畫圖函數(shù)PlotY()將FFT后的波形顯示在Graph上,如圖3.3所示。圖3.3 聲音信號(hào)的快速傅立葉變換3.4 波形調(diào)節(jié)模塊在使用傳統(tǒng)示波器時(shí),很少是只查看原始波形的,大多需要對(duì)采集進(jìn)來的波形進(jìn)行適當(dāng)?shù)恼{(diào)節(jié),比如移動(dòng)、放大等,這樣做的目的是能夠?qū)π盘?hào)信息更加的了解,便于進(jìn)行分析和使用。因此,設(shè)計(jì)虛擬示波器時(shí),必須要考慮到這些波形調(diào)節(jié)的問題,使得它更逼近于傳統(tǒng)示波器,甚至在部分功能上超越傳統(tǒng)示波器,是用戶擁有更佳的操作感受和更多的實(shí)用功能。本次基于聲卡的虛擬示波器設(shè)計(jì)中,波形調(diào)節(jié)模塊包括水平移動(dòng),垂直移動(dòng),水平放大縮小,垂直放大縮

39、小,光標(biāo)定位和觸發(fā)控制,其中水平移動(dòng)和垂直移動(dòng)作為一個(gè)模塊,水平放縮和垂直放縮作為一個(gè)模塊。這些都是用戶在使用傳統(tǒng)示波器常用的功能,對(duì)于使用者來講是必不可少的。當(dāng)然也是本文內(nèi)容的重要環(huán)節(jié),下面按照設(shè)計(jì)的順序逐一敘述。1)水平移動(dòng)和垂直移動(dòng)水平移動(dòng)和垂直移動(dòng)的原理是一樣的,都是通過修改坐標(biāo)來實(shí)現(xiàn)的,只是設(shè)定的移動(dòng)值大小不同而已。單擊右鍵,設(shè)置兩個(gè)旋鈕,分別將標(biāo)簽設(shè)定為水平移動(dòng)和垂直移動(dòng),相當(dāng)于傳統(tǒng)示波器的水平和垂直旋鈕,并將Callback Function分別設(shè)置為horizontal_move和vertical_move。編輯Dial時(shí),點(diǎn)擊Label/Value Pairs:水平移動(dòng)控件添

40、加11個(gè)項(xiàng)目,標(biāo)簽設(shè)置為0-10,對(duì)應(yīng)值是-250250,遞增值是50,并把默認(rèn)標(biāo)簽設(shè)置為5(0);垂直控件同樣添加11個(gè)項(xiàng)目,標(biāo)簽設(shè)置也是0-10,只是對(duì)應(yīng)值是-0.50.5,遞增值是0.1,默認(rèn)標(biāo)簽也設(shè)置為5(0)。這里的50和0.1就是在程序執(zhí)行時(shí)旋轉(zhuǎn)一格旋鈕時(shí)移動(dòng)的大小,是根據(jù)程序的要求設(shè)置的。圖3.4 移動(dòng)波形流程圖在編制程序時(shí),要設(shè)定一個(gè)臨時(shí)值tmp,用于獲取當(dāng)前控件的Value大小,使用GetCtrlVal()語句;然后將這個(gè)值與cur_horizon_move_index(確切地說是上一次旋鈕停在的位置值大小,初始值是5)進(jìn)行比較:如果tmp>cur_horizon_mo

41、ve_index,則說明旋鈕向右旋轉(zhuǎn)調(diào)節(jié)了,表示將圖像向右移動(dòng)(或者向上移動(dòng))為了實(shí)現(xiàn)這個(gè)功能,將坐標(biāo)的值最大值和最小值都減小,利用cur_x_min-=STEP_X來實(shí)現(xiàn),通過SetAxisRange()語句實(shí)現(xiàn);同樣,如果tmp<cur_horizon_move_index,則說明旋鈕向左旋轉(zhuǎn)調(diào)節(jié)了,表示將圖像向左移動(dòng)(或者向下移動(dòng)),實(shí)現(xiàn)的方法類似。值得注意的是,判斷時(shí)cur_x_min和cur_x_max這兩個(gè)坐標(biāo)當(dāng)前最小值和最大值也一定要隨時(shí)修改,判斷完后一定要修改cur_horizon_move_index的值,將它設(shè)置為tmp,如圖3.4。只有這樣才能保證移動(dòng)的正確性,這樣

42、就可以實(shí)現(xiàn)水平和垂直移動(dòng),如圖3.5,3.6,3.7。 圖3.5 原始波形圖3.6 水平移動(dòng)后的波形 圖3.7 垂直移動(dòng)后的波形2)水平縮放和垂直縮放在實(shí)際應(yīng)用中,將圖形放大和縮小狠關(guān)鍵的。很多情況下,用戶會(huì)將波形放大或者縮小:在顯示屏上波形比較密的情況下,需要看清波形是否存在失真,這時(shí)候需要將波形放大;或者顯示屏上顯示的波形不夠一個(gè)周期,需要看清到底是什么樣子的波形,這時(shí)需要將現(xiàn)有的波形進(jìn)行縮小。通過以上類似的處理,能夠獲取更多的數(shù)據(jù)信息和規(guī)律,能夠從整體和局部?jī)蓚€(gè)方面來分析現(xiàn)有的信號(hào),這對(duì)于信號(hào)處理有著非常重要的意義,從而更快更好地完成工作。圖3.8 坐標(biāo)放大,圖像縮小原理圖3.9 坐標(biāo)縮

43、小,圖像放大原理為了與移動(dòng)旋鈕有所區(qū)別,重新選擇兩個(gè)跟移動(dòng)不同的旋鈕,分別將標(biāo)簽設(shè)定為水平縮放和垂直縮放,相當(dāng)于傳統(tǒng)示波器的水平和垂直縮放旋鈕,將Callback Function分別設(shè)置為horizontal_zoom和vertical_zoom。類似地,也要在這兩個(gè)控件上添加標(biāo)簽:編輯Knob時(shí),點(diǎn)擊Label/Value Pairs:水平移動(dòng)控件添加11個(gè)項(xiàng)目,標(biāo)簽設(shè)置為0-10,對(duì)應(yīng)值是1/3232,遞增倍數(shù)是2,并把默認(rèn)標(biāo)簽設(shè)置為1(0)(表示不放大的信號(hào)狀態(tài)),對(duì)于垂直控件同樣如此。雖然實(shí)現(xiàn)縮放時(shí)利用的也是修改坐標(biāo)的方法,但是實(shí)現(xiàn)的方法卻要麻煩點(diǎn):設(shè)定當(dāng)tmp<cur_hor

44、izon_scale_index時(shí)實(shí)現(xiàn)縮小,這時(shí)需要一個(gè)計(jì)算公式(tmp1和tmp2初始值分別是當(dāng)前坐標(biāo)的最大值和最小值,默認(rèn)值是0和1023,也就是原始坐標(biāo)),cur_x_min=tmp1-(tmp2-tmp1)/2.0和 cur_x_max=tmp2+(tmp2-tmp1)/2.0,分別得到新的坐標(biāo)最小值和最大值,如圖3.8,利用上述計(jì)算,可以實(shí)現(xiàn)如下的坐標(biāo)放大,圖像縮小。通過將坐標(biāo)放大實(shí)現(xiàn)圖像縮??;放大時(shí)的原理是一樣的,只是計(jì)算公式不同,設(shè)定當(dāng)tmp>cur_horizon_scale_index時(shí)實(shí)現(xiàn)放大,這時(shí)設(shè)定的最大和最小值分別為cur_x_min=tmp1+(tmp2-tm

45、p1)/4.0和cur_x_max=tmp2-(tmp2-tmp1)/4.0,通過將坐標(biāo)縮小實(shí)現(xiàn)圖像放大,如圖3.9。修改值后,還是利用SetAxisRange()函數(shù)來修改坐標(biāo),同樣要修改cur_horizon_move_index的值,將它設(shè)置為tmp。水平縮放和垂直縮放的原理和計(jì)算公式是完全一樣的,只是具體執(zhí)行的控件不同,以區(qū)分他們的不同功能,如圖3.10,3.11,3.12。圖3.10 初始波形圖3.11 水平放大圖3.12 垂直放大3)光標(biāo)定位光標(biāo)功能對(duì)于使用者來講是非常重要的。因?yàn)槿搜鄣恼`差很大,可以說是極大地浪費(fèi)了示波器的資源,而擁有光標(biāo)功能就使得情況得到改善,因?yàn)樗衙姘迳系哪?/p>

46、點(diǎn)信息數(shù)字化了,我們可以直接讀取數(shù)值的大小就可以了,不但提高了精度,而且使用時(shí)更佳的方便和直觀。對(duì)于測(cè)量工作來說,有著極為重要的意義。本來是打算利用StripChart作為顯示屏,但是StripChart本身并沒有光標(biāo)的功能,在三個(gè)可供選擇的顯示面板中,只有Graph才有光標(biāo)功能,所以只能使用Graph。為了顯示當(dāng)前坐標(biāo)值以及差值,在面板上添加6個(gè)Numeric控件,分別用來代表光標(biāo)1和2的X、Y以及X和Y,并用text控件來修飾它們,但這些控件都只是顯示作用(Control mode都選擇Indicator,精度是double),沒有回調(diào)函數(shù),實(shí)現(xiàn)光標(biāo)定位功能的代碼設(shè)置在Graph中,通過回

47、調(diào)函數(shù)show()實(shí)現(xiàn),只要在程序執(zhí)行時(shí)點(diǎn)擊顯示屏,光標(biāo)功能就生效了,首先通過GetGraphCursor()函數(shù)分別獲取x1、y1、x2、y2的坐標(biāo),再通過公式換算出實(shí)際的時(shí)間大小,顯示在下邊的Numeric上。由于采樣頻率是22.04KHz,所以采樣點(diǎn)的兩點(diǎn)之間的間距是1/22.04K=0.454ms,x的值就是利用0.454*x,y的值需要調(diào)試修改公式,用實(shí)際的信號(hào)接進(jìn)之后才能修改,x和y分別用time_diff=(x1-x2)>0)?(x1-x2):(x2-x1)*0.0454和vlotage_diff=(y1-y2)>0)?(y1-y2):(y2-y1)這兩個(gè)判斷語句來實(shí)

48、現(xiàn),從而保證了結(jié)果是正值,運(yùn)算結(jié)束后,通過SetCtrlVal()語句將結(jié)果顯示到相應(yīng)的Numeric上,實(shí)現(xiàn)了光標(biāo)定位的功能,如圖3.13。圖3.13 光標(biāo)定位功能4)觸發(fā)控制觸發(fā)控制是示波器必不可少的功能。當(dāng)信號(hào)接入示波器后,并不是所有的信號(hào)都是用戶所關(guān)心的,而事實(shí)上周圍必然存在干擾信號(hào),這是無法避免的。這時(shí),研究一種方法可以使得面板上只顯示用戶感興趣的信號(hào)變得十分重要,觸發(fā)就這樣產(chǎn)生了。傳統(tǒng)示波器的觸發(fā)方式有很多種,比如:邊沿觸發(fā)、脈沖觸發(fā)、斜率觸發(fā)、交替觸發(fā)等。本系統(tǒng)只設(shè)計(jì)一種邊沿觸發(fā)方式(包括上升沿觸發(fā)和下降沿觸發(fā)),基本可以滿足一般用戶的需求。 圖3.14 觸發(fā)原理圖3.15 觸發(fā)

49、流程圖觸發(fā)的原理如圖3.14,首先設(shè)置一個(gè)觸發(fā)電平作為基準(zhǔn)電平,當(dāng)采樣點(diǎn)中有一個(gè)點(diǎn)恰好大于觸發(fā)電平,比如圖中的i點(diǎn),而下一個(gè)點(diǎn)又恰好小于觸發(fā)電平,也就是i+1點(diǎn),如果這時(shí)設(shè)定的是下降沿觸發(fā),則觸發(fā)功能生效,顯示當(dāng)前采集到的1024個(gè)點(diǎn);如果兩個(gè)相鄰的點(diǎn)的狀況類似于圖中的j和j+1,而這時(shí)設(shè)置的又是上升沿觸發(fā),則觸發(fā)功能同樣生效,顯示當(dāng)前波形。在具體操作時(shí),在面板上設(shè)置一些控件,包括觸發(fā)的開始、觸發(fā)電平、觸發(fā)模式、觸發(fā)通道等。利用觸發(fā)的基本原理,在設(shè)定好觸發(fā)電平、模式和通道以后,點(diǎn)擊開始觸發(fā),就可以在Graph上看到完整的波形。觸發(fā)電平設(shè)置在1V+1V之間,觸發(fā)模式包括上升沿觸發(fā)和下降沿觸發(fā),可

50、以任意指定通道1或2進(jìn)行觸發(fā),實(shí)現(xiàn)的過程是:從每波采集到的1024個(gè)點(diǎn)中進(jìn)行掃描進(jìn)行判斷,例如是上升沿觸發(fā),觸發(fā)電平是0.5V,觸發(fā)通過時(shí)通道2,則當(dāng)通道2的任意兩個(gè)點(diǎn)之間滿足前一個(gè)點(diǎn)小于0.5V,后一個(gè)點(diǎn)大于0.5V,則滿足了觸發(fā)條件,將這波采集的1024個(gè)點(diǎn)全部實(shí)現(xiàn)出來,實(shí)現(xiàn)了觸發(fā)。圖3.16 觸發(fā)功能實(shí)現(xiàn)觸發(fā)的原理似乎很簡(jiǎn)單,但是用代碼來實(shí)現(xiàn)還是存在難題的。因?yàn)檫M(jìn)行觸發(fā)的時(shí)候,只要沒有滿足觸發(fā)條件,面板上其他的功能是不能受到影響的,這就要保證觸發(fā)模塊時(shí)時(shí)等待著條件的滿足。為了實(shí)現(xiàn)這樣的功能,采用多線程的方法,線程是可由系統(tǒng)調(diào)度的一個(gè)最簡(jiǎn)單的代碼單元,負(fù)責(zé)執(zhí)行包含在進(jìn)程的地址空間中的程序代

51、碼。在LabWindows/CVI中,可以使用CmtScheduleThreadPoolFunctionAdv()函數(shù)創(chuàng)建一個(gè)線程池,就可以不通過主函數(shù)調(diào)用而直接執(zhí)行。在面板上,設(shè)置開始觸發(fā)、觸發(fā)通道、觸發(fā)電平、觸發(fā)模式這幾項(xiàng)功能按鈕。在程序執(zhí)行的情況下,可以設(shè)置觸發(fā)通道(包括通道1和通道2)、設(shè)置觸發(fā)電平(限定在1V以內(nèi))、設(shè)置觸發(fā)模式,設(shè)置完成后,點(diǎn)擊開始觸發(fā),則會(huì)執(zhí)行trigger()函數(shù),獲取當(dāng)前值:如果獲取值為1,刪除目前顯示的波形,將其它控件都激活,設(shè)置目前事件為1;如果為獲取值為0,則停止觸發(fā)相關(guān)控件的激活狀態(tài)。相關(guān)工作完成后,觸發(fā)條件得到滿足,進(jìn)行一系列的判斷,如圖3.15。先

52、進(jìn)行觸發(fā)模式的判斷,再進(jìn)行觸發(fā)通道的判斷,當(dāng)滿足相應(yīng)的條件時(shí),則會(huì)顯示這波圖形,如圖3.16。圖3.17 讀取存儲(chǔ)信息3.5 信號(hào)存儲(chǔ)模塊相對(duì)于傳統(tǒng)示波器,虛擬示波器的存儲(chǔ)更加的方便,無須另外插入U(xiǎn)SB存儲(chǔ)設(shè)備而是直接可以將信號(hào)存儲(chǔ)到硬盤中,并且可以隨時(shí)打開。為了實(shí)現(xiàn)信號(hào)存儲(chǔ),在程序的開始就創(chuàng)建了一個(gè)以系統(tǒng)時(shí)間為名稱的txt文本文件,利用GetSystemTime()函數(shù)獲取系統(tǒng)實(shí)時(shí)時(shí)間,并作為數(shù)據(jù)源寫到字符串?dāng)?shù)組中,再使用Fmt()函數(shù)通過“%s-%s-%s.txt”的格式創(chuàng)建文本名稱,放到fileName數(shù)組中,然后打開相應(yīng)的文件,將“通道1”和“通道2”先寫到文本中,以便后來察看存儲(chǔ)文件

53、時(shí)能夠分得出兩個(gè)通道的信號(hào)。點(diǎn)擊開始采集后,信號(hào)就從聲卡輸入端讀了進(jìn)來,如果判斷文件存儲(chǔ)模塊被選中,則將采集到的數(shù)據(jù)點(diǎn)寫到數(shù)組,經(jīng)過1024個(gè)循環(huán)就將這一波數(shù)存儲(chǔ)到了相應(yīng)的文件中。為了豐富本系統(tǒng)的功能,實(shí)現(xiàn)用戶在安裝好發(fā)布文件后直接可以打開存儲(chǔ)文件,不再需要通過打開驅(qū)動(dòng)器才能打開相應(yīng)文件,所以開發(fā)了簡(jiǎn)單方便的打開文件功能。在桌面設(shè)置Ring、String、Command Button和Tree四個(gè)空間,分別用來作為驅(qū)動(dòng)器選擇、路徑選擇、打開和瀏覽數(shù)據(jù),相應(yīng)的回調(diào)函數(shù)分別是drive、path、open(Tree沒有回調(diào)函數(shù))。生成函數(shù)框架后,為了方便,手動(dòng)編寫drivevolume()函數(shù)以供

54、調(diào)用。在drivevolume()函數(shù)中,通過GetDrive()函數(shù)獲取驅(qū)動(dòng)器個(gè)數(shù),然后利用循環(huán)分別為各個(gè)盤符命名,從C開始,依次遞增,并將其顯示在Ring_3控件中,而且能夠判斷新插入的外界設(shè)備,比如優(yōu)盤。然后在相應(yīng)的回調(diào)函數(shù)中添加相應(yīng)代碼:在drive()函數(shù)中,首先調(diào)用drivevolume()函數(shù),判斷所選的盤符,并將其顯示在String控件(作為路徑)上,并設(shè)定可通過鍵盤進(jìn)行輸入,設(shè)置文件瀏覽屬性,實(shí)現(xiàn)瀏覽驅(qū)動(dòng)器下的文件;在path()函數(shù)中,獲取當(dāng)前路徑,并更新文件瀏覽目錄;在open()函數(shù)中,利用默認(rèn)方式打開相應(yīng)的文件。通過以上步驟,完成了打開存儲(chǔ)文件的功能,如圖3.17。3

55、.6 其他功能模塊 在程序設(shè)計(jì)的尾聲階段,為了能夠更好地分析采樣信號(hào)的結(jié)構(gòu),所以添加了一些小功能,比如最值的獲取、信號(hào)頻率等。利用analysis.h中的MaxMin1D()函數(shù)可以將采集到的信號(hào)進(jìn)行分析,從中得到最大值最小值和它們的位置,但本文只需要得到數(shù)值的大小,并利用NUMERIC控件在面板上顯示出來,只要信號(hào)采集進(jìn)來,無論在面板上顯示與否,最值總是可以被計(jì)算出。同時(shí)設(shè)計(jì)了信號(hào)頻率按鈕,因?yàn)楸鞠到y(tǒng)地FFT過于粗糙,只能大致的看出波形,卻不能計(jì)算出信號(hào)的頻率,但這同樣需要利用光標(biāo)功能,只是光標(biāo)功能的延伸罷了,比如:當(dāng)檢測(cè)正弦波的時(shí)候,將兩個(gè)光標(biāo)分別指在兩個(gè)波峰時(shí),就可以算出這個(gè)正弦波的頻率

56、,其實(shí)就是利用將兩個(gè)點(diǎn)的橫坐標(biāo)之差的倒數(shù)顯示即可。另外,設(shè)定了采樣點(diǎn)數(shù)的控件,原理是將顯示面板的橫坐標(biāo)進(jìn)行修改,可以滿足實(shí)時(shí)顯示時(shí)對(duì)顯示點(diǎn)數(shù)的修改,實(shí)現(xiàn)采樣點(diǎn)數(shù)的控制。3.7 本章小結(jié) 本章是論文中最主要的部分,利用模塊化的設(shè)計(jì)方法,將信號(hào)的采集、分析和處理更加詳細(xì)地進(jìn)行分析。這部分細(xì)化為信號(hào)采集模塊、波形顯示模塊、頻譜分析模塊、波形調(diào)節(jié)模塊、信號(hào)存儲(chǔ)模塊和其他功能模塊,每部分都具體地闡述了設(shè)計(jì)的思路和具體函數(shù)執(zhí)行的步驟,并且通過流程圖和表格的形式解釋說明,每個(gè)模塊最后執(zhí)行的結(jié)果使用截圖保存下來,用來說明設(shè)計(jì)的合理性??傊康乃悸泛徒Y(jié)果都在本章得到呈現(xiàn),完成了基于聲卡的虛擬示波器設(shè)計(jì)。4

57、虛擬示波器實(shí)驗(yàn)驗(yàn)證無論在設(shè)計(jì)時(shí)考慮的多么周到,總會(huì)有一些問題是我們意想不到的,這就需要我們反復(fù)不斷的實(shí)驗(yàn),在實(shí)驗(yàn)的過程中找到缺陷所在并及時(shí)改正,以此來將本系統(tǒng)更加的完善和保證其合理性。實(shí)驗(yàn)的儀器包括信號(hào)發(fā)生器、示波器、裝有LabWindows/CVI軟件的臺(tái)式機(jī),利用信號(hào)發(fā)生器產(chǎn)生信號(hào),分別接入示波器和臺(tái)式機(jī)聲卡的Line in口,運(yùn)行程序,比較兩個(gè)屏幕產(chǎn)生的波形,由于虛擬示波器的兩個(gè)通道具有相同效果,所以只選擇了通道1進(jìn)行測(cè)試。4.1 光標(biāo)功能驗(yàn)證光標(biāo)功能是驗(yàn)證的關(guān)鍵,合理實(shí)用的光標(biāo)可以確定波形的任何一點(diǎn)的信息,包括幅值和相對(duì)時(shí)間。而前面設(shè)計(jì)的許多功能都是利用光標(biāo)功能實(shí)現(xiàn)的,比如,峰峰值檢測(cè)

58、、周期測(cè)試等。通過多次測(cè)量數(shù)據(jù)的方法進(jìn)行統(tǒng)計(jì),然后求平均值算出平均誤差大概是多少,由此可以判斷出本系統(tǒng)的精度。1)峰峰值驗(yàn)證實(shí)驗(yàn)中使用的是正弦波,只要取任意波峰和波谷(或者說是所取正弦波的最大值和最小值),就可以檢測(cè)到波形的峰峰值,然后記錄多組數(shù)據(jù),統(tǒng)計(jì)分析誤差究竟是多少,如表4.1。圖4.1、4.2就是記錄下臺(tái)式機(jī)顯示屏上的數(shù)據(jù)同傳統(tǒng)示波器的值進(jìn)行的對(duì)比圖。表4.1 峰值檢測(cè)判斷誤差圖4.1 傳統(tǒng)示波器檢測(cè)到峰峰值為1V的正弦波圖4.2 通過對(duì)比峰峰值檢測(cè)測(cè)試根據(jù)表格4.1記錄的數(shù)據(jù),通過以下式子求平均值:(2.85+0.00+2.44+1.00+0.83+0.68+1.20+0.55)÷8=1.19,根據(jù)算式得到的結(jié)果,可得誤差值為1.19%,也就是峰峰值檢測(cè)精度。2)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論