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

正文內容

數(shù)字式相位差測量系統(tǒng)基于51單片機資料-文庫吧

2025-06-07 14:41 本頁面


【正文】 提高了測量精度,節(jié)省了硬件成本,而且可以允許變換后的輸入信號有一定程度的失真。第一章:最小二乘法以及快速傅里葉變換簡介:最小二乘法簡介對于兩個相位差為的正弦信號和,利用積化和差公式可得不難看出,合成的信號中包含了二次諧波和直流分量,且直流分量的大小僅和兩信號的相位差和幅值有關系,也就是說,只要能求出該直流分量以及兩個信號幅值的大小,相位差也就可以計算出來了。:傅里葉級數(shù)簡介對于任意滿足狄里赫利收斂條件(即周期函數(shù)的極值點數(shù)目為有限個,間斷點的數(shù)目為有限個,且在一個周期內絕對可積)的周期函數(shù),必定可以展開成一個收斂的傅里葉級數(shù),其形、式為: 利用定積分換元可得 再對該積分離散化得 也就是說,每計算一次諧波大小,需要進行N次復數(shù)乘法運算和N1次復數(shù)加法運算,那么,計算N次諧波的大小則需要N2次復數(shù)乘法運算和N*(N1)次復數(shù)加法運算,如果采樣點數(shù)非常密集,運算需要大量的時間,對于一些實時性要求比較的高的場合,顯然是不能滿足其要求的。 快速傅里葉變換原理介紹1965年。早期時應用比較廣泛的是基二的快速傅里葉變換,后來,因為應用場合的要求,又相繼提出了基四和基八的快速傅里葉變換算法,在此,主要介紹基二的快速傅里葉變換。對于一個N(N=2n)點采樣的信號,我們將其的離散序列 分成奇偶兩組,并且令 ,則k次諧波的大小可表示為利用旋轉因子的對稱性和周期性可得: 再根據(jù)旋轉因子的對稱性可得: 至此,一個N點的離散傅里葉變換就被分解成了兩個點的離散傅里葉變換(DFT),依此類推,兩個點的DFT變換可以分解成四個點的DFT變換,最終可以分解成個兩點的DFT變換。由公式可知,對于兩點的DFT變換 我們把這樣一個兩點的DFT運算稱為蝶形變換,一個蝶形變換需要消耗4次復數(shù)乘法和2次復數(shù)加減。對于一個N點的離散傅里葉變換,蝶形結深度為,而每一級有個蝶形結。所以,一個N點的離散傅里葉變換化簡成基2的快速傅里葉變換后就是*個蝶形結的計算,最終也就是2*N*次復數(shù)乘法運算和N*次復數(shù)加減法運算。以1024點的傅里葉變換為例,DFT算法需要消耗=1048576次復數(shù)乘法運算,需要消耗次復數(shù)加減法運算。而FFT算法僅消耗20480次復數(shù)乘法運算和10240次復數(shù)加減法運算,因此,運算速度得到很大的提高。正常順序二進制十進制位倒序后二進制十進制0000000000111004010201020113110610040011101510151106011311171117在把一個N點的DFT變換化簡成個2點的DFT變換的過程中,因為總是不斷地把一個表1 8點FFT算法位倒敘前后的順序變化采樣序列按奇偶項分成兩個序列,所以離散采樣點順序已經(jīng)不是原來的排序了,例如8點的DFT變換后的序列應該是 0 4 2 6 1 5 3 7,這個排列看起來似乎很亂,沒有什么規(guī)律,但是我們把他寫成二進制的形式,其規(guī)律也就一目了然了,通過雷德算法可以得到位倒敘后的正確排序。第二章:軟件設計 主程序流程圖對AD采樣信號進行冒泡排序,計算正弦信號幅值及被抬高的電壓值并對信號還原對兩路信號進行乘法運算AD,定時器,12864初始化AD采樣完成了? 開始雷德算法對信號序列進行位倒序FFT算法分解出直流分量根據(jù)直流分量大小計算出相位差 送屏幕顯示圖1 主程序流程圖 由表1可以看出,按自然順序排列的二進制數(shù),其下面一個數(shù)總是比上面一個數(shù)大1,下面一個數(shù)是上面一個數(shù)最低位加1并向高位進位得到的。而位倒序數(shù)的下面一個數(shù)是上面一個數(shù)最高位加1并向低位進位得到的。若已知某個位倒序數(shù)J,要求其下一個位倒序數(shù),應判斷J的最高位是否為1,可以與比較。若,則J的最高位為0,只需要將該位變成1即可。若,則J的最高位為1,將該位變?yōu)?,并判斷次高位(與比較),若位0則置1,若位則繼續(xù)與比較,以此類推,其C語言函數(shù)原型為void leide(struct px *value,int num),形參struct px *value為結構體指針,用于傳入待進行倒序運算的復數(shù)序列,形參int num用于傳入待排序的復數(shù)的個數(shù)。 冒泡排序法實現(xiàn)冒泡排序法(Bubble sort)是計算機科學領域比較簡單的一種排序方法,它重復走訪要排列的序列,一次比較兩個序列,如果它們順序錯誤,就把它們交換過來,走訪數(shù)列的工作重復進行,直到?jīng)]有可以交換的序列為止,也就是說該數(shù)列已經(jīng)排序完成,其C語言函數(shù)原型為void Bubble(int *value,uint num),形參int *value是待排序的整數(shù)序列,uint num是待排序的整數(shù)個數(shù)。 FFT算法的實現(xiàn)計算下一個蝶形結改變旋轉因子計算蝶形結級數(shù)級蝶形結都計算完了?計算旋轉因子相同的蝶形結之間的距離計算同一蝶形結中兩個運算數(shù)據(jù)之間的距離給旋轉因子賦初值旋轉因子相同的蝶形結運算完了? 結束圖2 FFT算法程序流程圖 開始FFT算法C語言函數(shù)原型為void FFT(struct px *value,int num),形參struct px *value是結構體指針,用來傳入待進行FFT運算的復數(shù)序列,形參int num用來傳入待運算的復數(shù)的個數(shù)。 AD采樣的使用STC12C5A60S2系列帶AD轉換的單片機的AD轉換口在P1口(),有8路十位高速AD,速度可達250KHZ(25萬次每秒)。八路電壓輸入型AD,可做溫度檢測,鍵盤掃描,頻譜檢測等。上電復位后P1口為弱上拉型I/O口,用戶還可以通過軟件設置將任何一路設置為AD轉換,不需作為AD轉換的口可繼續(xù)做IO口使用。STC12C5A60S2系列單片機的AD是逐次比較型AD。逐次比較型AD由一個比較器和DA轉換器構成,通過逐次比較邏輯,從最高位(MSB)開始,順序得對每一輸入電壓與內置DA轉換器輸出作比較,通過多次比較,使轉換所得的數(shù)字逐次逼近輸入模擬量與對應值,逐次比較型AD具有速度高,功耗低的優(yōu)點。首先,模擬信號要輸入到AD必須要有AD輸入通道,所以先要把復用IO口P1設置為AD輸入,通過對P1ASF寄存器器操作可以實現(xiàn),需要將P1口的哪一位設置為AD輸入,則將P1ASF的該位置一。例如:,其他的作為普通IO口,則將P1ASF設置為0X01。接下來,模擬信號輸入到AD通道以后,要使用AD模塊對其進行轉換,但是AD模塊只有一個,所以同一時刻只能選擇一個通道進行轉換,因此啟動AD轉換之前還必須告訴AD當前要對哪一個通道進行轉換。此外,在啟動轉換之前還要告訴AD模塊基準電壓是多少,轉換速率是多少,以及轉換精度是多少位,這些都設置完成以后就可以啟動AD轉換了。 知道了使用AD模塊需要做的相應的配置,接下來就是具體如何實現(xiàn)這些配置了。首先,通過CH0:CH2可以選擇AD轉換的通道。例如:當CH0:CH2=000是即選擇通道0。AD模塊的電源只能用5V的單片機電源,無法選擇,通過對ADC_POWER置一可以給AD模塊上電,AD轉換的基準電壓就是5V,當不進行AD轉換時,為了省電,要斷掉AD模塊的電源。通過SPEED0和SPEED1兩位可以設置AD的轉換速率,分別可以設置成90,180,360,540個時鐘周期(AD的時鐘基準信號就是單片機的時鐘基準信號)。AD的轉換精度可配置成10位或者8位,默認為 10位,8位轉換精度太低,所以我們直接使用默認的10位精度,增加兩位精度對轉換速率影響并不大。最后,將ADC_START置一就可以啟動AD轉換了。最后,通過查看ADC_FLAG就可以知道AD轉換是否完成了,當ADCFLAG=1時說明AD轉換已經(jīng)完成,可以讀取數(shù)據(jù)了。 ADC轉換完成后,十位的ADC轉換結果從低到高分別存放在ADC_RESL的低2位和ADC_RES中,通過公式可以得到十位的ADC轉換結果,最后,再通過公式:可以計算出當前采樣信號的電壓值。圖3 ADC轉換模塊的構成示意圖 定時器的使用STC12C5A60S2單片機與89C51單片機的定時器類似,不同的是它的定時器時鐘信號可以是是單片機的震蕩周期,也可以是其12分頻(與普通的89C51單片機相同),在本設計中采用定時器0,使其工作在方式1,時鐘信號為震蕩周期的12分頻。因為待測的正弦信號的頻率為50HZ,所以周期為20MS,要再一個周期內完成32次采樣,所以采樣的時間間隔為625uS,所以定時器計數(shù)器的初值為625,初始化完成后,啟動定時器,在定時器的中斷服務程序中進行AD采樣,就可以在每個周期內對信號進行等時間間隔的32點采樣。 12864液晶的使用方法首先,通過RS,RW這兩個引腳的電平,12864可以知道當前寫入的是數(shù)據(jù)還是指令。當RS=0,RW=0時,12864認為當前寫入的是指令。當RS=1,RW=0時,12864認為當前寫入的是數(shù)據(jù),數(shù)據(jù)寫入以后,通過IO口操作,在EN引腳產(chǎn)生一個上升沿來告訴12864數(shù)據(jù)已經(jīng)發(fā)出,讓12864采樣當前接口的數(shù)據(jù)。當然,之前的這些操作都是在12864為空閑的情況下才可以操作的,通過讀取12864接口的最高位的電平就可以判斷當前12864當前是否為空閑。當RS=0,RW=1時,讀取12864當前數(shù)據(jù)接口的值,然后在判斷其最高位的值就可以知道12864的狀態(tài)了。將寫數(shù)據(jù)和寫指令這兩個功能進行封裝,得到數(shù)據(jù)寫和指令寫的函數(shù),函數(shù)原型為void lcd_wcmd(uchar cmd)(寫命令函數(shù))void lcd_wdat(uchar dat)(寫數(shù)據(jù)函數(shù))按一定的順序發(fā)送幾個不同的指令以后可以完成對12864的初始化操作,將該操作封裝好,得到函數(shù)原型為void lcd12864_init()最后,要搞清楚漢字區(qū)在屏幕上的分布情況,再寫入要操作的區(qū)域的坐標,最后寫入要顯示的字符的ASCII值或者漢字的編碼值就可以了,例如,要在第一行第二列顯示一個漢字,只要先寫入指令81H,再寫入該漢字的對應的編碼值即可。通過一定的算法,可以將在屏幕的固定區(qū)域寫入字符和寫入字符串這兩個功能封裝,得到兩個函數(shù)原型如下:void display_12864(uchar x,uchar y,uchar *str)void dischar_12864(uchar x,uchar y,uchar zifu)圖4 12864液晶屏漢字區(qū)分布示意圖 軟件設計部分總結可移植性一直是評價程序好壞的一個很重要的標準,該項目所用到的三個算法全部由個人完成,在算法復雜度盡可能低的情況下,把算法的可
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1