簡易數(shù)字鐘的單片機課程設計1_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  1.前言</b></p><p>  隨著電子技術的迅猛發(fā)展和超大集成電路設計和制造工藝的進一步提高,單片機也有了迅速的發(fā)展,各種新穎的單片機產(chǎn)品層出不窮,令人目不暇接。當前單片機技術已滲透到國防尖端、工業(yè)、農(nóng)業(yè)、日常生活的各個領域,成為當今世界現(xiàn)代化不可缺少的工具和強有力的武器。單片機技術是當代理工科大學生必會的技能之一。</p><p&g

2、t;  單片機的學習和掌握是當前迫切的任務和要求,為此進行了本次設計,本次設計旨在提高對單片機的內(nèi)部硬件電路的理解和軟件編程能力的提高,真正體驗一下產(chǎn)品的研發(fā)和制造的各部分流程,在一定程度上加強了對工程設計的理解和實際操作。</p><p>  簡易數(shù)字鐘是對單片機的一次綜合的應用,對單片機中至關重要的中斷概念的理解有著十分重要的意義,簡易數(shù)字鐘不僅需要時間的準確跟需要有廉價的電路組成即將部分硬件用軟件編程的方法

3、加以代替,降低成本以提高市場的競爭力,這是對單片機設計的最高要求。</p><p>  本次設計就是針對以上問題的一種解決策略,希望通過后面的設計對讀者有所啟發(fā)和鼓勵,單片機其實很簡單,天下無難事,勇者必勝之。</p><p>  2.MCS-51單片機系統(tǒng)簡介</p><p>  MCS51是指由美國INTEL公司(對了,就是大名鼎鼎的INTEL)生產(chǎn)的一系列單片

4、機的總稱,這一系列單片機包括了好些品種,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的產(chǎn)品,該系列其它單片機都是在8051的基礎上進行功能的增、減、改變而來的,所以人們習慣于用8051來稱呼MCS51系列單片機,而8031是前些年在我國最流行的單片機,所以很多場合會看到8031的名稱。INTEL公司將MCS51的核心技術授權給了很多其它公司,所以有很多公司在做以8051為核心的單片機,當然,功

5、能或多或少有些改變,以滿足不同的需求,其中89C51就是這幾年在我國非常流行的單片機,它是由美國ATMEL公司開發(fā)生產(chǎn)的。以后我們將用89C51、89S51來完成一系列的實驗。</p><p>  MCS-51系列單片機</p><p>  MCS-51系列單片機分為兩大系列,即51子系列與52子系列。</p><p>  51子系列:基本型,根據(jù)片內(nèi)ROM的配置,

6、對應的芯片為8031、8051、8751、8951</p><p>  52子系列:增強型,根據(jù)片內(nèi)ROM的配置,對應的芯片為8032、8052、8752、8952</p><p>  這兩大系列單片機的主要硬件特性如下表:</p><p>  上表中可以看到,8031、8031、8032、80C32片內(nèi)是沒有ROM的,對應著上表看,我們可以發(fā)現(xiàn),51系列的單片機的

7、RAM大小為128B,52系列的RAM大小為256B,51系列的計數(shù)器為兩個16位的,52系列的計數(shù)器為三個16位計數(shù)器。51系列的中斷源為5個,52系列的中斷源為6個。</p><p><b>  3.課程設計背景</b></p><p>  近年來隨著計算機在社會領域的滲透和大規(guī)模集成電路的發(fā)展,單片機的應用正在不斷地走向深入,由于它具有功能強,體積小,功耗低,價

8、格便宜,工作可靠,使用方便等特點,因此特別適合于與控制有關的系統(tǒng),越來越廣泛地應用于自動控制,智能化儀器,儀表,數(shù)據(jù)采集,軍工產(chǎn)品以及家用電器等各個領域,單片機往往是作為一個核心部件來使用,在根據(jù)具體硬件結構,以及針對具體應用對象特點的軟件結合,以作完善。</p><p>  關鍵字 : 單片機 時鐘設計 MC51</p><p>  4.MCS-51單片機中斷系統(tǒng)的結構5個中斷源的符號

9、、名稱及產(chǎn)生的條件如下。INT0:外部中斷0,由P3.2端口線引入,低電平或下跳沿引起。INT1:外部中斷1,由P3.3端口線引入,低電平或下跳沿引起。T0:定時器/計數(shù)器0中斷,由T0計滿回零引起。T1:定時器/計數(shù)器l中斷,由T1計滿回零引起。TI/RI:串行I/O中斷,串行端口完成一幀字符發(fā)送/接收后引起。</p><p>  ?MCS-51單片機中斷系統(tǒng)的結構</p><p

10、><b>  5.課程設計原理</b></p><p>  單片機控制的數(shù)字鐘的硬件結構與軟件設計,給出了匯編語言源程序。此數(shù)字鐘是一個將“時”、“分”、“秒”顯示于人的視覺器官的計時裝置。顯示器件選用LED七段數(shù)碼管。在譯碼顯示電路輸出的驅(qū)動下,顯示出清晰、直觀的數(shù)字符號。針對數(shù)字鐘會產(chǎn)生走時誤差的現(xiàn)象,在電路中就設計有有校準時間功能的電路。使用動態(tài)數(shù)碼顯示的方法,運用獨立式按鍵識別

11、過程,按“時”,“分”,“秒”數(shù)據(jù)送出顯示處理方法。</p><p><b>  6.實驗任務 </b></p><p>  1. 開機時,顯示12:00:00的時間開始計時;</p><p>  2. P0.0/AD0控制“秒”的調(diào)整,每按一次加1秒;</p><p>  3. P0.1/AD1控制“分”的調(diào)整,每按一

12、次加1分;</p><p>  4. P0.2/AD2控制“時”的調(diào)整,每按一次加1個小時</p><p><b>  7.電路原理</b></p><p>  8. 系統(tǒng)板上硬件連線</p><p>  1. 把“單片機系統(tǒng)”區(qū)域中的P1.0-P1.7端口用8芯排線連接到“動態(tài)數(shù)碼顯示”區(qū)域中的A-H端口上;</

13、p><p>  2. 把“單片機系統(tǒng):區(qū)域中的P3.0-P3.7端口用8芯排線連接到“動態(tài)數(shù)碼顯示”區(qū)域中的S1-S8端口上;</p><p>  3. 把“單片機系統(tǒng)”區(qū)域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分別用導線連接到“獨立式鍵盤”區(qū)域中的SP3、SP2、SP1端口上;</p><p><b>  9.元件清單</b>

14、;</p><p>  基于AT89S51單片機數(shù)字鐘的元件清單如下表。</p><p><b>  10.程序清單</b></p><p><b>  6. 匯編源程序</b></p><p>  SECOND EQU 30H</p><p>  MINITE EQU 31

15、H</p><p>  HOUR EQU 32H</p><p>  HOURK BIT P0.0</p><p>  MINITEK BIT P0.1</p><p>  SECONDK BIT P0.2</p><p>  DISPBUF EQU 40H</p><p>  DISPBIT

16、EQU 48H</p><p>  T2SCNTA EQU 49H</p><p>  T2SCNTB EQU 4AH</p><p>  TEMP EQU 4BH</p><p><b>  ORG 00H</b></p><p>  LJMP START</p><p>

17、;<b>  ORG 0BH</b></p><p>  LJMP INT_T0</p><p>  START: MOV SECOND,#00H</p><p>  MOV MINITE,#00H</p><p>  MOV HOUR,#12</p><p>  MOV DISPBIT,#00H

18、</p><p>  MOV T2SCNTA,#00H</p><p>  MOV T2SCNTB,#00H</p><p>  MOV TEMP,#0FEH</p><p>  LCALL DISP</p><p>  MOV TMOD,#01H</p><p>  MOV TH0,#(655

19、36-2000) / 256</p><p>  MOV TL0,#(65536-2000) MOD 256</p><p><b>  SETB TR0</b></p><p><b>  SETB ET0</b></p><p><b>  SETB EA</b></

20、p><p>  WT: JB SECONDK,NK1</p><p>  LCALL DELY10MS</p><p>  JB SECONDK,NK1</p><p>  INC SECOND</p><p>  MOV A,SECOND</p><p>  CJNE A,#60,NS60<

21、/p><p>  MOV SECOND,#00H</p><p>  NS60: LCALL DISP</p><p>  JNB SECONDK,$</p><p>  NK1: JB MINITEK,NK2</p><p>  LCALL DELY10MS</p><p>  JB MINITE

22、K,NK2</p><p>  INC MINITE</p><p>  MOV A,MINITE</p><p>  CJNE A,#60,NM60</p><p>  MOV MINITE,#00H</p><p>  NM60: LCALL DISP</p><p>  JNB MINIT

23、EK,$</p><p>  NK2: JB HOURK,NK3</p><p>  LCALL DELY10MS</p><p>  JB HOURK,NK3</p><p><b>  INC HOUR</b></p><p>  MOV A,HOUR</p><p>

24、  CJNE A,#24,NH24</p><p>  MOV HOUR,#00H</p><p>  NH24: LCALL DISP</p><p>  JNB HOURK,$</p><p>  NK3: LJMP WT</p><p><b>  DELY10MS:</b></p&g

25、t;<p>  MOV R6,#10</p><p>  D1: MOV R7,#248</p><p><b>  DJNZ R7,$</b></p><p>  DJNZ R6,D1</p><p><b>  RET</b></p><p><b&g

26、t;  DISP: </b></p><p>  MOV A,#DISPBUF</p><p><b>  ADD A,#8</b></p><p><b>  DEC A</b></p><p><b>  MOV R1,A</b></p><

27、p>  MOV A,HOUR</p><p><b>  MOV B,#10</b></p><p><b>  DIV AB</b></p><p><b>  MOV @R1,A</b></p><p><b>  DEC R1</b></

28、p><p><b>  MOV A,B</b></p><p><b>  MOV @R1,A</b></p><p><b>  DEC R1</b></p><p><b>  MOV A,#10</b></p><p><b

29、>  MOV@R1,A</b></p><p><b>  DEC R1</b></p><p>  MOV A,MINITE</p><p><b>  MOV B,#10</b></p><p><b>  DIV AB</b></p>&l

30、t;p><b>  MOV @R1,A</b></p><p><b>  DEC R1</b></p><p><b>  MOV A,B</b></p><p><b>  MOV @R1,A</b></p><p><b>  DEC

31、 R1</b></p><p><b>  MOV A,#10</b></p><p><b>  MOV@R1,A</b></p><p><b>  DEC R1</b></p><p>  MOV A,SECOND</p><p>&l

32、t;b>  MOV B,#10</b></p><p><b>  DIV AB</b></p><p><b>  MOV @R1,A</b></p><p><b>  DEC R1</b></p><p><b>  MOV A,B</b

33、></p><p><b>  MOV @R1,A</b></p><p><b>  DEC R1</b></p><p><b>  RET</b></p><p><b>  INT_T0:</b></p><p>  

34、MOV TH0,#(65536-2000) / 256</p><p>  MOV TL0,#(65536-2000) MOD 256</p><p>  MOV A,#DISPBUF</p><p>  ADD A,DISPBIT</p><p><b>  MOV R0,A</b></p><p&

35、gt;<b>  MOV A,@R0</b></p><p>  MOV DPTR,#TABLE</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P1,A</b></p><p>  MOV A,DISPBIT</p><p>  MOV

36、 DPTR,#TAB</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P3,A</b></p><p>  INC DISPBIT</p><p>  MOV A,DISPBIT</p><p>  CJNE A,#08H,KNA</p><

37、;p>  MOV DISPBIT,#00H</p><p>  KNA: INC T2SCNTA</p><p>  MOV A,T2SCNTA</p><p>  CJNE A,#100,DONE</p><p>  MOV T2SCNTA,#00H</p><p>  INC T2SCNTB</p>

38、;<p>  MOV A,T2SCNTB</p><p>  CJNE A,#05H,DONE</p><p>  MOV T2SCNTB,#00H</p><p>  INC SECOND</p><p>  MOV A,SECOND</p><p>  CJNE A,#60,NEXT</p>

39、;<p>  MOV SECOND,#00H</p><p>  INC MINITE</p><p>  MOV A,MINITE</p><p>  CJNE A,#60,NEXT</p><p>  MOV MINITE,#00H</p><p><b>  INC HOUR</b&

40、gt;</p><p>  MOV A,HOUR</p><p>  CJNE A,#24,NEXT</p><p>  MOV HOUR,#00H</p><p>  NEXT: LCALL DISP</p><p>  DONE: RETI</p><p>  TABLE: DB 3FH,0

41、6H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H</p><p>  TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH</p><p><b>  END</b></p><p><b>  C語言源程序</b></p><p&g

42、t;  #include <AT89X51.H></p><p>  unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,</p><p>  0x66,0x6d,0x7d,0x07,</p><p>  0x7f,0x6f,0x77,0x7c,</p><p>  0x39,0x

43、5e,0x79,0x71,0x00};</p><p>  unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,</p><p>  0xef,0xdf,0xbf,0x7f};</p><p>  unsigned char dispbuf[8]={0,0,16,0,0,16,0,0};</p><p

44、>  unsigned char dispbitcnt;</p><p>  unsigned char second;</p><p>  unsigned char minite;</p><p>  unsigned char hour;</p><p>  unsigned int tcnt;</p><p&

45、gt;  unsigned char mstcnt;</p><p>  unsigned char i,j;</p><p>  void main(void)</p><p><b>  {</b></p><p>  TMOD=0x02;</p><p><b>  TH0=0x0

46、6;</b></p><p><b>  TL0=0x06;</b></p><p><b>  TR0=1;</b></p><p><b>  ET0=1;</b></p><p><b>  EA=1;</b></p>&l

47、t;p><b>  while(1)</b></p><p><b>  {</b></p><p>  if(P0_0==0)</p><p><b>  {</b></p><p>  for(i=5;i>0;i--)</p><p> 

48、 for(j=248;j>0;j--);</p><p>  if(P0_0==0)</p><p><b>  {</b></p><p><b>  second++;</b></p><p>  if(second==60)</p><p><b>  

49、{</b></p><p><b>  second=0;</b></p><p><b>  }</b></p><p>  dispbuf[0]=second%10;</p><p>  dispbuf[1]=second/10;</p><p>  whil

50、e(P0_0==0);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(P0_1==0)</p><p><b>  {</b></p><p>  for(i=5;i>0;i--)<

51、/p><p>  for(j=248;j>0;j--);</p><p>  if(P0_1==0)</p><p><b>  {</b></p><p><b>  minite++;</b></p><p>  if(minite==60)</p>&l

52、t;p><b>  {</b></p><p><b>  minite=0;</b></p><p><b>  }</b></p><p>  dispbuf[3]=minite%10;</p><p>  dispbuf[4]=minite/10;</p>

53、;<p>  while(P0_1==0);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(P0_2==0)</p><p><b>  {</b></p><p>  for(i

54、=5;i>0;i--)</p><p>  for(j=248;j>0;j--);</p><p>  if(P0_2==0)</p><p><b>  {</b></p><p><b>  hour++;</b></p><p>  if(hour==24)

55、</p><p><b>  {</b></p><p><b>  hour=0;</b></p><p><b>  }</b></p><p>  dispbuf[6]=hour%10;</p><p>  dispbuf[7]=hour/10;&

56、lt;/p><p>  while(P0_2==0);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

57、<p>  void t0(void) interrupt 1 using 0</p><p><b>  {</b></p><p><b>  mstcnt++;</b></p><p>  if(mstcnt==8)</p><p><b>  {</b>&l

58、t;/p><p><b>  mstcnt=0;</b></p><p>  P1=dispcode[dispbuf[dispbitcnt]];</p><p>  P3=dispbitcode[dispbitcnt];</p><p>  dispbitcnt++;</p><p>  if(dis

59、pbitcnt==8)</p><p><b>  {</b></p><p>  dispbitcnt=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  tcnt++;</

60、b></p><p>  if(tcnt==4000)</p><p><b>  {</b></p><p><b>  tcnt=0;</b></p><p><b>  second++;</b></p><p>  if(second==6

61、0)</p><p><b>  {</b></p><p><b>  second=0;</b></p><p><b>  minite++;</b></p><p>  if(minite==60)</p><p><b>  {<

62、;/b></p><p><b>  minite=0;</b></p><p><b>  hour++;</b></p><p>  if(hour==24)</p><p><b>  {</b></p><p><b>  hou

63、r=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  dispbuf[0]=second%10;</p><p>  dispbuf[1]

64、=second/10;</p><p>  dispbuf[3]=minite%10;</p><p>  dispbuf[4]=minite/10;</p><p>  dispbuf[6]=hour%10;</p><p>  dispbuf[7]=hour/10;</p><p><b>  }<

65、/b></p><p><b>  }   </b></p><p><b>  11.參考文獻</b></p><p>  [1] 許瑛琪, 陳劉源編著. 單片機程序設計實例. 北京:清化大學出版社。2002</p><p>  [2] 楊居義編著. 單片機課程設計實例教程. 北京:清華大學

66、出版社。2010</p><p>  [3] 楊居義, 馬寧,勒光明,王益斌編著. 單片機原理與工程應用. 北京:清華大學出版社。2009</p><p>  [4] 樓然苗,李光飛編著. 單片機課程設計指導. 北京:北京航空航天大學出版社。2007</p><p>  [5] 江力編著. 單片機原理與應用技術. 北京:清華大學出版社。2006</p>

67、<p>  [6] 張洪潤,張亞凡編著. 單片機原理及應用. 北京:清華大學出版社。2005</p><p>  [7] 里群芳,肖看編著. 單片機原理、接口及應用. 北京:清華大學出版社。2005</p><p>  [8] 林敏,丁金華,田濤編著. 計算機控制技術及工程應用. 北京:國防工業(yè)出版社。2005</p><p>  [9] 何希才編著.

溫馨提示

  • 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

提交評論