版權(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、鍵抖動:當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關(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> ?、拧ain()程序入口,定義全局變量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> ⑵、選擇開關(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()獲取當前時間方法,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;準備下一次循環(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)的目標效果,有一個正確的分析思路。</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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 射頻信號仿真軟件人機交互模塊設(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
提交評論