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

下載本文檔

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

文檔簡介

1、<p>  單片機及DSP課程設計報告</p><p>  專 業(yè): 電子信 </p><p>  班 級: </p><p>  姓 名: </p><p>  學 號: </p><p><

2、b>  指導教師: </b></p><p>  時 間:2012-06-11~24</p><p><b>  通信與電子工程學院</b></p><p><b>  一、設計目的</b></p><p>  為了進一步鞏固學習的理論知識,增強學生對所學知識的實際應用能

3、力和運用所學的知識解決實際問題的能力,開始為期兩周的課程設計。通過設計使學生在鞏固所學知識的基礎之上具有初步的單片機系統(tǒng)設計與應用能力。</p><p>  1、通過本設計,使學生綜合運用《單片機技術原理與應用》、《DSP原理與應用》《C語言程序設計》以及《數(shù)字電路》、《模擬電路》等課程的內容,為以后從事電子產(chǎn)品設計、軟件編程、系統(tǒng)控制等工作奠定一定的基礎。</p><p>  2、學會使

4、用KEIL C和PROTEUS等軟件,用C語言或匯編語言編寫一個較完整的實用程序,并仿真運行,保證設計的正確性。</p><p>  3、了解單片機接口應用開發(fā)的全過程:分析需求、設計原理圖、選用元器件、布線、編程、調試、撰寫報告等。</p><p><b>  二、設計內容</b></p><p>  2. 1 硬件系統(tǒng)設計</p>

5、;<p>  2.1.1 顯示電路的選擇與設計</p><p>  對于數(shù)字顯示電路,通常采用液晶顯示或數(shù)碼管顯示。本設計的顯示電路采用7段數(shù)碼管作為顯示介質。</p><p>  數(shù)碼管顯示可以分為靜態(tài)顯示和動態(tài)顯示兩種。由于本設計需要采用八位數(shù)碼管顯示時間,如果靜態(tài)顯示則占用的口線多,硬件電路復雜。所以采用動態(tài)顯示。</p><p>  動態(tài)顯示

6、是一位一位地輪流點亮各位數(shù)碼管,這種逐位點亮顯示器的方式稱為位掃描。通常各位數(shù)碼管的段選線相應并聯(lián)在一起,由一個8位的I/O口控制;各位的公共陰極位選線由另外的I/O口線控制。動態(tài)方式顯示時,各數(shù)碼管分時輪流選通,要使其穩(wěn)定顯示必須采用掃描方式,即在某一時刻只選通一位數(shù)碼管,并送出相應的段碼,在另一時刻選通另一位數(shù)碼管,并送出相應的段碼,依此規(guī)律循環(huán),即可使各位數(shù)碼管顯示將要顯示的字符,雖然這些字符是在不同的時刻分別顯示,但由于人眼存在

7、視覺暫留效應,只要每位顯示間隔足夠短就可以給人同時顯示的感覺。</p><p>  數(shù)碼顯示管分為共陽數(shù)碼管和共陰數(shù)碼管兩種</p><p>  共陽極數(shù)碼管的8個發(fā)光二極管的陽極(二極管正端)連接在一起,通常公共陽極接高電平,即接電源,其它管腳接段驅動電路輸出端。當某段驅動電路的輸出端為低電平時,則該端所連接的字段導通并點亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅動

8、電路能吸收額定的段導通電流,還需根據(jù)外接電源及額定段導通電流來確定相應的限流電阻。</p><p>  共陰極數(shù)碼管的8個發(fā)光二極管的陰極(二極管負端)連接在一起,通常公共陰極接低電平即接地,其它管腳接段驅動電路輸出端,當某段驅動電路的輸出端為高電平時,則該端所連接的字段導通并點亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅動電路能提供額定的段導通電流,還需根據(jù)外接電源及額定段導通電流來確定相應

9、的限流電阻。 </p><p>  本設計采用共陽極數(shù)碼顯示管做顯示電路,數(shù)碼管的a、b、c、d、e、f、g、h引腳為低電平,那么其對應的二極管就會發(fā)光,使數(shù)碼顯示管顯示0~9的編碼見表2.1.1。</p><p>  表2.1.2 共陽極數(shù)碼顯示管字型代碼</p><p>  動態(tài)顯示電路由顯示塊、字形碼驅動模塊、字位驅動模塊三部分組成。如圖2.1所示為本系統(tǒng)

10、的8位LED動態(tài)顯示器接口電路。圖中,8個數(shù)碼管的8段段選線分別與外接上拉電阻的單片機P0口對應相連,而8個數(shù)碼管的位控制端則和NPN型三極管的集電極相連接。</p><p>  2.1.2 按鍵電路的選擇與設計</p><p>  本設計中有三個按鍵,分別實現(xiàn)啟動/停止、暫停/繼續(xù)、清零功能。這三個鍵可以采用中斷的方法,也可以采用查詢的方法來識別。四個按鍵均采用低電平有效。</p

11、><p>  當按鍵沒有按下時,單片機的I/O口直接連接電源,因此需要接上拉電阻來進行限流,本設計中選取阻值為470Ω 的電阻作為上拉電阻.具體設計如圖2.1.2所示</p><p>  圖2.1.2 按鍵電路</p><p>  2.1.3 時鐘電路的選擇與設計</p><p>  單片機的時鐘信號用來提供單片機內各種微操作的時間基準,AT8

12、9S52片內設有一個由反向放大器所構成的振蕩電路,XTAL1和 XTAL2分別為振蕩電路的輸入和輸出端,AT89S52單片機的時鐘信號通常用兩種電路形式得到:內部振蕩方式與外部振蕩方式。外部方式的時鐘很少用,若要用時,只要將XTAL1接地,XTAL2接外部振蕩器就行。對外部振蕩信號無特殊要求,只要保證脈沖寬度,一般采用頻率低于12MHz的方波信號。</p><p>  時鐘發(fā)生器把振蕩頻率兩分頻,產(chǎn)生一個兩相時鐘

13、信號P1和P2供單片機使用。P1在每一個狀態(tài)S的前半部分有效,P2在每個狀態(tài)的后半部分有效。本設計采用的內部振蕩方式,內部振蕩方式所得的時鐘信號比較穩(wěn)定,實用電路中使用較多。只要按照圖2.3所示電路進行設計連接就能使系統(tǒng)可靠起振并能穩(wěn)定運行。圖中,電容器C1 、C2起穩(wěn)定振蕩頻率、快速起振的作用,電容值一般為5~33pF。但在時鐘電路的實際應用中一定要注意正確選擇其大小,并保證電路的對稱性,盡可能匹配,選用正牌的瓷片或云母電容

14、,如果可能的話,溫度系數(shù)盡可能低。本設計中采用大小為33pF的電容和12MHz的晶振。</p><p>  圖2.1.3內部振蕩電路</p><p>  2.1.4 復位電路的選擇與設計</p><p>  當AT89S52單片機的復位引腳RST(全稱RESET)出現(xiàn)2個機器周期以上的高電平時,單片機就完成了復位操作。如果RST持續(xù)為高電平,單片機就處于循環(huán)復位狀

15、態(tài),而無法執(zhí)行程序。因此要求單片機復位后能脫離復位狀態(tài)。而本系統(tǒng)選用的是12MHz的晶振,因此一個機器周期為1μs,那么復位脈沖寬度最小應為2μs。在實際應用系統(tǒng)中,考慮到電源的穩(wěn)定時間,參數(shù)漂移,晶振穩(wěn)定時間以及復位的可靠性等因素,必須有足夠的余量。</p><p>  根據(jù)應用的要求,復位操作通常有兩種基本形式:上電復位、手動復位。</p><p>  上電復位要求接通電源后,自動實現(xiàn)

16、復位操作。AT89S52單片機的上電復位POR(Power On Reset)實質上就是上電延時復位,也就是在上電延時期間把單片機鎖定在復位狀態(tài)上。在單片機每次初始加電時,首先投入工作的功能部件是復位電路。復位電路把單片機鎖定在復位狀態(tài)上并且維持一個延時(記作TRST),以便給予電源電壓從上升到穩(wěn)定的一個等待時間;在電源電壓穩(wěn)定之后,再插入一個延時,給予時鐘振蕩器從起振到穩(wěn)定的一個等待時間;在單片機開始進入運行狀態(tài)之前,還要至少推遲2個

17、機器周期的延時。</p><p>  上述一系列的延時,都是利用在單片機RST引腳上外接一個RC支路的充電時間而形成的。</p><p>  典型復位電路如圖2.1.4(a)所示</p><p>  圖2.1.4 上電復位延時電路</p><p>  標準AT89S52不僅復位源比較單一,而且還沒有設計內部上電復位的延時功能,因此必須借助于

18、外接阻容支路來增加延時環(huán)節(jié),如圖2.1.4(a)所示。其實,外接電阻R還是可以省略的</p><p>  在每次單片機斷電之后,須使延時電容C上的電荷立刻放掉,以便為隨后可能在很短的時間內再次加電作好準備。否則,在斷電后C還沒有充分放電的情況下,如果很快又加電,那么RC支路就失去了它應有的延遲功能。因此,在圖2.4(a)的基礎上添加一個放電二極管D,上電復位延時電路就變成了如圖2.4(c)所示的改進電路。也就是說

19、,只有RC支路的充電過程對電路是有用的,放電過程不僅無用,而且會帶來潛在的危害。于是附加一個放電二極管D來大力縮短放電持續(xù)時間,以便消除隱患。二極管D只有在單片機斷電的瞬間(即VCC趨近于0 V,可以看作VCC對地短路)正向導通,平時一直處于反偏截止狀態(tài)。</p><p>  手動復位要求在電源接通的條件下,在單片機運行期間,如果發(fā)生死機,用按鈕開關操作使單片機復位。單片機要完成復位,必須向復位端輸出并持續(xù)兩個機

20、器周期以上的高電平,從而實現(xiàn)復位操作。</p><p>  本設計采用上電且開關復位電路,如圖2.5所示上電后,由于電容充電,使RST持續(xù)一段高電平時間。當單片機已在運行之中時,按下復位鍵也能使RST持續(xù)一段時間的高電平,從而實現(xiàn)上電且開關復位的操作。</p><p>  2.1.5 電路原理圖</p><p>  2.2軟件系統(tǒng)的設計</p><

21、;p>  2.2.1 軟件系統(tǒng)程序流程框圖</p><p>  3.4 軟件系統(tǒng)程序清單</p><p>  #include<reg52.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><

22、p>  sbit P20=P2^0; </p><p>  sbit P21=P2^1; </p><p>  sbit P22=P2^2; </p><p>  sbit P17=P1^7; </p><p>  uchar code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07

23、,0x7f,0x6f}; //段位碼 </p><p><b>  uchar ms;</b></p><p>  uint LED0,LED1,LED2,LED3,LED4,LED5; // 各位的數(shù)字 </p><p>  int m,n,delay;</p><p><b>  bit ad

24、d; </b></p><p><b>  bit sub; </b></p><p>  bit scankey; </p><p>  bit start; </p><p>  bit stop; </p><p>  bit ready;</p><p>

25、;  bit start0; </p><p>  void begin1() //初始化子程序</p><p><b>  { </b></p><p><b>  m=0;</b>

26、</p><p><b>  n=0; </b></p><p><b>  ms=0; </b></p><p><b>  LED0=0; </b></p><p><b>  LED1=0; </b></p><p><

27、b>  LED2=0; </b></p><p><b>  LED3=0; </b></p><p><b>  LED4=0;</b></p><p><b>  LED5=0;</b></p><p><b>  add=0; </b&g

28、t;</p><p><b>  sub=0;</b></p><p><b>  start=0;</b></p><p><b>  ready=0;</b></p><p>  start0=0; </p><p>  scankey=0; <

29、;/p><p><b>  }</b></p><p>  void display() </p><p>  { switch (ms%6){ //顯示子程序</p><p><b>  case 0: </b></p>&l

30、t;p><b>  P3=0xfe; </b></p><p>  P1=table[LED3]; </p><p><b>  P17=0; </b></p><p><b>  break; </b></p><p><b>  case 1: </b

31、></p><p><b>  P3=0xfd; </b></p><p>  P1=table[LED2]; </p><p><b>  P17=0; </b></p><p><b>  break; </b></p><p><b&g

32、t;  case 2: </b></p><p><b>  P3=0xfb; </b></p><p>  P1=table[LED1]; </p><p><b>  P17=1;</b></p><p><b>  break; </b></p>

33、<p><b>  case 3: </b></p><p><b>  P3=0xf7; </b></p><p>  P1=table[LED0]; </p><p><b>  P17=0; </b></p><p><b>  break; <

34、;/b></p><p><b>  case 4:</b></p><p><b>  P3=0xef;</b></p><p>  P1=table[LED4];</p><p><b>  P17=1;</b></p><p><b&g

35、t;  break;</b></p><p><b>  case 5:</b></p><p><b>  P3=0xdf;</b></p><p>  P1=table[LED5];</p><p><b>  P17=0;</b></p><

36、;p>  break; </p><p>  default: return; </p><p><b>  } </b></p><p><b>  }</b></p><p>  void time0(void) interrupt 1 using

37、 1 //中斷程序</p><p><b>  { </b></p><p>  TL0=0x18 ; </p><p>  TH0=0xfc; </p><p><b>  ms++; </b></p><p>  if(ms==10)

38、</p><p><b>  { ms=0; </b></p><p>  scankey=1; //掃描鍵盤標志位有效</p><p><b>  } </b></p><p>  display(); //顯

39、示程序調用</p><p><b>  } </b></p><p>  void add1(time) </p><p>  uint time; </p><p>  { uint n,a; </p><p>  a=time/1000; <

40、/p><p>  LED0=a; //計算十秒位數(shù)值 </p><p>  n=time%1000; </p><p>  LED1=(n/100); //計算秒位數(shù)值 </p><p><b>  n=n%100; </b></

41、p><p>  LED2=(n/10); //計算十分一秒位數(shù)值 </p><p>  LED3=n%10; //計算百分一秒位數(shù)值 </p><p><b>  } </b></p><p>  void add2(t) </p>

42、;<p>  { LED5=(t/10); //計算分鐘十位數(shù)值</p><p>  LED4=t%10; //計算分鐘個位數(shù)值</p><p><b>  }</b></p><p>  void scan()

43、 //掃描開關輸入子程序 </p><p>  { P2=0xff;</p><p>  if(P20==0&&ready==0&&start0==0) //K1計時開始與暫停</p><p>  { for(delay=0;delay

44、<=200;delay++);</p><p>  P2=0xff;if(P20==0)start=!start;}</p><p>  if(P21==0&&ready==0&&start0==0) //K2計時清零</p><p>  { f

45、or(delay=0;delay<=200;delay++);</p><p>  P2=0xff;if(P21==0)stop=1;}</p><p>  if(P22==0&&ready==0&&start0==0) //K3進入倒計時準備狀態(tài)</p><p

46、>  { for(delay=0;delay<=200;delay++);</p><p>  P2=0xff;if(P22==0)ready=1;}</p><p>  if(P20==0&&ready==1&&start0==0) //K1調整倒計時初值加標志位有效&l

47、t;/p><p>  { for(delay=0;delay<=200;delay++);</p><p>  P2=0xff;if(P20==0&&ready==1)add=1;}</p><p>  if(P21==0&&ready==1&&start0==0)

48、 //K2調整倒計時初值減標志位有效</p><p>  { for(delay=0;delay<=200;delay++);</p><p>  P2=0xff;if(P21==0&&ready==1)sub=1;}</p><p>  if(P22==0&&start0==1)

49、 //K3倒計時暫停</p><p>  { for(delay=0;delay<=200;delay++);</p><p>  P2=0xff;if(P22==0&&start0==1)start0=0;}</p><p>  if(P22==0&&ready==1&&

50、amp;start0==0) //K3倒計時開始 </p><p>  { for(delay=0;delay<=200;delay++);</p><p>  P2=0xff;if(P22==0&&ready==1)start0=

51、1;}</p><p>  if(P21==0&&start0==1) //K2倒計時清零,只能在倒計時進行時使用</p><p>  {for(delay=0;delay<=200;delay++); P2=0xff;if(P21==0&&start0==1)start=0;r

52、eady=0;start0=0;stop=1;}</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  begin1();</b></p><p>  TM

53、OD=0x01;</p><p><b>  TL0=0x18;</b></p><p><b>  TH0=0xfc;</b></p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p><

54、;p><b>  TR0=1; </b></p><p><b>  for(;;)</b></p><p><b>  { </b></p><p>  if(scankey==1) //進行鍵盤掃描 </p><p>  { scank

55、ey=0; </p><p><b>  scan(); </b></p><p>  if(start==1&ready==0) //計時開始</p><p><b>  { m++;</b></p><p>  if(m==6000)</p>&l

56、t;p>  {m=0; n++;</p><p>  if(n==60){n=0;start=0;}</p><p><b>  }</b></p><p>  add1(m);add2(n);</p><p><b>  } </b></p><p>  if(sto

57、p==1&ready==0) //計時清零</p><p>  {m=0;n=0;start=0;stop=0;add1(m);add2(n);}</p><p>  if(add==1) //倒計時初值加10</p><p>  { m=m+10;add=0;<

58、;/p><p>  if(m==6000)</p><p>  {m=0; n++;</p><p>  if(n==60)n=0;}</p><p>  add1(m);add2(n);</p><p><b>  } </b></p><p>  if(sub==1)

59、 //倒計時初值減10</p><p>  { m=m-10;sub=0;</p><p>  if(m==-1&&n!=0){n--;m=5999;}</p><p>  if(m==-1&&n==0){m=0;}</p><p>  add1(m);add

60、2(n);}</p><p>  if(start0==1) //倒計時</p><p><b>  { m--;</b></p><p>  if(m==-1&&n!=0){n--;m=5999;}</p><p>  if(m==-1&&

61、amp;n==0){m=0;ready=0;start0=0;start=0;}</p><p>  add1(m);add2(n);}</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p>

62、;<p><b>  三.設計體會</b></p><p>  對于這次設計本身,是對本學期單片機技術的一個綜合,比較具有挑戰(zhàn)性,也比較具有趣味性。</p><p>  本設計的數(shù)字電子秒表是由Atmel公司的AT89C51單片機、共陰極數(shù)碼顯示管、控制按鍵、三極管等器件構成的,設有六位計時顯示,開始/暫停、暫停/繼續(xù)按鍵以及一個系統(tǒng)整機復位按鈕。計時精

63、度能到達10ms,設計精簡,使用簡單易懂。</p><p>  通過本次設計,復習鞏固我們以前所學習的數(shù)字、模擬電子技術、單片機原理及應用等課程知識,加深對各門課程及相互關系的理解,并成功使用了Keil、Protel 99se和Proteus三款電子軟件,使理論知識系統(tǒng)化、實用化,系統(tǒng)地掌握微機應用系統(tǒng)的一般設計方法,培養(yǎng)較強的編程能力、開發(fā)能力。</p><p><b>  參

64、考文獻</b></p><p>  [1]胡漢才.單片機原理及其接口技術[M]. 北京: 清華大學出版社, 1996.6</p><p>  [2]楊振江. 流行單片機實用子程序及應用實例[M] . 西安:西安電子科技大學出 社,2002.7</p><p>  [3]付家才. 單片機控制工程實踐技術[M]. 北京: 化學工業(yè)出版社, 2004.<

溫馨提示

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

評論

0/150

提交評論