freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于聲卡的虛擬示波器設(shè)計論文(編輯修改稿)

2025-07-20 02:52 本頁面
 

【文章內(nèi)容簡介】 ,而這個放大倍數(shù)又是不確定的,它受聲卡類型、系統(tǒng)、驅(qū)動等的影響。在主函數(shù)中,調(diào)用了聲卡配置函數(shù),用于獲取聲卡的配置信息,包括采樣點(diǎn)數(shù)、采樣位數(shù)、回調(diào)函數(shù)等。在回調(diào)函數(shù)MyFunction()中,首先獲取通道數(shù),然后清除可能存在的曲線(如果事先進(jìn)行了觸發(fā)),接下來利用switch(Resolution)進(jìn)行分辨率的判斷,因為大多數(shù)聲卡的配置都是16位的,本文利用的聲卡也是如此。所以在16位的情況下,判斷聲卡的設(shè)置是不是立體聲,如果是,則進(jìn)行雙聲道采集,將獲取的data—也就是離散后的點(diǎn)的值存到相應(yīng)的數(shù)組中,再進(jìn)行接下來的一系列操作。信號采集是整個系統(tǒng)設(shè)計的第一步,是實現(xiàn)虛擬示波器的基礎(chǔ),只有將信號采集進(jìn)來之后,才能夠進(jìn)行接下來一系列的工作,比如顯示、傅立葉變換、存儲等等。 波形顯示模塊虛擬示波器界面是人機(jī)交換的唯一途徑,合理的、舒適的界面會讓用戶感覺到舒適和愉悅,非常有利于工作和學(xué)習(xí),提高效率,所以一個良好的可視化界面對于設(shè)計者來說至關(guān)重要,這直接影響著產(chǎn)品的好壞,直接影響它的推廣度,而LabWindows/CVI恰恰擁有圖形化的界面,可以很方便的在面板上添加所需要的控件,而不需要為了編制圖形控件浪費(fèi)大量的時間,這為設(shè)計者提供了一個很好的展示平臺。在面板上添加一個用于圖形顯示的控件,這樣就創(chuàng)建了顯示屏,雙擊它進(jìn)行屬性修改:將Callback function設(shè)置為show(這是回調(diào)函數(shù)的名稱),Bottom XAxis內(nèi)的最小值和最大值分別設(shè)置為0和1023(這是由于屏幕顯示的是1024個點(diǎn),每次數(shù)據(jù)更新都是1024個點(diǎn)同時更新),Left YAxis內(nèi)的最小值和最大值分別設(shè)置為1和+1(聲卡的輸入范圍是固定的,如果超過1V,可能會燒壞聲卡)。為了實現(xiàn)光標(biāo)定位,還需要添加Cursors,在這個選項中,將光標(biāo)的數(shù)量設(shè)置為2,并且將光標(biāo)的顏色分別設(shè)置為紫色和淺綠色,并將交叉線形設(shè)置為長交叉(這樣使用起來更方便),其他的可以按照自己的喜好進(jìn)行設(shè)置。在面板上添加一個用于表示控制開關(guān)的控件,單擊右鍵,將標(biāo)簽改為實時顯示,并將Callback function 設(shè)置為realtime_show,默認(rèn)狀態(tài)設(shè)置為on。再設(shè)置三個用于控制開始、停止和關(guān)閉的三個控件,分別將標(biāo)簽設(shè)置為開始采集、停止采集、關(guān)閉,顏色大小可以按照自己習(xí)慣的方式。另外,設(shè)置兩個圓形開關(guān)控件,設(shè)置為通道1和通道2,默認(rèn)狀態(tài)設(shè)置為on。然后對控件點(diǎn)擊右鍵,選擇Generate Control Callback,生成函數(shù)框架,然后添加函數(shù)功能。在“開始采集”控件中,一旦觸發(fā),先將觸發(fā)模式關(guān)掉,開始采集里面調(diào)用MicStart()函數(shù),My Function()開始工作,信號采集進(jìn)來,利用if()語句進(jìn)行判斷實時顯示按鈕是否被選中,并且保證觸發(fā)沒有工作,通過判斷通道1或2才能將其中的波形顯示到Graph上,如果兩個通道都沒有被選中,則利用Message Popup()提出警告,“請選擇通道1或通道2”;同樣,停止采集時,調(diào)用MicPause()函數(shù),My Function()停止工作。在realtime_show中,一旦程序執(zhí)行時,開始采集后點(diǎn)擊控件(同時實時顯示),則會顯示從聲卡讀取到的信號波形,可以在Graph上實時地觀測到。 選擇通道 實時顯示波形 頻譜分析模塊FFT(fast Fourier transform),即快速傅立葉變換,是一種DFT的高效算法,是一種線性的積分變換,屬于諧波分析,也可用于計算離散傅里葉變換的逆變換。其算法的原理是通過許多小的更加容易進(jìn)行的變換去實現(xiàn)大規(guī)模的變換,降低了運(yùn)算要求,提高了運(yùn)算速度??焖俑道锶~變換有廣泛的應(yīng)用,如數(shù)字信號處理、計算大整數(shù)乘法、求解偏微分方程等等。本文中并不需要了解復(fù)雜的算法,只需要利用軟件本身設(shè)計好的函數(shù)就可以,因為軟件設(shè)計者已經(jīng)將復(fù)雜難懂的算法利用程序代碼實現(xiàn)了,這里再次體現(xiàn)了LabWindows/CVI的優(yōu)越性。在面板上添加一個選擇控件,標(biāo)簽設(shè)置為FFT計算,默認(rèn)值設(shè)置為off,Callback function設(shè)置為fft,然后生成函數(shù)框架,在框架中添加一些語句。當(dāng)控件被點(diǎn)擊后,先將面板的實時顯示控件、波形相加控件設(shè)置為不選中,F(xiàn)FT計算控件設(shè)置為選中,并將定義的全局變量real_time_show_mode(實時顯示)設(shè)置為0,wave_sum_mode(波形相加)設(shè)置為0,fft_calculate_mode(傅立葉計算)設(shè)置為1。不僅如此,此時還要修改顯示縱坐標(biāo),這是由于快速傅立葉變換后,幅值不是采樣點(diǎn)的大小值,只是代表著能量大小的包絡(luò),這里只能說明對于相應(yīng)信號進(jìn)行變化后的大致情況,或者說是快速傅立葉變化后的形狀等等。為了能夠描述出變化后的形狀,使用SetAxisScalingMode()函數(shù)設(shè)置變化后的縱坐標(biāo),這里的設(shè)定可以說是完全是為MyFunction()函數(shù)服務(wù)的,信號采集進(jìn)來之后,進(jìn)行傅立葉變換:首先將采樣點(diǎn)值設(shè)置為FFT的實部,通過循環(huán)使1024個點(diǎn)的虛部全部設(shè)定為0,然后利用FFT函數(shù)(FFT (wave, img, NumDataPerChannel)),實現(xiàn)了傅立葉變換,再通過極坐標(biāo)轉(zhuǎn)換函數(shù)ToPolar1D ()計算出FFT后的幅值大小,再利用畫圖函數(shù)PlotY()將FFT后的波形顯示在Graph上。 聲音信號的快速傅立葉變換 波形調(diào)節(jié)模塊在使用傳統(tǒng)示波器時,很少是只查看原始波形的,大多需要對采集進(jìn)來的波形進(jìn)行適當(dāng)?shù)恼{(diào)節(jié),比如移動、放大等,這樣做的目的是能夠?qū)π盘栃畔⒏拥牧私猓阌谶M(jìn)行分析和使用。因此,設(shè)計虛擬示波器時,必須要考慮到這些波形調(diào)節(jié)的問題,使得它更逼近于傳統(tǒng)示波器,甚至在部分功能上超越傳統(tǒng)示波器,是用戶擁有更佳的操作感受和更多的實用功能。本次基于聲卡的虛擬示波器設(shè)計中,波形調(diào)節(jié)模塊包括水平移動,垂直移動,水平放大縮小,垂直放大縮小,光標(biāo)定位和觸發(fā)控制,其中水平移動和垂直移動作為一個模塊,水平放縮和垂直放縮作為一個模塊。這些都是用戶在使用傳統(tǒng)示波器常用的功能,對于使用者來講是必不可少的。當(dāng)然也是本文內(nèi)容的重要環(huán)節(jié),下面按照設(shè)計的順序逐一敘述。1)水平移動和垂直移動水平移動和垂直移動的原理是一樣的,都是通過修改坐標(biāo)來實現(xiàn)的,只是設(shè)定的移動值大小不同而已。單擊右鍵,設(shè)置兩個旋鈕,分別將標(biāo)簽設(shè)定為水平移動和垂直移動,相當(dāng)于傳統(tǒng)示波器的水平和垂直旋鈕,并將Callback Function分別設(shè)置為horizontal_move和vertical_move。編輯Dial時,點(diǎn)擊Label/Value Pairs…:水平移動控件添加11個項目,標(biāo)簽設(shè)置為010,對應(yīng)值是250~250,遞增值是50,并把默認(rèn)標(biāo)簽設(shè)置為5(0);垂直控件同樣添加11個項目,標(biāo)簽設(shè)置也是010,~,默認(rèn)標(biāo)簽也設(shè)置為5(0)。,是根據(jù)程序的要求設(shè)置的。 移動波形流程圖在編制程序時,要設(shè)定一個臨時值tmp,用于獲取當(dāng)前控件的Value大小,使用GetCtrlVal()語句;然后將這個值與cur_horizon_move_index(確切地說是上一次旋鈕停在的位置值大小,初始值是5)進(jìn)行比較:如果tmpcur_horizon_move_index,則說明旋鈕向右旋轉(zhuǎn)調(diào)節(jié)了,表示將圖像向右移動(或者向上移動)為了實現(xiàn)這個功能,將坐標(biāo)的值最大值和最小值都減小,利用cur_x_min=STEP_X來實現(xiàn),通過SetAxisRange()語句實現(xiàn);同樣,如果tmpcur_horizon_move_index,則說明旋鈕向左旋轉(zhuǎn)調(diào)節(jié)了,表示將圖像向左移動(或者向下移動),實現(xiàn)的方法類似。值得注意的是,判斷時cur_x_min和cur_x_max這兩個坐標(biāo)當(dāng)前最小值和最大值也一定要隨時修改,判斷完后一定要修改cur_horizon_move_index的值,將它設(shè)置為tmp。只有這樣才能保證移動的正確性,這樣就可以實現(xiàn)水平和垂直移動,,。 原始波形 水平移動后的波形 垂直移動后的波形2)水平縮放和垂直縮放在實際應(yīng)用中,將圖形放大和縮小狠關(guān)鍵的。很多情況下,用戶會將波形放大或者縮?。涸陲@示屏上波形比較密的情況下,需要看清波形是否存在失真,這時候需要將波形放大;或者顯示屏上顯示的波形不夠一個周期,需要看清到底是什么樣子的波形,這時需要將現(xiàn)有的波形進(jìn)行縮小。通過以上類似的處理,能夠獲取更多的數(shù)據(jù)信息和規(guī)律,能夠從整體和局部兩個方面來分析現(xiàn)有的信號,這對于信號處理有著非常重要的意義,從而更快更好地完成工作。 坐標(biāo)放大,圖像縮小原理 坐標(biāo)縮小,圖像放大原理為了與移動旋鈕有所區(qū)別,重新選擇兩個跟移動不同的旋鈕,分別將標(biāo)簽設(shè)定為水平縮放和垂直縮放,相當(dāng)于傳統(tǒng)示波器的水平和垂直縮放旋鈕,將Callback Function分別設(shè)置為horizontal_zoom和vertical_zoom。類似地,也要在這兩個控件上添加標(biāo)簽:編輯Knob時,點(diǎn)擊Label/Value Pairs…:水平移動控件添加11個項目,標(biāo)簽設(shè)置為010,對應(yīng)值是1/32~32,遞增倍數(shù)是2,并把默認(rèn)標(biāo)簽設(shè)置為1(0)(表示不放大的信號狀態(tài)),對于垂直控件同樣如此。雖然實現(xiàn)縮放時利用的也是修改坐標(biāo)的方法,但是實現(xiàn)的方法卻要麻煩點(diǎn):設(shè)定當(dāng)tmpcur_horizon_scale_index時實現(xiàn)縮小,這時需要一個計算公式(tmp1和tmp2初始值分別是當(dāng)前坐標(biāo)的最大值和最小值,默認(rèn)值是0和1023,也就是原始坐標(biāo)),cur_x_min=tmp1(tmp2tmp1)/ cur_x_max=tmp2+(tmp2tmp1)/,分別得到新的坐標(biāo)最小值和最大值,利用上述計算,可以實現(xiàn)如下的坐標(biāo)放大,圖像縮小。通過將坐標(biāo)放大實現(xiàn)圖像縮??;放大時的原理是一樣的,只是計算公式不同,設(shè)定當(dāng)tmpcur_horizon_scale_index時實現(xiàn)放大,這時設(shè)定的最大和最小值分別為cur_x_min=tmp1+(tmp2tmp1)/=tmp2(tmp2tmp1)/,通過將坐標(biāo)縮小實現(xiàn)圖像放大。修改值后,還是利用SetAxisRange()函數(shù)來修改坐標(biāo),同樣要修改cur_horizon_move_index的值,將它設(shè)置為tmp。水平縮放和垂直縮放的原理和計算公式是完全一樣的,只是具體執(zhí)行的控件不同,以區(qū)分他們的不同功能,,。 初始波形 水平放大 垂直放大3)光標(biāo)定位光標(biāo)功能對于使用者來講是非常重要的。因為人眼的誤差很大,可以說是極大地浪費(fèi)了示波器的資源,而擁有光標(biāo)功能就使得情況得到改善,因為它把面板上的某點(diǎn)信息數(shù)字
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1