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

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計報告</b></p><p>  課程名稱:單片機原理及應(yīng)用</p><p><b>  報告題目:秒表</b></p><p><b>  學(xué)生姓名:</b></p><p>  所在學(xué)院:信息科學(xué)與工程學(xué)院</p><

2、;p><b>  專業(yè)班級:</b></p><p><b>  學(xué)生學(xué)號:</b></p><p><b>  指導(dǎo)教師:</b></p><p>  2013 年 12 月 25 日</p><p><b>  課程設(shè)計任務(wù)書</b></p

3、><p><b>  摘要</b></p><p>  近年來隨著科技的飛速發(fā)展,單片機的應(yīng)用正在不斷的走向深入,秒表計時器是電器制造,工業(yè)自動化控制、國防、實驗室以及科研單位理想的計時儀器,它廣泛應(yīng)用于各種繼電器、電磁開關(guān),控制器、延時器、定時器等時間測試。本文闡述了基于單片機的數(shù)字電子秒表設(shè)計。本設(shè)計主要特點是計時從00到99秒秒表系統(tǒng),方便了在計時精度要求不高的情況

4、下計時。因為計時精度為1,所以系統(tǒng)電路比較簡單。另外硬件部分設(shè)置了開始、暫停、清零、復(fù)位按鍵,可以對秒表系統(tǒng)進行計時控制。</p><p>  本設(shè)計的數(shù)字電子秒表系統(tǒng)采用AT89C51單片機位中心器件,利用其定時器/計數(shù)器定時和記數(shù)的原理,結(jié)合顯示電路、LED數(shù)碼管以及外部中斷電路來設(shè)計計時器。將軟、硬件有機的相結(jié)合起來,使得系統(tǒng)能夠?qū)崿F(xiàn)兩位LED顯示,顯示時間為00-99秒,計時精度為1秒,能正確地進行計時,

5、同時能記錄一次時間,其中軟件系統(tǒng)采用C語言編寫程序,包括顯示程序,定時中斷服務(wù),延時程序等,并用KeiL中調(diào)試運行,硬件系統(tǒng)利用Proteus強大的功能來實現(xiàn),簡單且易于觀察,在仿真中就可以觀察到實際的工作狀態(tài)。</p><p>  關(guān)鍵詞:單片機;數(shù)字電子秒表;仿真</p><p><b>  目錄</b></p><p>  一、概述………

6、…………………………………………………………………1</p><p>  1.1設(shè)計目的……………………………………………………………………1</p><p>  1.2設(shè)計要求……………………………………………………………………1</p><p>  1.3設(shè)計意義……………………………………………………………………1</p><p>  

7、二、系統(tǒng)總體方案及硬件設(shè)計…………………………………………………1</p><p>  2.1系統(tǒng)總體方案………………………………………………………………2</p><p>  2.2硬件設(shè)計……………………………………………………………………2</p><p>  2.21晶體振蕩電路………………………………………………………………2</p><

8、;p>  2.22復(fù)位電路……………………………………………………………………3</p><p>  2.23按鍵電路……………………………………………………………………3</p><p>  2.24 顯示電路……………………………………………………………………4</p><p>  2.25系統(tǒng)電路……………………………………………………………………4&l

9、t;/p><p>  三、軟件設(shè)計………………………………………………………………………5</p><p>  1.設(shè)計特點……………………………………………………………………5</p><p>  2.秒表設(shè)計源程序……………………………………………………………9</p><p>  3.程序流程圖……………………………………………………………

10、……10</p><p>  四、結(jié)論與心得………………………………………………………………11</p><p>  五、參考文獻………………………………………………………………………11</p><p><b>  概述</b></p><p><b>  1.1設(shè)計目的</b></p>

11、;<p>  設(shè)計一個單片機控制的秒表系統(tǒng)。利用單片機的定時器/計數(shù)器定時和記數(shù)的原理,結(jié)合顯示電路、LED數(shù)碼以及按鍵來設(shè)計秒表。將軟、硬件有機的結(jié)合起來,使得系統(tǒng)能夠正確的進行計時,同時具有開始/暫停,復(fù)位,讀數(shù),清零等功能。</p><p><b>  1.2設(shè)計要求</b></p><p>  (1)共四位LED顯示,顯示時間為:</p&g

12、t;<p> ?。?)共五個按鍵,分別是開始、復(fù)位、保存、讀出、</p><p> ?。?)能同時記錄多個相對獨立的時間并分別顯示出來;</p><p> ?。?)顯示時間從00一直到99</p><p>  (5)具有自動清零功能</p><p><b>  1.3 設(shè)計意義</b></p>

13、<p> ?。?)通過本次課程設(shè)計可以使我們進一步熟悉和掌握單片內(nèi)部和工作原理,了解單片機應(yīng)用系統(tǒng)設(shè)計的基本步驟和方法。</p><p> ?。?)通過利用AT89C52單片機,理解單片機在自動化儀表的作用以及掌握單片機的編程方法。</p><p> ?。?)通過設(shè)計一個簡單的實際應(yīng)用輸入以及顯示模擬系統(tǒng),掌握單片機仿真軟件的使用方法。</p><p>

14、  (4)該實驗通過單片機的定時器/計數(shù)器定時和計數(shù)原理,設(shè)計簡單的記時器系統(tǒng),擁有正確的計時、暫停、清零、保存、讀出的功能,該秒表在現(xiàn)實生活中應(yīng)用廣泛,具有現(xiàn)實意義。</p><p>  系統(tǒng)總體方案及硬件設(shè)計</p><p>  2.1 系統(tǒng)總體方案</p><p>  本系統(tǒng)采用AT89C52單片機為中心器件,利用其定時器/計數(shù)器定時和記數(shù)的原理,結(jié)合硬件電路

15、如電源電路,晶振電路,復(fù)位電路,顯示電路,以及以一些按鍵電路等來設(shè)計計時器,將軟、硬件有機地結(jié)合起來。其中軟件系統(tǒng)采用C語言編寫程序,包括顯示、計數(shù)、中斷、延時、按鍵消抖程序等,并且在變程軟件中調(diào)試運行,硬件系統(tǒng)利用Proteus強大的功能來實現(xiàn),簡單且易于觀察,在仿真中可以觀察到實際的工作狀態(tài)。</p><p><b>  2.2 硬件設(shè)計</b></p><p>

16、  MCS-52系列單片機是8位單片機產(chǎn)品,89C52是其中的典型代表,基本模塊包括以下幾個部分:</p><p>  CPU:89C52的CPU是8位的,另外89C51內(nèi)部有一個處理器</p><p>  ROM:4KB的片內(nèi)程序存儲器,存放開發(fā)調(diào)試完成的應(yīng)用程序</p><p>  RAM:256B的片內(nèi)數(shù)據(jù)存儲器,容量小,但作用大</p><

17、;p>  I/O口:P0-P3,共4個口32條雙向且可位尋址的I/O口線</p><p>  中斷系統(tǒng):共5個中斷源,3個內(nèi)部中斷,2個外部中斷</p><p>  定時器/計數(shù)器:2個16位的可編程定時器/計數(shù)器</p><p>  通用串行口:全雙工通用異步接收器/發(fā)送器</p><p>  振蕩器:89C52的外接晶振與內(nèi)部時鐘振

18、蕩器位CPU提供時鐘信號</p><p>  總線控制:89C52對外提供若干控制總線,便于系統(tǒng)擴展</p><p>  2.2.1晶體振蕩點路</p><p><b>  圖1 晶體振蕩電路</b></p><p>  89C52芯片內(nèi)部有一個高增益反相放大器,用于構(gòu)成振蕩器。引線XTAL1和 XTAL2分別為反向放大

19、器的輸入和輸出,兩端跨接石英晶體及兩個電容就可構(gòu)成穩(wěn)定的自激振蕩器。</p><p>  這里,我們選用52單片機12MHZ的內(nèi)部振蕩方式,電容器C1,C2起穩(wěn)定振蕩頻率,并對振蕩頻率有微調(diào)作用C1和C2可在20-100PF之間取值,這里取33P。</p><p><b>  2.2.2復(fù)位電路</b></p><p><b>  圖

20、2 復(fù)位電路</b></p><p>  采用上電加按鍵復(fù)位電路,上電后,由于電容充電,使RST持續(xù)一段高電平時間。當(dāng)單片機已在運行之中時,按下復(fù)位鍵也能使RST持續(xù)一段時間的高電平,從而實現(xiàn)上電加按鍵復(fù)位的操作。</p><p><b>  2.2.3按鍵電路</b></p><p><b>  圖3 按鍵電路</

21、b></p><p>  在按鍵電路中,我們可以在I/O口上直接接按鍵,或者通過I/O口設(shè)計一個鍵盤,然后通過鍵盤掃描程序判斷是否有鍵按下等。鍵盤掃描電路節(jié)省I/O口,但編程有些復(fù)雜,在這里,由于我們所用的按鍵較少,且系統(tǒng)是一個小系統(tǒng),有足夠的I/O口可以使用,為了使程序簡化,我們采用按鍵電路,用部分P1口做開關(guān),P1.0開始/暫停,P1.1保存,P1.2讀數(shù),P1.3復(fù)位,P1.4清零。對于按鍵的設(shè)計,采

22、用了防抖動的程序設(shè)計,使系統(tǒng)的性能得到進一步的提升。當(dāng)按鍵被按 下時,相應(yīng)的引腳被拉低,經(jīng)掃描后,獲得鍵值,并執(zhí)行鍵功能程序,因此按下不同的按鍵,將執(zhí)行不同的功能程序。</p><p><b>  2.2.4顯示電路</b></p><p><b>  圖4 顯示電路</b></p><p>  顯示電路既可以選用液晶顯示

23、器,也可以選用數(shù)碼管顯示。我們采用的是數(shù)碼管顯示電路。用兩個共陰極LED顯示,LED是七段式顯示器,內(nèi)部有7個條形發(fā)光二極管和1個小圓點發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。在用數(shù)碼管顯示時,我們有靜態(tài)和動態(tài)兩種選擇,靜態(tài)顯示程序簡單,顯示穩(wěn)定,但是占用端口比較多;動態(tài)顯示所使用的端口比較少,可以節(jié)省單片機的I/O口。在設(shè)計中,我們采用LED動態(tài)顯示,用P0口驅(qū)動顯示。由于P0口的輸出級是開漏電路,用它驅(qū)動時需要外接上拉電阻才能輸出

24、高電平。</p><p>  2.2.5 系統(tǒng)電路圖:</p><p><b>  圖五 系統(tǒng)電路</b></p><p><b>  三、軟件設(shè)計</b></p><p><b>  3.1設(shè)計特點</b></p><p>  在軟件設(shè)計中,一般采

25、用模塊化的程序設(shè)計方法,它具有明顯的優(yōu)點。把一個多功能的復(fù)雜的程序劃分為若干個簡單的、功能單一的程序模塊,有利于程序的設(shè)計和調(diào)試,優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結(jié)構(gòu)層次一目了然。應(yīng)用系統(tǒng)的程序由包含多個模塊的主程序和各種子程序組成。各程序模塊都</p><p>  要完成一個明確的任務(wù),實現(xiàn)某個具體的功能,如:計數(shù)、延時、和顯示等,在具體需要時調(diào)用相應(yīng)的模塊即可。</p><

26、p>  3.2秒表設(shè)計源程序</p><p><b>  源程序如下:</b></p><p>  #include <reg52.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p>

27、<p>  void diyi(); //函數(shù)聲明</p><p>  void xianshi();//函數(shù)聲明</p><p>  void panduan();//函數(shù)聲明</p><p>  void delay(uchar z);//函數(shù)聲明</p><p>  uchar t=0,i,j,temp,b; //定義

28、相關(guān)變量</p><p>  uchar code at[]={0xe0,0xd0,0xb0,0x70};</p><p>  uchar code as[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};</p><p>  uchar code bs[]={0x80,0x40,0x20,0x10,0x

29、08,0x04,0x02,0x01};</p><p>  uchar a[50];</p><p><b>  //數(shù)組定義</b></p><p>  void main()//主函數(shù)</p><p><b>  {</b></p><p><b>  diy

30、i();</b></p><p>  EA=0; //調(diào)用定義函數(shù) </p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  panduan(); //調(diào)用判斷函數(shù)</p><p>  xianshi

31、();//調(diào)用顯示函數(shù)</p><p><b>  }</b></p><p><b>  }</b></p><p>  void diyi()//定義定義子函數(shù)</p><p><b>  {</b></p><p>  P2=0xbf;P0=0

32、xbf; </p><p>  TMOD=0x01;</p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;</p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b

33、></p><p><b>  TR0=1;</b></p><p><b>  }</b></p><p>  void exer1() interrupt 1 //定義定時器/計數(shù)器子函數(shù)</p><p><b>  {</b></p><p&g

34、t;<b>  uchar t1;</b></p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;</p><p><b>  t1++;</b></p><p>  if(t1==20)</p><p&

35、gt;<b>  {</b></p><p>  t1=0; t++; </p><p><b>  if(t==99)</b></p><p><b>  t=0;</b></p><p><b>  }</b></p><p&

36、gt;<b>  }</b></p><p>  void xianshi()//定義顯示子函數(shù) </p><p><b>  {</b></p><p>  P2 = 0xdf;P0 =bs[0]; P2=0x1f; P0=0xff; P2 = 0xff; P0 =as[t%10]; P2=0x1f;P0=0x

37、00;delay(3);</p><p>  P2 = 0xdf;P0 =bs[1]; P2=0x1f; P0=0xff; P2 = 0xff; P0 =as[(t/10)%10]; P2=0x1f;P0=0x00;delay(3);</p><p><b>  }</b></p><p>  void delay(uchar z)//

38、延時子函數(shù)</p><p><b>  {</b></p><p>  uchar i,j;</p><p>  for(i=0;i<z;i++)</p><p>  for(j=0;j<110;j++);</p><p><b>  }</b></p>

39、;<p>  void panduan()//判斷子函數(shù)</p><p><b>  {</b></p><p><b>  P3=0xfe; </b></p><p><b>  delay(5);</b></p><p><b>  temp=P3

40、;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p><b>  delay(5);</b></p><p>  if(temp!=0xf0

41、)</p><p><b>  {</b></p><p>  P2 = 0xc0;P0 =bs[4]; P2=0x00;P0=0xff;P2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3);</p><p>  while(P3!=0xfe); //判斷是否有鍵按下及格鍵功能</p>

42、<p>  if(temp==at[0]) </p><p>  { EA=1;t=0;i=0;j=0; }</p><p>  if(temp==at[1])</p><p><b>  {</b></p><p><b>  if(i<52)<

43、/b></p><p><b>  a[i]=t;</b></p><p><b>  i++;</b></p><p><b>  }</b></p><p>  if(temp==at[2])</p><p><b>  {</

44、b></p><p><b>  if(b==1)</b></p><p><b>  { </b></p><p>  if(j<52) t=a[j]; </p><p><b>  j++; }</b></p><p><

45、b>  }</b></p><p>  if(temp==at[3])</p><p><b>  {</b></p><p>  EA=0;t=0; i=0;j=0;</p><p><b>  }</b></p><p>  P2 = 0xc0;P0

46、=bs[4]; P2=0x00;P0=0xff;P2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  P3=0xfd; </b></p><

47、;p><b>  delay(5);</b></p><p><b>  temp=P3;</b></p><p>  temp=temp&0xf0;</p><p>  if(temp!=0xf0)</p><p><b>  {</b></p>

48、<p><b>  delay(5);</b></p><p>  if(temp!=0xf0)</p><p><b>  {</b></p><p>  P2 = 0xc0;P0 =bs[4]; P2=0x00;P0=0xff;P2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;del

49、ay(3);</p><p>  while(P3!=0xfd); //判斷是否有鍵按下及格鍵功能</p><p>  if(temp==at[0]) </p><p>  { EA=0; b=1;}</p><p>  P2 = 0xc0;P0 =bs[4]; P2=0x00;P0=0xff;P

50、2 = 0xe0;P0 =0xff;P2=0x00;P0=0x00;delay(3);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  3.3程序流程圖</b&g

51、t;</p><p><b>  四、結(jié)論與心得</b></p><p>  經(jīng)過幾個星期的課程設(shè)計,我學(xué)會了很多知識和技能。我從一開始對單片機一竅不通到現(xiàn)在的理解,我花費了很多的時間和精力,比如上網(wǎng)查閱資料,去圖書館借相關(guān)書籍,向身邊的同學(xué)討教等等。我重新對c語言又有了一些新的理解,也對單片機產(chǎn)生了濃厚的興趣。單片機對于我們電子專業(yè)的學(xué)生來說是一門很重要的學(xué)科,所以

52、我們好好學(xué)號這一門技術(shù),這對于我們未來的發(fā)展有很大的幫助。下面我來談?wù)劚救送ㄟ^這次課程設(shè)計的一些體會:</p><p>  (1)、這段日子里,通過學(xué)習(xí)的理論知識和實踐相結(jié)合,我收獲了很多,這些收獲將是我人生的寶貴財富。</p><p>  (2)、通過這次課程設(shè)計,讓我養(yǎng)成了發(fā)現(xiàn)問題、提出問題、解決問題的好習(xí)慣,也使我善于思考和動手,更增強了我與同學(xué)們的交流合作。</p>

53、<p>  (3)、這次課程設(shè)計不僅讓我對c語言有了很大的認識,使我的編程能力有了很大的提高,也讓我對單片機產(chǎn)生了濃厚的興趣。</p><p>  (4)、通過這次課程設(shè)計,切實的提高了我的動手能力和解決實際問題的能力。</p><p>  總之,這次課程設(shè)計雖然沒有達到我的預(yù)期,但是結(jié)果我還是可以接受的,畢竟這是自己的第一次接觸單片機。通過這次課程設(shè)計,不僅加深了我對c語言的理

54、解,更是讓我認識了單片機理論,鍛煉了我的動手能力和思考能力,使我養(yǎng)成了做事耐心和細心的習(xí)慣。最后感謝老師的指導(dǎo)和同學(xué)們的幫助。</p><p><b>  五、參考文獻</b></p><p>  [1]于海生。微型計算機控制技術(shù)、清華大學(xué)出版社</p><p>  [2]周立功。單片機實驗與實踐、北京航空航艦大學(xué)出版社</p>

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論