軟件信息處理課程設計--射頻信號相位分析與測量軟件模塊設計_第1頁
已閱讀1頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  題目:射頻信號相位分析與測量軟件模塊設計</p><p><b>  設計目的簡介</b></p><p>  1、通過本課程設計的學習,學生將復習所學的專業(yè)知識,使課堂學習的理論知識應用于實踐,通過本課程設計的實踐使學生具有一定的實踐操作能力;</p><p>  2、掌握C語言的編程方法,能熟練運用;</p>

2、;<p>  3、通過軟件信息處理實踐的課程設計,掌握設計信息處理系統(tǒng)的思維方法和基本開發(fā)過程。</p><p>  二、設計主要方案及理論介紹</p><p><b>  方案: </b></p><p>  設計一個基于單片機或WINDOW的小程序,實現輪詢結構的嵌入式程序。通過按鍵控制(模擬的)單片機產生模擬的LMK0

3、3000串行總線時序控制信號</p><p><b>  理論介紹:</b></p><p>  1、嵌入式系統(tǒng)程序結構:嵌入式系統(tǒng)通常執(zhí)行的是帶有特定要求的預先定義的任務,嵌入式系統(tǒng)一般指非PC系統(tǒng),它包括硬件和軟件兩部分。硬件包括處理器/微處理器、存儲器及外設器件和I/O端口、圖形控制器等。軟件部分包括操作系統(tǒng)軟件(OS)(要求實時和多任務操作)和應用程序編程。&

4、lt;/p><p>  2、輪詢程序:輪詢(Polling)I/O方式或程序控制I/O方式,是讓CPU以一定 的周期按次序查詢每一個外設,看它是否有數據輸入或輸出的要求,若有,則進行相應的輸入/輸出服務;若無,或I/O處理完畢柏,CPU就接著查詢下一個外設。</p><p>  3、鍵抖動:當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一

5、下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動</p><p>  4、SPI串行總線時序:(SPI是Serial Peripheral interface的縮寫,顧名思義就是串行外圍設備接口)</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、時鐘:時鐘信號是時序邏輯的基礎,它用于決定邏輯單元中的狀態(tài)何時更新。時鐘信號是指有固定周期并與運行無關的信號量,時鐘頻率(clock frequency,CF)是時鐘周期的倒數。</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、分數分頻器:分頻器是一種可以把輸入信號的頻率進行處理,使得輸出信號的頻率滿足的電路(n是整數)。分數分頻器采用脈沖吞吐計數器和鎖相環(huán)技術先設計兩個不同分頻比的整數分頻器,然后通過控制單位時間內兩種分頻比出現的不同次數來獲得所需要的分數分頻值。</p><p><b>  三、設計步驟</b></p><p><b>

10、;  1、設計流程圖</b></p><p><b>  2、設計步驟</b></p><p> ?、?、Main()程序入口,定義全局變量int f=-1;用來控制循環(huán)輸出數組;int wave[2]={1,0};定義數組用來表示正弦波;vector<int> v;按需創(chuàng)建數組長度</p><p><b>  

11、部分程序:</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  int k;</b></p><p>  printf("請選擇開關狀態(tài):\n");</p><p>  pri

12、ntf("'1'代表開關K1,'2'代表開關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擇開關狀態(tài)‘1’代表打開開關,‘11’即連續(xù)按兩次“1”代表關閉開關;</p><p>  其他操作提示開關操作有誤。</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("開關閉合狀態(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("開關操作有誤,請重新操作:\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()方法,所以出現了既有ascii又有非ascii);case 50時輸入數組,由于數組長度不確定,就定義了一個足夠長的長度;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");</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結束開關</p><p>  pri

27、ntf("結束所有進程\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("開關操作有誤,請重新操作\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)成立時即符合要求的周期依次輸出數組內容,if(f>1)使數組重復輸出;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秒一個周期,輸出一個輸入內容</p><p><b>  { </b></p><p><b>  f++;</b></p><p>  if(f>v.size()-1)

33、//v.size()代表輸入元素的個數</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> ?、伞oid OutPut()大體思路同上,主要是輸出定義的全局變量數組</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秒輸出一個數,所以周期為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>//與時間有關</p><p>  #include<vector>//與動態(tài)數組有關</p><p> 

43、 #include <iostream>//與動態(tài)數組有關</p><p>  #include <conio.h>//與鍵盤事件有關</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("請選擇開關狀態(tài):\n");</p><p>  printf("'1'代表開關K1,'2'代表開關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>  //開關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("開關閉合狀態(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("開關操作有誤,請重新操作:\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>  //開關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");</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結束開關</p><p>  printf("結束所有進程\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("開關操作有誤,請重新操作\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>  //依次輸出輸入的內容</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秒一個周期,輸出一個輸入內容</p><p><b>  { </b></p><p><b>  f++;</b></p><p>  if(f>v.size()-1)//v.size()代表輸入元素的個數&

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秒輸出一個數,所以周期為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>  五、 運行結果</b></p><p><b>  設計評述及收獲體會</b></p><p>

73、<b>  設計評述</b></p><p>  本小組主要完成射頻信號相位分析與測量軟件模塊設計中的子題目3:設計一個基于單片機或WINDOW的小程序,實現輪詢結構的嵌入式程序。通過按鍵控制(模擬的)單片機產生模擬的LMK03000串行總線時序控制信號。通過分析題目得出主要思路,由C語言設計SPI串行總線時序圖信號,如下所示:</p><p><b>  

74、收獲體會</b></p><p>  通過本次課程設計的學習,我們復習了所學的C語言知識,使課堂學習的理論知識應用于實踐,提高了我們的實踐操作能力。主要有:</p><p>  一、搞清要實現的目標效果,有一個正確的分析思路。</p><p>  二、寫程序要把大體框架構建起來,不會的地方暫時用其他會的簡易方法實現,后期再做改動。</p>

75、<p>  三、遇到不會的問題,要根據情況查找資料,最后的資料就是百度。</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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論