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

下載本文檔

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

文檔簡介

1、<p>  《單片機原理及應(yīng)用》課程設(shè)計</p><p>  題目:單片機電子時鐘</p><p><b>  班 級: </b></p><p><b>  姓 名: </b></p><p><b>  學(xué) 號: </b></p>

2、<p><b>  指導(dǎo)教師: </b></p><p><b>  目錄</b></p><p>  第一章 前言..............................................................1</p><p>  第二章 設(shè)計目的與要求...........

3、...............................2</p><p>  第三章 系統(tǒng)原理分析..............................................3</p><p>  第四章 硬件介紹......................................................4</p><p>

4、;  第五章 軟件實現(xiàn)與流程..........................................5</p><p>  5.1 主程序...................................................................5</p><p>  5.2 數(shù)據(jù)的顯示程序..............................

5、.....................7</p><p>  5.3 鍵盤響應(yīng)程序.......................................................8</p><p>  第六章 結(jié)束語..........................................................9</p><p&g

6、t;  參考文獻.....................................................................10</p><p>  附錄一 程序代碼.....................................................11</p><p>  附錄二 程序仿真圖.....................

7、............................15</p><p><b>  第一章 前言</b></p><p>  時鐘,自從它發(fā)明的那天起,就成為人類的朋友,但隨著時間的推移,科學(xué)技術(shù)的不斷發(fā)展,人們對時間計量的精度要求越來越高,應(yīng)用越來越廣。怎樣讓時鐘更好的為人民服務(wù),怎樣讓我們的老朋友煥發(fā)青春呢?這就要求人們不斷設(shè)計出新型時鐘。</p&g

8、t;<p>  現(xiàn)今,高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用LED顯示器代替顯示器代替指針顯示進而顯示時間,減小了計時誤差,這種表具有時,分,秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。</p><p>  時鐘電路在計算機系統(tǒng)中起

9、著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個單片機應(yīng)用系統(tǒng)中,時鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標準定時時鐘,即定時時間,它通常有兩種實現(xiàn)方法:一是用軟件實現(xiàn),即用單片機內(nèi)部的可編程定時/計數(shù)器來實現(xiàn),但誤差很大,主要用在對時間精度要求不高的場合;二是用專門的時鐘芯片實現(xiàn),在對時間精度要求很高的情況下,通常采用這種方法,典

10、型的時鐘芯片有:DS1302,DS12887,X1203等都可以滿足高精度的要求。</p><p>  本文主要介紹用單片機內(nèi)部的定時/計數(shù)器來實現(xiàn)電子時鐘的方法,本設(shè)計由單片機AT89S51芯片和LED數(shù)碼管為核心,輔以必要的電路,構(gòu)成了一個單片機電子時鐘。</p><p>  第二章 設(shè)計目的與要求</p><p>  進行電路硬件設(shè)計和系統(tǒng)軟件編程,以及仿真調(diào)

11、試或制作。一般3~5人一組,每組完成的內(nèi)容不能雷同。</p><p>  選擇設(shè)計基于單片機的時鐘顯示器,數(shù)字鐘是一個將“時”、“分”、“秒”顯示計時裝置。它的計時周期為24小時,顯示滿刻度為23時59分59秒99毫秒,另外應(yīng)有校時功能。</p><p>  實現(xiàn)的功能:在數(shù)字鐘正常進行顯示時,其顯示周期為00:00:00至23:59:59,其中有五個按鍵,按下“暫?!辨I時鐘停止走動,按下

12、“開始”鍵時鐘開始走動,按下“秒設(shè)置”時鐘秒位自加1,加至60時向分位進1,按下“分設(shè)置”時鐘分位自加1,加至60時向時位進1,按下“時設(shè)置”時鐘秒位自加1,加至24時顯示00。</p><p>  第三章 系統(tǒng)原理分析</p><p>  系統(tǒng)設(shè)計中用到 89 C51 單片機的部分功能:包括內(nèi)部定時器,鍵盤擴展,程序中斷, 串口通信等。用一個六位的共陰極七段顯示器,可通過一個輸入/輸出口

13、作為顯示器數(shù)據(jù)發(fā)送端;另一個輸入/輸出口的六位作為顯示器各位的片選信號,另一個輸入/輸出口作為鍵盤擴展口使用。系統(tǒng)原理圖如圖1所示。</p><p><b>  圖1 系統(tǒng)原理圖</b></p><p><b>  圖2 數(shù)字鐘仿真圖</b></p><p><b>  第四章 硬件介紹</b>&l

14、t;/p><p>  AT89C51:芯片共有40個引腳,引腳的排列順序為從靠芯片的缺口左邊那列逆時針數(shù)起,依次為1,2,3,4、、、40,其中芯片的1腳頂上有一個凹點。在單片機的40 個引腳中,電源引腳2根,外接晶體振蕩器引腳2根,控制引腳4根以及4組8為可編程I/O引腳32根。</p><p>  主要特性:與MCS-51兼容;4K字節(jié)可編程閃爍存儲器;壽命:1000寫/擦循環(huán);數(shù)據(jù)保留時

15、間:10年;全靜態(tài)工作:0Hz-24Hz;三級程序存儲器鎖定: 128*8位內(nèi)部RAM; 32可編程I/O線;兩個16位定時器/計數(shù)器; 5個中斷源;可編程串行通道;低功耗的閑置和掉電模式;片內(nèi)振蕩器和時鐘電路。</p><p>  主要管腳說明: P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)

16、據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。</p><p>  P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。</p

17、><p>  P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸

18、出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。</p><p>  P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 </p><p>  六位共陰級數(shù)碼管:cc表示共陰極的ac是共

19、陽極的設(shè)計中所用的是7段六位共陰級數(shù)碼管,如果要實現(xiàn)動態(tài)顯示必須位碼(1-6)輪流通低電位,也就是片選,段碼控制數(shù)碼管的顯示. 0-b,1-g,2-a,3-f,4-c,5-e,6-h,7-d。</p><p>  圖3數(shù)碼管顯示原理圖</p><p>  如圖3數(shù)碼管顯示原理圖所示,使用LED顯示器時,要注意是共陰還是共陽,要注意區(qū)分這兩種不同的接法。為了顯示數(shù)字或字符,必須對數(shù)字或字符進

20、行編碼。七段數(shù)碼管加上一個小數(shù)點,共計8段。因此為LED顯示器提供的編碼正好是一個字節(jié)。我們用的是共陰LED顯示器,根據(jù)電路連接圖顯示16進制數(shù)的編碼已列在下表。</p><p>  0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,</p><p>  0 1 2 3 4 5</p><p> 

21、 0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c ,</p><p>  6 7 8 9 A B</p><p>  0x39 , 0x5e , 0x79 , 0x71 , 0x00</p><p>  C D E F 無顯示</p><p>  動態(tài)顯示的

22、特點是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效,由另一位控制顯示碼值。選亮數(shù)碼管采用動態(tài)掃描顯示。所謂動態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數(shù)碼管同時都在顯示。動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時應(yīng)略小于靜態(tài)顯示電路中的。我們這里正是利用的數(shù)碼管動態(tài)顯示來完成顯示功能。</p><p>  第五章 軟

23、件實現(xiàn)與流程</p><p><b>  5.1 主程序</b></p><p>  由于系統(tǒng)的主要功能都是由子程序來完成的,主程序基本上沒什么事可做,只是利用調(diào)用子程序的方式實現(xiàn)的,主程序流程圖如圖3所示。</p><p><b>  圖3 主程序流程圖</b></p><p>  5.2 數(shù)據(jù)的

24、顯示程序</p><p>  時鐘數(shù)字顯示涉及到兩個操作:發(fā)數(shù)據(jù)和改片選信號。先發(fā)片選,再發(fā)數(shù)據(jù)。用延時程序進行一個消影操作,這樣就很好地解決了重影問題。這樣做的關(guān)鍵在于,在極短的一段時間內(nèi)讓顯示器都不亮,等一切準備工作都做好了以后再發(fā)數(shù)據(jù),只要顯示頻率足夠快,是看不出顯示器有閃爍的。代碼如下:</p><p>  shi=hour/10;</p><p>  ge

25、=hour%10;</p><p><b>  P3=0xfe;</b></p><p>  P2=table1[shi];</p><p><b>  delay(5);</b></p><p><b>  P3=0xfd;</b></p><p> 

26、 P2=table1[ge];</p><p><b>  dp=1;</b></p><p>  delay(5); </p><p>  這段顯示程序流程圖如圖4:</p><p>  圖4 數(shù)據(jù)顯示流程圖</p><p>  5.3 鍵盤響應(yīng)程序</p><p>  

27、鍵盤分編碼鍵盤和非編碼鍵盤,鍵盤上閉合鍵的識別由專用的硬件編碼器實現(xiàn),并產(chǎn)生按鍵編碼號或鍵值的稱為編碼鍵盤,如計算機鍵盤。而靠軟件編程來識別的稱為非編碼鍵盤,在單片機組成的各種系統(tǒng)中,用的最多的是非編碼鍵盤,也有用到編碼鍵盤的,我們這里用的就是非編碼鍵盤。如圖4鍵盤圖所示,當(dāng)按鈕按下時;端口會變成低電平,我們設(shè)計一段掃描程序來判斷那個端口是低電平來判斷是否有按鍵按下。</p><p>  鍵盤處理程序流程相對簡單

28、,只是簡單的判鍵與處理。當(dāng)設(shè)置按鍵按下為低電平時,對應(yīng)位數(shù)加1至滿進制。</p><p>  圖5 按鍵響應(yīng)程序流程</p><p><b>  第六章 結(jié)束語</b></p><p>  通過這次單片機設(shè)計,我加深了對課本專業(yè)知識的理解,平常都是理論知識的學(xué)習(xí),在此次課程設(shè)計中,真正做到了自己查閱資料、完成一個基本電路的設(shè)計。在此次的數(shù)字鐘

29、設(shè)計過程中,我更進一步地熟悉了芯片的結(jié)構(gòu)及掌握了各芯片的工作原理和其具體的使用方法。當(dāng)然,在這個過程中我也遇到了困難,通過查閱資料,相互討論,我準確地找出錯誤所在并及時糾正了,這也是我最大的收獲,使自己的實驗動手能力有了進一步的提高,讓我對以后的工作學(xué)習(xí)有了更大的信心。</p><p>  回顧起此次設(shè)計,感慨頗多,從理論到實踐,我學(xué)到很多很多的東西,不僅鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上沒有學(xué)到過的

30、內(nèi)容。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才是真正的知識,才能提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程遇到了各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設(shè)計,把以前所學(xué)過的知識重新溫故,鞏固了所學(xué)的知識。</p><p>  此次

31、的課程設(shè)計,還讓我知道了最重要的是心態(tài),在你拿到題目時會覺得困難,但是只要充滿信心,腳踏實地,就肯定會完成的。</p><p><b>  參考文獻</b></p><p>  [1]張齊、朱寧西編著.《單片機系統(tǒng)設(shè)計與開發(fā)--基于Proteus單片機仿真和C語言編程》北京:機械工業(yè)出版社.2008年</p><p>  [2]馬忠梅編著.《單

32、片機的C語言應(yīng)用程序設(shè)計(第4版)》.北京:北京航天航空大學(xué)出版社.2007年</p><p>  [3]李學(xué)禮編著.《基于Proteus的8051單片機實例教程》電子工業(yè)出版社,2008年</p><p>  [4]戴佳戴、衛(wèi)恒、劉博文編著.《51單片機C語言應(yīng)用程序設(shè)計實例精講》電子工業(yè)出版社.2008年</p><p>  [5]侯玉寶編著.《基于Proteu

33、s的51系列單片機設(shè)計與仿真》電子工業(yè)出版社.2008年</p><p><b>  附錄一 程序代碼</b></p><p>  #include<reg51.h></p><p>  #define uchar unsigned char </p><p>  #define uint unsigned

34、 int</p><p>  sbit set1=P1^0;//暫停</p><p>  sbit set2=P1^1;//開始</p><p>  sbit sets=P1^2;//秒設(shè)置</p><p>  sbit setm=P1^3;//分設(shè)置</p><p>  sbit seth=P1^4;//時設(shè)置<

35、;/p><p>  sbit dp=P2^7;//小數(shù)點</p><p>  uchar code table1[]={</p><p>  0x3f,0x06,0x5b,0x4f,</p><p>  0x66,0x6d,0x7d,0x07,</p><p>  0x7f,0x6f,0x77,0x7c,</p>

36、;<p>  0x39,0x5e,0x79,0x71};</p><p>  uchar t0,hour,fen,miao,ge,shi,flag;</p><p>  void delay(uint z) //延時子程序z的取值為這個函數(shù)的延時ms數(shù),如delay(200);大約延時200ms</p><p><b>  {</b&

37、gt;</p><p><b>  uint x,y;</b></p><p>  for(x=z;x>0;x--)</p><p>  for(y=110;y>0;y--); </p><p><b>  }</b></p><p>  void

38、init()</p><p><b>  {</b></p><p>  TMOD=0x01; //TMOD的值表示定時器工作方式選擇</p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;</p><p>  EA=1;

39、 //開總中斷</p><p>  ET0=1; //允許定時器0中斷</p><p>  TR0=1; //啟動定時器</p><p><b>  } </b></p><p>  void timer0() interrupt 1 //定時器0的中斷號是1</p><p><b>

40、  {</b></p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;</p><p><b>  t0++;</b></p><p>  if(t0==20)</p><p><b>  {<

41、/b></p><p><b>  t0=0;</b></p><p><b>  miao++;</b></p><p>  if(miao==60)</p><p><b>  {</b></p><p><b>  miao=0;&

42、lt;/b></p><p><b>  fen++;</b></p><p>  if(fen==60)</p><p><b>  {</b></p><p><b>  fen=0;</b></p><p><b>  hour++

43、;</b></p><p>  if(hour==24)</p><p><b>  hour=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b

44、></p><p><b>  }</b></p><p>  void display(uchar hour,uchar fen,uchar miao)</p><p><b>  {</b></p><p>  shi=hour/10;</p><p>  ge=h

45、our%10;</p><p><b>  P3=0xfe;</b></p><p>  P2=table1[shi];</p><p><b>  delay(5);</b></p><p><b>  P3=0xfd;</b></p><p>  P

46、2=table1[ge];</p><p><b>  dp=1;</b></p><p>  delay(5); </p><p>  shi=fen/10;</p><p>  ge=fen%10;</p><p><b>  P3=0xfb;</b></p>

47、<p>  P2=table1[shi];</p><p><b>  delay(5);</b></p><p><b>  P3=0xf7;</b></p><p>  P2=table1[ge];</p><p><b>  dp=1;</b></p&

48、gt;<p><b>  delay(5);</b></p><p>  shi=miao/10;</p><p>  ge=miao%10;</p><p><b>  P3=0xef;</b></p><p>  P2=table1[shi];</p><p&g

49、t;<b>  delay(5);</b></p><p><b>  P3=0xdf;</b></p><p>  P2=table1[ge];</p><p>  delay(5); </p><p><b>  }</b></p><p>  vo

50、id keyscan()</p><p>  { </p><p>  if(set1==0)</p><p>  { delay(5);</p><p>  if(set1==0)</p><p><b>  {</b></p><p><b

51、>  TR0=0;</b></p><p><b>  flag=1;</b></p><p><b>  }</b></p><p>  while(!set1);</p><p>  } </p><p>  if(flag==1

52、) </p><p>  { if(sets==0)</p><p><b>  {</b></p><p><b>  delay(5);</b></p><p>  if(sets==0)</p><p><b>  { </b><

53、/p><p><b>  miao++;</b></p><p>  if(miao==60)</p><p><b>  {</b></p><p><b>  miao=0;</b></p><p><b>  fen++;</b>

54、</p><p>  if(fen==60)</p><p><b>  {</b></p><p><b>  fen=0;</b></p><p><b>  hour++;</b></p><p>  if(hour==24)</p>

55、<p><b>  hour=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  while(!sets);</p><p

56、><b>  }</b></p><p><b>  }</b></p><p>  if(setm==0)</p><p><b>  {</b></p><p><b>  delay(5);</b></p><p>  

57、if(setm==0)</p><p><b>  {</b></p><p><b>  fen++;</b></p><p>  if(fen==60)</p><p><b>  {</b></p><p><b>  fen=0;<

58、;/b></p><p><b>  hour++;</b></p><p>  if(hour==24)</p><p><b>  hour=0;</b></p><p><b>  }</b></p><p><b>  }<

59、/b></p><p>  while(!setm);</p><p><b>  }</b></p><p>  if(seth==0)</p><p><b>  {</b></p><p><b>  delay(5);</b></p&

60、gt;<p>  if(seth==0)</p><p>  { hour++;</p><p>  if(hour==24)</p><p><b>  hour=0;</b></p><p><b>  }</b></p><p>  while(!se

61、th);</p><p><b>  }</b></p><p>  if(set2==0)</p><p><b>  {</b></p><p><b>  delay(5);</b></p><p>  if(set2==0)</p>

62、<p><b>  {</b></p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;</p><p><b>  t0=0;</b></p><p><b>  flag=0;</b>&l

63、t;/p><p><b>  TR0=1;</b></p><p><b>  }</b></p><p>  while(!set2);</p><p><b>  }</b></p><p><b>  }</b></p>

64、;<p>  void main()</p><p><b>  {</b></p><p><b>  init();</b></p><p><b>  while(1)</b></p><p>  { display(hour,fen,miao); /

溫馨提示

  • 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

提交評論