版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 題目:射頻信號相位分析與測量軟件模塊設(shè)計</p><p><b> 設(shè)計目的簡介</b></p><p> 1、通過本課程設(shè)計的學(xué)習(xí),學(xué)生將復(fù)習(xí)所學(xué)的專業(yè)知識,使課堂學(xué)習(xí)的理論知識應(yīng)用于實踐,通過本課程設(shè)計的實踐使學(xué)生具有一定的實踐操作能力;</p><p> 2、掌握C語言的編程方法,能熟練運用;</p>
2、;<p> 3、通過軟件信息處理實踐的課程設(shè)計,掌握設(shè)計信息處理系統(tǒng)的思維方法和基本開發(fā)過程。</p><p> 二、設(shè)計主要方案及理論介紹</p><p><b> 方案: </b></p><p> 設(shè)計一個基于單片機或WINDOW的小程序,實現(xiàn)輪詢結(jié)構(gòu)的嵌入式程序。通過按鍵控制(模擬的)單片機產(chǎn)生模擬的LMK0
3、3000串行總線時序控制信號</p><p><b> 理論介紹:</b></p><p> 1、嵌入式系統(tǒng)程序結(jié)構(gòu):嵌入式系統(tǒng)通常執(zhí)行的是帶有特定要求的預(yù)先定義的任務(wù),嵌入式系統(tǒng)一般指非PC系統(tǒng),它包括硬件和軟件兩部分。硬件包括處理器/微處理器、存儲器及外設(shè)器件和I/O端口、圖形控制器等。軟件部分包括操作系統(tǒng)軟件(OS)(要求實時和多任務(wù)操作)和應(yīng)用程序編程。&
4、lt;/p><p> 2、輪詢程序:輪詢(Polling)I/O方式或程序控制I/O方式,是讓CPU以一定 的周期按次序查詢每一個外設(shè),看它是否有數(shù)據(jù)輸入或輸出的要求,若有,則進行相應(yīng)的輸入/輸出服務(wù);若無,或I/O處理完畢柏,CPU就接著查詢下一個外設(shè)。</p><p> 3、鍵抖動:當(dāng)機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一
5、下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動</p><p> 4、SPI串行總線時序:(SPI是Serial Peripheral interface的縮寫,顧名思義就是串行外圍設(shè)備接口)</p><p> 5、延時子程序:例如單片機1ms延時程序</p><p> void delay1ms( unsigned int i)</p>
6、<p><b> { </b></p><p> unsigned char j;</p><p> while( i )</p><p><b> { </b></p><p> for ( j=0;j<115;j++) ; </p><p>&l
7、t;b> }</b></p><p><b> }</b></p><p> 6、時鐘:時鐘信號是時序邏輯的基礎(chǔ),它用于決定邏輯單元中的狀態(tài)何時更新。時鐘信號是指有固定周期并與運行無關(guān)的信號量,時鐘頻率(clock frequency,CF)是時鐘周期的倒數(shù)。</p><p> 7、時鐘抖動:時鐘抖動是時鐘沿距離其理想
8、位置的偏離時鐘抖動通常分為時間間隔誤差(Time Interval Error,簡稱TIE),周期抖動(Period Jitter)和相鄰周期抖動(cycle to cycle jitter)三種抖動。</p><p> 8、PLL: Phase Locked Loop 鎖相環(huán)</p><p> 9、VCO:Voltage controlled oscillator 壓控振蕩器<
9、/p><p> 10、分數(shù)分頻器:分頻器是一種可以把輸入信號的頻率進行處理,使得輸出信號的頻率滿足的電路(n是整數(shù))。分數(shù)分頻器采用脈沖吞吐計數(shù)器和鎖相環(huán)技術(shù)先設(shè)計兩個不同分頻比的整數(shù)分頻器,然后通過控制單位時間內(nèi)兩種分頻比出現(xiàn)的不同次數(shù)來獲得所需要的分數(shù)分頻值。</p><p><b> 三、設(shè)計步驟</b></p><p><b>
10、; 1、設(shè)計流程圖</b></p><p><b> 2、設(shè)計步驟</b></p><p> ⑴、Main()程序入口,定義全局變量int f=-1;用來控制循環(huán)輸出數(shù)組;int wave[2]={1,0};定義數(shù)組用來表示正弦波;vector<int> v;按需創(chuàng)建數(shù)組長度</p><p><b>
11、部分程序:</b></p><p> void main()</p><p><b> {</b></p><p><b> int k;</b></p><p> printf("請選擇開關(guān)狀態(tài):\n");</p><p> pri
12、ntf("'1'代表開關(guān)K1,'2'代表開關(guān)K2,'3'代表暫停K3\n");</p><p> scanf("%d",&k);</p><p> Select(k);</p><p><b> }</b></p><p&g
13、t; vector<int> v;</p><p><b> int f=-1;</b></p><p> int wave[2]={1,0};</p><p> ?、啤⑦x擇開關(guān)狀態(tài)‘1’代表打開開關(guān),‘11’即連續(xù)按兩次“1”代表關(guān)閉開關(guān);</p><p> 其他操作提示開關(guān)操作有誤。</p&
14、gt;<p><b> 部分程序:</b></p><p> void Select(int t)</p><p><b> {</b></p><p><b> int k;</b></p><p><b> switch(t)</b&
15、gt;</p><p><b> {</b></p><p><b> case 1:</b></p><p> printf("波形如下\n");</p><p><b> OutPut();</b></p><p><
16、;b> break;</b></p><p><b> case 11:</b></p><p> printf("開關(guān)閉合狀態(tài)\n");</p><p> scanf("%d",&k);</p><p> Select(k);</p>
17、;<p><b> break;</b></p><p><b> default:</b></p><p><b> {</b></p><p> printf("開關(guān)操作有誤,請重新操作:\n");</p><p> scanf(
18、"%d",&k);</p><p> Select(k);</p><p><b> }</b></p><p><b> break;</b></p><p><b> }</b></p><p><b>
19、 }</b></p><p> ?、恰ase 50代表點擊‘2’(因為用到kbhit()方法,識別的ascii), case 51://k3暫停按鈕;其余同理(注釋:因為程序有些操作流程用到kbhit()方法,有些流程沒有用到kbhit()方法,所以出現(xiàn)了既有ascii又有非ascii);case 50時輸入數(shù)組,由于數(shù)組長度不確定,就定義了一個足夠長的長度;v.push_back( aa );/
20、/把元素一個一個存入到vector中</p><p><b> 部分程序:</b></p><p> void Second(int y)</p><p><b> {</b></p><p><b> int a;</b></p><p>&l
21、t;b> int i;</b></p><p><b> int aa;</b></p><p> switch (y)</p><p><b> {</b></p><p><b> case 50:</b></p><p>
22、; printf("請輸入內(nèi)容\n");</p><p> for( i = 0; i < 100; i++ )</p><p><b> {</b></p><p> scanf("%d",&aa);</p><p> if(aa!=-1)</p&g
23、t;<p><b> {</b></p><p> v.push_back( aa );//把元素一個一個存入到vector中</p><p><b> }</b></p><p><b> else</b></p><p><b> brea
24、k;</b></p><p><b> }</b></p><p> StartTime();</p><p> scanf("%d",&a);</p><p><b> break;</b></p><p> case 51
25、://k3暫停按鈕</p><p> printf("暫停狀態(tài)\n");</p><p> printf("繼續(xù)請按2\n");</p><p> scanf("%d",&a);</p><p> Second(a);</p><p><
26、b> break;</b></p><p><b> case 2:</b></p><p> StartTime();</p><p><b> break;</b></p><p> case 49://k1結(jié)束開關(guān)</p><p> pri
27、ntf("結(jié)束所有進程\n");</p><p> scanf("%d",&a);</p><p> Select(a);</p><p><b> break;</b></p><p><b> default:</b></p>
28、<p><b> {</b></p><p> printf("開關(guān)操作有誤,請重新操作\n");</p><p> scanf("%d",&a);</p><p> Second(a);</p><p><b> }</b>&l
29、t;/p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> ?、?、void StartTime()方法中clock()獲取當(dāng)前時間方法,while(1)一直繼續(xù)直到if (end != sta
30、rt && (end-start)%2000==0)成立時即符合要求的周期依次輸出數(shù)組內(nèi)容,if(f>1)使數(shù)組重復(fù)輸出;if(kbhit())//kbhit()鍵盤觸發(fā)事件;最后令start=end;準(zhǔn)備下一次循環(huán)。</p><p><b> 部分程序:</b></p><p> void StartTime()</p>&l
31、t;p><b> {</b></p><p><b> char K;</b></p><p> int start=clock(), end;</p><p><b> while(1)</b></p><p><b> {</b><
32、;/p><p> if (end != start && (end-start)%2000==0)//2秒一個周期,輸出一個輸入內(nèi)容</p><p><b> { </b></p><p><b> f++;</b></p><p> if(f>v.size()-1)
33、//v.size()代表輸入元素的個數(shù)</p><p><b> {</b></p><p> f-=v.size();</p><p><b> }</b></p><p> printf("%d,",v[f]);//依次輸出元素</p><p>
34、; if(kbhit())//鍵盤觸發(fā)事件</p><p><b> {</b></p><p> scanf("%s",&K);</p><p> Second(K);</p><p><b> }</b></p><p> star
35、t=end;</p><p><b> }</b></p><p><b> else</b></p><p> end=clock();</p><p><b> }</b></p><p><b> }</b><
36、/p><p> ⑸、void OutPut()大體思路同上,主要是輸出定義的全局變量數(shù)組</p><p> int wave[2]={1,0};</p><p><b> 部分程序:</b></p><p> void OutPut()</p><p><b> {</b&g
37、t;</p><p><b> char K;</b></p><p> int start=clock(), end,f=-1;//clock()方法獲取目前時間</p><p><b> while(1)</b></p><p><b> {</b></p&g
38、t;<p> if (end != start && (end-start)%1000==0)//1秒輸出一個數(shù),所以周期為2</p><p><b> { </b></p><p><b> f++;</b></p><p><b> if(f>1)</b
39、></p><p><b> {</b></p><p><b> f-=2;</b></p><p><b> }</b></p><p> printf("%d,",wave[f]);</p><p> if(kb
40、hit())//kbhit()鍵盤觸發(fā)事件</p><p><b> {</b></p><p> scanf("%s",&K);</p><p> Second(K);</p><p><b> }</b></p><p> start
41、=end;</p><p><b> }</b></p><p><b> else</b></p><p> end=clock();</p><p><b> }</b></p><p><b> }</b></
42、p><p><b> 三、程序源代碼</b></p><p> #include <stdio.h></p><p> #include <time.h>//與時間有關(guān)</p><p> #include<vector>//與動態(tài)數(shù)組有關(guān)</p><p>
43、 #include <iostream>//與動態(tài)數(shù)組有關(guān)</p><p> #include <conio.h>//與鍵盤事件有關(guān)</p><p> using namespace std;</p><p> void Select(int t);</p><p> void Second(int y);&l
44、t;/p><p> void StartTime();</p><p> void OutPut();</p><p><b> //程序入口</b></p><p> void main()</p><p><b> {</b></p><p>
45、;<b> int k;</b></p><p> printf("請選擇開關(guān)狀態(tài):\n");</p><p> printf("'1'代表開關(guān)K1,'2'代表開關(guān)K2,'3'代表暫停K3\n");</p><p> scanf("%d&q
46、uot;,&k);</p><p> Select(k);</p><p><b> }</b></p><p> vector<int> v;</p><p><b> int f=-1;</b></p><p> int wave[2]={1
47、,0};</p><p> //開關(guān)k1觸發(fā)方法</p><p> void Select(int t)</p><p><b> {</b></p><p><b> int k;</b></p><p><b> switch(t)</b>
48、</p><p><b> {</b></p><p><b> case 1:</b></p><p> printf("波形如下\n");</p><p><b> OutPut();</b></p><p><b&
49、gt; break;</b></p><p><b> case 11:</b></p><p> printf("開關(guān)閉合狀態(tài)\n");</p><p> scanf("%d",&k);</p><p> Select(k);</p>
50、<p><b> break;</b></p><p><b> default:</b></p><p><b> {</b></p><p> printf("開關(guān)操作有誤,請重新操作:\n");</p><p> scanf(&qu
51、ot;%d",&k);</p><p> Select(k);</p><p><b> }</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }
52、</b></p><p> //開關(guān)k2,k3觸發(fā)方法</p><p> void Second(int y)</p><p><b> {</b></p><p><b> int a;</b></p><p><b> int i;<
53、/b></p><p><b> int aa;</b></p><p> switch (y)</p><p><b> {</b></p><p><b> case 50:</b></p><p> printf("請輸入
54、內(nèi)容\n");</p><p> for( i = 0; i < 100; i++ )</p><p><b> {</b></p><p> scanf("%d",&aa);</p><p> if(aa!=-1)</p><p><b&
55、gt; {</b></p><p> v.push_back( aa );//把元素一個一個存入到vector中</p><p><b> }</b></p><p><b> else</b></p><p><b> break;</b></p&
56、gt;<p><b> }</b></p><p> StartTime();</p><p> scanf("%d",&a);</p><p><b> break;</b></p><p> case 51://k3暫停按鈕</p>
57、<p> printf("暫停狀態(tài)\n");</p><p> printf("繼續(xù)請按2\n");</p><p> scanf("%d",&a);</p><p> Second(a);</p><p><b> break;</b
58、></p><p><b> case 2:</b></p><p> StartTime();</p><p><b> break;</b></p><p> case 49://k1結(jié)束開關(guān)</p><p> printf("結(jié)束所有進程\n&
59、quot;);</p><p> scanf("%d",&a);</p><p> Select(a);</p><p><b> break;</b></p><p><b> default:</b></p><p><b>
60、 {</b></p><p> printf("開關(guān)操作有誤,請重新操作\n");</p><p> scanf("%d",&a);</p><p> Second(a);</p><p><b> }</b></p><p>
61、<b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> //依次輸出輸入的內(nèi)容</p><p> void StartTime()</p><p><b> {&
62、lt;/b></p><p><b> char K;</b></p><p> int start=clock(), end;</p><p><b> while(1)</b></p><p><b> {</b></p><p>
63、if (end != start && (end-start)%2000==0)//2秒一個周期,輸出一個輸入內(nèi)容</p><p><b> { </b></p><p><b> f++;</b></p><p> if(f>v.size()-1)//v.size()代表輸入元素的個數(shù)&
64、lt;/p><p><b> {</b></p><p> f-=v.size();</p><p><b> }</b></p><p> printf("%d,",v[f]);//依次輸出元素</p><p> if(kbhit())//鍵盤觸發(fā)
65、事件</p><p><b> {</b></p><p> scanf("%s",&K);</p><p> Second(K);</p><p><b> }</b></p><p> start=end;</p>&l
66、t;p><b> }</b></p><p><b> else</b></p><p> end=clock();</p><p><b> }</b></p><p><b> }</b></p><p><
67、;b> //輸出1,0波形</b></p><p> void OutPut()</p><p><b> {</b></p><p><b> char K;</b></p><p> int start=clock(), end,f=-1;//clock()方法獲取目
68、前時間</p><p><b> while(1)</b></p><p><b> {</b></p><p> if (end != start && (end-start)%1000==0)//1秒輸出一個數(shù),所以周期為2</p><p><b> {
69、</b></p><p><b> f++;</b></p><p><b> if(f>1)</b></p><p><b> {</b></p><p><b> f-=2;</b></p><p>&
70、lt;b> }</b></p><p> printf("%d,",wave[f]);</p><p> if(kbhit())//kbhit()鍵盤觸發(fā)事件</p><p><b> {</b></p><p> scanf("%s",&K);
71、</p><p> Second(K);</p><p><b> }</b></p><p> start=end;</p><p><b> }</b></p><p><b> else</b></p><p>
72、 end=clock();</p><p><b> }</b></p><p><b> }</b></p><p><b> 五、 運行結(jié)果</b></p><p><b> 設(shè)計評述及收獲體會</b></p><p>
73、<b> 設(shè)計評述</b></p><p> 本小組主要完成射頻信號相位分析與測量軟件模塊設(shè)計中的子題目3:設(shè)計一個基于單片機或WINDOW的小程序,實現(xiàn)輪詢結(jié)構(gòu)的嵌入式程序。通過按鍵控制(模擬的)單片機產(chǎn)生模擬的LMK03000串行總線時序控制信號。通過分析題目得出主要思路,由C語言設(shè)計SPI串行總線時序圖信號,如下所示:</p><p><b>
74、收獲體會</b></p><p> 通過本次課程設(shè)計的學(xué)習(xí),我們復(fù)習(xí)了所學(xué)的C語言知識,使課堂學(xué)習(xí)的理論知識應(yīng)用于實踐,提高了我們的實踐操作能力。主要有:</p><p> 一、搞清要實現(xiàn)的目標(biāo)效果,有一個正確的分析思路。</p><p> 二、寫程序要把大體框架構(gòu)建起來,不會的地方暫時用其他會的簡易方法實現(xiàn),后期再做改動。</p>
75、<p> 三、遇到不會的問題,要根據(jù)情況查找資料,最后的資料就是百度。</p><p> 四、寫完程序要不斷的運行操作,找出程序中存在的隱患并改正。</p><p><b> 參考文獻</b></p><p> 1.郭天祥等.51單片機C語言教程.北京:電子工業(yè)出版社.2011</p><p> 2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 射頻信號仿真軟件人機交互模塊設(shè)計.pdf
- 信息處理課程設(shè)計
- 視音頻信號處理課程設(shè)計
- 視頻信息處理和軟件設(shè)計模式若干問題研究.pdf
- 軟件建模與分析課程設(shè)計
- 信號分析與處理課程設(shè)計
- 音頻信號分析儀課程設(shè)計
- 信號處理分析課程設(shè)計
- 雙通道天線測量系統(tǒng)中頻信號處理與控制模塊設(shè)計.pdf
- 專用信息處理模塊設(shè)計.pdf
- matlab軟件課程設(shè)計-- 應(yīng)用圖像處理
- 信息處理機訓(xùn)練與考評系統(tǒng)軟件設(shè)計
- dsp課程設(shè)計-音頻信號頻譜分析
- 海底觀測節(jié)點信息處理軟件設(shè)計與實現(xiàn).pdf
- protel軟件課程設(shè)計--函數(shù)信號發(fā)生器設(shè)計
- 軟件課程設(shè)計報告
- protel軟件課程設(shè)計
- 軟件課程設(shè)計報告
- 抓圖軟件課程設(shè)計
- 軟件測試課程設(shè)計
評論
0/150
提交評論