2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論