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

下載本文檔

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

文檔簡介

1、<p>  本科生專業(yè)課程設計1</p><p>  題目: 數(shù)字頻率計,數(shù)字時鐘 </p><p>  學 院 </p><p>  專 業(yè) </p><p>  學 號

2、 </p><p>  姓 名 </p><p>  成 績 </p><p>  年 月 日</p><p><b>  一、實驗目的</b></p><p>  1、掌握單片機S

3、TC89C52RC的結構和編程方法;</p><p>  2、了解單片機的串行口通信;</p><p>  3、熟悉頻率計算法原理;</p><p>  4、知道燒錄軟件及操作方法;</p><p>  5、熟悉動態(tài)輸出顯示原理、及編程方法。</p><p><b>  二、實驗要求</b><

4、;/p><p>  通過硬件設計、焊接、調(diào)試,軟件編程、調(diào)試,程序固化,軟硬件系統(tǒng)調(diào)試,最終制作一個數(shù)字頻率計實物,并且能夠通過數(shù)碼管實時顯示被測頻率。</p><p><b>  二、硬件電路設計</b></p><p>  包括:電路框圖或原理圖,簡要說明工作原理</p><p>  電路工作原理 MCU</p

5、><p>  電路工作原理 數(shù)碼管驅(qū)動電路</p><p>  電路工作原理 顯示電路</p><p>  電路工作原理 電源及功能指示電路</p><p>  電路工作原理 信號處理電路</p><p>  電路工作原理 串口通信電路</p><p>  電路工作原理 按鍵

6、控制電路</p><p><b>  實驗原理:</b></p><p>  頻率計系統(tǒng)總體框圖:</p><p><b>  頻率計原理</b></p><p>  頻率的測量實際上就是在1s時間內(nèi)對信號進行計數(shù),計數(shù)值就是信號頻率。用單片機設計頻率計通常采用的辦法是使用單片機自帶的計數(shù)器對輸入脈

7、沖進行計數(shù);好處是設計出的頻率計系統(tǒng)結構和程序編寫簡單,成本低廉,不需要外部計數(shù)器,直接利用所給的單片機最小系統(tǒng)就可以實現(xiàn)。缺陷是受限于單片機計數(shù)的晶振頻率,輸入的時鐘頻率通常是單片機晶振頻率的幾分之一甚至是幾十分之一,在本次設計使用的STCAT89C52單片機,由于檢測一個由“1”到“0”的跳變需要兩個機器周期,前一個機器周期測出“1”,后一個周期測出“0”。故輸入時鐘信號的最高頻率不得超過單片機晶振頻率的二十四分之一。根據(jù)頻率檢測的

8、原理,很容易想到利用51單片機的T0、T1兩個定時/計數(shù)器,一個用來定時,另一個用來計數(shù),兩者均應該工作在中斷方式,一個中斷用于1s時間的中斷處理,一個中斷用于對頻率脈沖的計數(shù)溢出處理。</p><p><b>  三、程序設計</b></p><p>  包括:程序流程、實驗程序及分析</p><p>  /*****************

9、*****************************************************</p><p>  綜合實習--頻率計(測量頻率和周期)的程序 </p><p>  **********************************************************************/</p><p>  #pr

10、agma db oe</p><p>  #include <reg52.h></p><p>  #include <absacc.h></p><p>  #include <string.h></p><p>  #include <stdio.h></p><p>

11、;  #include <intrins.h></p><p>  #include <MATH.H></p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  #define ulong unsigned l

12、ong</p><p>  #define CHANGSHU 0.65536</p><p>  #define CHANGSHU1 1e-6</p><p>  void display(void);</p><p>  void initsiu(void);</p><p>  void delay(void);&

13、lt;/p><p>  void ccll(void);</p><p>  void jsdat(void);</p><p>  void keyin(void);</p><p>  uchar inkey(void);</p><p>  uchar disdat[6];</p><p> 

14、 uchar code tab[]={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0x6f};</p><p>  uint count,count1;</p><p>  uchar xsd,diszq,dzt;</p><p>  float jsjg;</p><p><b>  in

15、t js;</b></p><p>  sbit jskz=P3^3;</p><p>  sbit zsd=P1^0;</p><p><b>  main()</b></p><p><b>  {</b></p><p><b>  uchar i

16、; </b></p><p>  for (i=0;i<6;i++)</p><p><b>  {</b></p><p>  disdat[i]= 0;//將顯示緩存清零</p><p><b>  }</b></p><p>  initsiu();

17、//初始化單片機</p><p>  TR1 = 0;//關閉計數(shù)器1</p><p><b>  dzt=0;</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  ccll();/

18、/進行測量頻率合周期</p><p>  for (i=0;i<50;i++)</p><p><b>  {</b></p><p>  keyin();//根據(jù)按鍵改變顯示內(nèi)容</p><p>  display();//顯示</p><p><b>  }</b&g

19、t;</p><p>  if (dzt==0)</p><p><b>  {</b></p><p><b>  dzt=1;</b></p><p><b>  zsd=0;</b></p><p><b>  }</b>&l

20、t;/p><p><b>  else</b></p><p><b>  {</b></p><p><b>  dzt=0;</b></p><p><b>  zsd=1;</b></p><p><b>  }<

21、/b></p><p><b>  _nop_();</b></p><p><b>  }</b></p><p><b>  while(1);</b></p><p><b>  }</b></p><p>  voi

22、d display(void) //六位數(shù)碼管顯示程序,disdat[]是要顯示的內(nèi)容(是0~9的數(shù)字),xsd是在那一位顯示小數(shù)點</p><p><b>  {</b></p><p>  uchar i,disa,disb,disc;</p><p>  disb = 0x00;//顯示第n位</p>

23、<p>  for (i=0;i<6;i++)//共顯示6個數(shù)據(jù)</p><p><b>  {</b></p><p>  disa = disdat[i];//顯示數(shù)據(jù)</p><p>  if (disa < 10)</p><p><b>  {</b><

24、/p><p>  P2 = disb;</p><p>  disc = tab[disa]; //顯示段碼</p><p>  if ((xsd != 5) && (xsd == i))</p><p>  disc = disc | 0x80;//增加小數(shù)點顯示</p><p>  P0 = di

25、sc;//送顯示</p><p>  delay ();//延時</p><p><b>  P0 = 0x0;</b></p><p>  disb++;//下一個要顯示的位置</p><p><b>  }</b></p><p><b&g

26、t;  }</b></p><p>  P2 = 0xff;</p><p><b>  }</b></p><p>  void keyin(void)//1號鍵顯示頻率,2號鍵顯示周期</p><p><b>  {</b></p><p><b&g

27、t;  uchar i;</b></p><p>  i=inkey();//讀入鍵值</p><p>  if (i==0x70)//1號鍵</p><p><b>  diszq=0;</b></p><p>  else if(i==0xb0)//2號鍵</p><p>

28、;<b>  diszq=1;</b></p><p><b>  else </b></p><p><b>  _nop_();</b></p><p><b>  }</b></p><p>  void delay(void)//延時程序<

29、;/p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  for (i=0;i<201;i++)</p><p><b>  _nop_();</b></p><p><b>  }&

30、lt;/b></p><p>  void jsdat(void)//將測量結果jsjg整理,送到disdat[]中,并將小數(shù)點加到適當?shù)奈恢?lt;/p><p><b>  {</b></p><p><b>  ulong bb;</b></p><p>  if (jsjg >10

31、00000.0)//超過6位數(shù),結果除10,小數(shù)點顯示在第1位,表示Mhz(或千秒)</p><p><b>  {</b></p><p>  bb=jsjg/10;</p><p><b>  xsd= 1 ;</b></p><p><b>  }</b></p&

32、gt;<p>  else if ((jsjg<1000000.0)&&(jsjg > 100000.0))//6位數(shù),小數(shù)點不顯示</p><p><b>  {</b></p><p>  bb=jsjg * 1;</p><p><b>  xsd =5;</b></

33、p><p><b>  }</b></p><p>  else if ((jsjg<100000.0) && (jsjg > 10000.0))//5位數(shù),結果乘10,小數(shù)點在第5位</p><p><b>  {</b></p><p>  bb=jsjg * 10

34、;</p><p><b>  xsd = 4;</b></p><p><b>  }</b></p><p>  else if ((jsjg<10000.0)&&(jsjg > 1000.0))//4位數(shù),結果乘100,小數(shù)點在第4位</p><p><b&

35、gt;  {</b></p><p>  bb=jsjg * 100;</p><p><b>  xsd =3;</b></p><p><b>  }</b></p><p>  else if ((jsjg<1000.0) && (jsjg > 10

36、0.0))//3位數(shù),結果乘1000,小數(shù)點在第3位</p><p><b>  {</b></p><p>  bb=jsjg * 1000;</p><p><b>  xsd = 2;</b></p><p><b>  }</b></p><p&g

37、t;  else if ((jsjg<100.0) && (jsjg > 10.0))//2位數(shù),結果乘10000,小數(shù)點在第2位</p><p><b>  {</b></p><p>  bb=jsjg * 10000;</p><p><b>  xsd =1;</b></p&g

38、t;<p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  bb=jsjg * 100000;//1位數(shù),結果乘100000,小數(shù)點在第1位</p><p><b>

39、  xsd =0;</b></p><p><b>  }</b></p><p>  disdat[0]=bb/100000;//將結果分解到disdat[]</p><p>  bb=bb % 100000;</p><p>  disdat[1]=bb/10000;</p><

40、;p>  bb=bb%10000;</p><p>  disdat[2]=bb/1000;</p><p>  bb=bb%1000;</p><p>  disdat[3]=bb/100;</p><p>  bb=bb%100;</p><p>  disdat[4]=bb/10;</p>&

41、lt;p><b>  bb=bb%10;</b></p><p>  disdat[5]=bb;</p><p><b>  }</b></p><p>  void ccll(void)//測量頻率和方波程序</p><p><b>  {</b></p>

42、;<p>  count1 =0;//計數(shù)結果超過65536后的溢出次數(shù)</p><p>  TR1=0;//關閉計數(shù)器1</p><p>  js=-1;//外部中斷次數(shù),從EX1=1開始后的兩個中斷間的時間為周期</p><p>  IE1=0;//清外部中斷1的中斷標志</p><p>  TH1 = 0;

43、//定時器1的計數(shù)值清零</p><p><b>  TL1 = 0;</b></p><p>  EX1=1;//開外部中斷1</p><p>  while (js !=1)</p><p>  _nop_();//當js=1時,測量結束</p><p>  EX1=0;//關外部中

44、斷1</p><p>  TR1=0;//關定時器1,停止計數(shù)</p><p>  count = TH1 *256 +TL1;//定時器1的計數(shù)結果</p><p>  jsjg = count1 * 0.065536;//計數(shù)溢出多少時間</p><p>  jsjg = jsjg + count * 1.0e-6;//周期&l

45、t;/p><p>  if (diszq==0)</p><p>  jsjg = 1.0 / jsjg;//頻率</p><p><b>  else </b></p><p>  jsjg=jsjg*1000;//周期單位為ms</p><p>  jsdat();//調(diào)整顯示結果&l

46、t;/p><p><b>  }</b></p><p>  void initsiu(void)//初始化單片機</p><p><b>  {</b></p><p>  TMOD=0x15;//定時器1:gate=0->TR1=1開始計數(shù),C/T=0->對內(nèi)部計數(shù),模式1->

47、16位計數(shù)</p><p>  TR0=0;//關閉計數(shù)器0</p><p>  TR1=0;//關閉計數(shù)器1</p><p>  ET0=0;//關閉定時器0中斷</p><p>  ET1=1;//打開定時器1中斷</p><p>  IT1=1;//外部中斷1下降沿觸發(fā)</p>

48、<p>  EX1=0;//開外部中斷1</p><p>  EA=1;//總中斷允許</p><p><b>  }</b></p><p>  void intex1(void) interrupt 2 using 2</p><p><b>  {</b></p>

49、<p>  TR1=!TR1;//第1次中斷允許定時器1計數(shù),第2次中斷關閉定時器1計數(shù)</p><p>  js=js+1;//第2次中斷js=1 ,測量完。</p><p><b>  }</b></p><p>  void inttime1(void) interrupt 3 using 1</p>&l

50、t;p><b>  {</b></p><p>  count1++;//定時器1溢出次數(shù)計數(shù)</p><p><b>  }</b></p><p>  /**********************************************************</p><p>

51、;  鍵盤輸入程序 1:0x70 2:0xb0 3:0xd0</p><p><b>  4: 0xe0 </b></p><p>  **********************************************************/</p><p>  uchar inkey(void)</p><p

52、><b>  {</b></p><p>  uchar jjj,keydat;</p><p>  P2 = 0xff;//P2準備讀入</p><p>  keydat = P2;//讀入鍵值</p><p>  keydat = keydat & 0xf0;//找出四個鍵的值</p>

53、<p>  if (keydat != 0xf0)//有鍵輸入</p><p><b>  {</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p>  jjj = P2;//再讀,

54、去抖動</p><p>  jjj = jjj & 0xf0;</p><p>  if (jjj != keydat)</p><p>  keydat = 0xf0;</p><p><b>  do </b></p><p><b>  {</b></p&

55、gt;<p><b>  jjj = P2;</b></p><p>  jjj = jjj & 0xf0;</p><p>  }//等待鍵松手</p><p>  while (jjj != 0xf0);</p><p><b>  }</b></p>&

56、lt;p>  return (keydat);</p><p><b>  }</b></p><p><b>  四、調(diào)試</b></p><p>  包括:故障現(xiàn)象及排除最終結果。</p><p>  本次課程設計使用的單片機系統(tǒng)是根據(jù)老師提供的系統(tǒng)原件,自己焊接而成。焊接完成以后,首先燒

57、寫控制LED發(fā)光二極管閃爍的程序后,發(fā)現(xiàn)發(fā)光二極管是根據(jù)自己的設計而閃爍,燒寫程序控制發(fā)光數(shù)碼管顯示時,數(shù)碼管同樣是根據(jù)自己的設計而顯示的字符,說明本次52單片機的硬件焊接取得成功。</p><p><b>  總結</b></p><p>  包括:收獲、體會、感想等。</p><p>  我在這次課程設計中所做的課題是《頻率計,數(shù)字時鐘》經(jīng)

58、過了幾天的努力,在老師的精心輔導下,還有同組人員的相互幫助,使得設計得已順利完成。隨著時代的發(fā)展,數(shù)字電子技術已經(jīng)普及到我們生活,工作,科研,各個領域,本文將介紹一種數(shù)控直流穩(wěn)壓電源,本電源由模擬電源、顯示電路、控制電路、數(shù)模轉(zhuǎn)換電路、放大電路四部分組成.準確說就是模擬電源提供各個芯片電源、數(shù)碼管、放大器所需電壓;顯示電路用于顯示電源輸出電壓的大小。同時分析了數(shù)字技術和模擬技術相互轉(zhuǎn)換的概念。與傳統(tǒng)的穩(wěn)壓電源相比具有操作方便,電源穩(wěn)定性

59、高以及其輸出電壓大小采用數(shù)碼顯示的特點。</p><p>  同時,通過本次課程設計,鞏固了我們學習過的專業(yè)知識,也使我們把理論與實踐從真正意義上相結合了起來;考驗了我們借助互聯(lián)網(wǎng)絡搜集、查閱相關文獻資料,和組織材料的綜合能力;也使我在口述和語言表達方面得到了鍛煉。從中可以自我測驗,認識到自己哪方面有欠缺、不足,以便于在日后的學習中得以改進、提高。</p><p>  此次課程設計,學到了

60、很多課內(nèi)學不到的東西,比如獨立思考解決問題,出現(xiàn)差錯的隨機應變,和與人合作共同提高,都受益非淺,今后的制作應該更輕松,自己也都能扛的起并高質(zhì)量的完成項目。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論