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

下載本文檔

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

文檔簡介

1、<p><b>  單片機課程設(shè)計報告</b></p><p>  題 目:數(shù)字時鐘</p><p>  專業(yè)班級:電子信息工程2班</p><p><b>  姓 名: </b></p><p><b>  一、功能</b></p><

2、;p>  能實現(xiàn)定時、時間的調(diào)整(只能加不能減)、鬧鐘的設(shè)定(只能加不能減),當鬧鐘按鍵按下就進入鬧鐘設(shè)定,再按下那個鍵就進入時間顯示,并且鬧鐘響鈴時間是10秒鐘。</p><p>  其整個設(shè)計的電路圖如下:</p><p>  其中顯示的是8個8段LED顯示,單片機是80C51,外部晶振是12MHZ,其中和晶振連接的是兩個47pF的電容。單片機的p3.2~p3.5作為地址總線起到

3、控制作用,p3.7在電路中我用一個電阻代替,在實際中接喇叭,起到鬧鐘的作用。 P0.0~p0.7作為數(shù)據(jù)總線,把單片機的信號輸入到顯示器上,p2.0~p2.7作為單片機的額數(shù)據(jù)總線,其作用在顯示總起到位選的作用,決定8段LED的亮滅。最下面的那個是RESPACK-8排阻,在電路中防止輸入到顯示的電壓很小,是為輸出提供電源的裝置,配合顯示器的顯示。</p><p>  在整個程序中時間的秒、分、時

4、的計數(shù)分別存放在20H、21H、22H,鬧鐘的秒、分、時的計數(shù)分別存放在40H、41H、42H。我的電路圖開始的時候是用靜態(tài)顯示的,現(xiàn)在用動態(tài)顯示程序還是用的是靜態(tài)的,所以在一些程序不一樣。</p><p>  實現(xiàn)定時鬧鐘的程序有以下幾個部分組成:</p><p><b>  二、流程圖</b></p><p>  定時程序(時間的設(shè)定)&l

5、t;/p><p><b>  其程序流程圖如下:</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  調(diào)時間的流程圖</b></p><p><b>  Y<

6、;/b></p><p>  NN </p><p><b>  Y</b></p><p><b>  N </b></p><p><b>  N</b></p><p><b>  

7、Y</b></p><p><b>  Y</b></p><p>  N N </p><p><b>  Y</b></p><p><b>  N</b></p><p><b>

8、;  N</b></p><p><b>  Y</b></p><p><b>  Y</b></p><p>  N N</p><p><b>  Y</b></p><p><b>  N<

9、;/b></p><p><b>  N</b></p><p><b>  Y</b></p><p>  顯示的流程圖(因為顯示的剛好是8個,所以不要去考慮左移的個數(shù),直接跳轉(zhuǎn)到初始值。</p><p><b>  鬧鐘設(shè)定</b></p><p&

10、gt;<b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  Y</b></p><p>&l

11、t;b>  N</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  三、總程序</b></p><p><b>  ORG 0000H</b></p><

12、p>  MOV P0,#00H</p><p>  MOV P2,#00H</p><p>  MOV SP,#60H</p><p><b>  CLR 20H</b></p><p><b>  CLR 21H</b></p><p><b>  CLR

13、22H</b></p><p><b>  CLR 40H</b></p><p><b>  CLR 41H</b></p><p><b>  CLR 42H</b></p><p>  MOV DPTR,#TAB</p><p>  V

14、V: MOV R6,#1</p><p>  MM: MOV R5,#4</p><p>  NN: MOV R4,#100</p><p>  BB: JNB P3.5,LPP</p><p><b>  SJMP LL</b></p><p>  LPP: JNB P3.5,LPP0&

15、lt;/p><p><b>  SETB 30H</b></p><p>  AAC: MOV R3,#1</p><p>  AAB: MOV R2,#4</p><p>  AAA: MOV R1,#100</p><p>  CC0: JNB P3.2,CC1 ;判斷p3.2是否為按下&

16、lt;/p><p><b>  SJMP DD0</b></p><p>  CC1: JNB P3.2,LPP1 ;判斷p3.2是否松開,松開秒鐘加1</p><p><b>  MOV A,40H</b></p><p>  ADD A,#01H</p><p><

17、b>  DA A</b></p><p>  CJNE A,#60H,CC2</p><p><b>  CLR A</b></p><p>  CC2: MOV 40H,A</p><p>  DD0: JNB P3.3,DD1 ;判斷p3.3是否按下</p><p>

18、;<b>  SJMP EE0</b></p><p>  DD1: JNB P3.3,LPP2 ;判斷p3.3是否松開,松開分鐘加1</p><p><b>  MOV A,41H</b></p><p>  ADD A,#01H</p><p><b>  DA A</b&g

19、t;</p><p>  CJNE A,#60H,DD2</p><p><b>  CLR A</b></p><p>  DD2: MOV 41H,A</p><p>  EE0: JNB P3.4,EE1 ;判斷p3.4是否按下</p><p><b>  SJMP HH

20、1</b></p><p>  EE1: JNB P3.4,LPP3 ;判斷p3.4是否松開,松開時鐘加1</p><p><b>  MOV A,42H</b></p><p>  ADD A,#01H</p><p><b>  DA A</b></p><

21、p>  CJNE A,#24H,EE2</p><p><b>  CLR A</b></p><p>  EE2: MOV 42H,A</p><p>  HH1:LCALL LP</p><p>  JNB P3.5,LP1</p><p>  DJNZ R1,CC0</p>

22、<p>  DJNZ R2,AAA</p><p>  DJNZ R3,AAB</p><p><b>  LCALL B2</b></p><p><b>  SJMP AAC</b></p><p>  LP1:JNB P3.5,LPP4</p><p> 

23、 LL: CLR 30H</p><p><b>  LCALL C0</b></p><p>  DJNZ R4,BB</p><p>  DJNZ R5,NN</p><p>  DJNZ R6,MM</p><p><b>  LCALL B2</b></p>

24、;<p><b>  SJMP VV</b></p><p>  LPP0:LCALL LP</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p>

25、;<p><b>  SJMP LPP</b></p><p>  LPP1:LCALL LP</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p&g

26、t;<p><b>  SJMP CC1</b></p><p>  LPP2:LCALL LP</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p&

27、gt;<p><b>  SJMP DD1</b></p><p>  LPP3:LCALL LP</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p

28、><p><b>  SJMP EE1</b></p><p>  LPP4:LCALL LP</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></

29、p><p><b>  SJMP LP1</b></p><p>  C0: JNB P3.2,C1 ;判斷p3.2是否為按下</p><p><b>  SJMP D0</b></p><p>  C1: JNB P3.2,LLP ;判斷p3.2是否松開,松開秒鐘加1</p&g

30、t;<p><b>  MOV A,20H</b></p><p>  ADD A,#01H</p><p><b>  DA A</b></p><p>  CJNE A,#60H,C2</p><p><b>  CLR A</b></p>&l

31、t;p>  C2: MOV 20H,A</p><p>  D0: JNB P3.3,D1 ;判斷p3.3是否按下</p><p><b>  SJMP E0</b></p><p>  D1: JNB P3.3,LLP1 ;判斷p3.3是否松開,松開分鐘加1</p><p><b>

32、;  MOV A,21H</b></p><p>  ADD A,#01H</p><p><b>  DA A</b></p><p>  CJNE A,#60H,D2</p><p><b>  CLR A</b></p><p>  D2: MOV 21H

33、,A</p><p>  E0: JNB P3.4,E1 ;判斷p3.4是否按下</p><p><b>  AJMP H0</b></p><p>  E1: JNB P3.4,LLP2 ;判斷p3.4是否松開,松開時鐘加1</p><p><b>  MOV A,22H</b>

34、;</p><p>  ADD A,#01H</p><p><b>  DA A</b></p><p>  CJNE A,#24H,E2</p><p><b>  CLR A</b></p><p>  E2: MOV 22H,A</p><p&g

35、t;  H0: LCALL LP</p><p><b>  RET</b></p><p>  LLP: LCALL LP</p><p>  NOP ;3個空指令是消除松開時執(zhí)行指令的時間差</p><p><b>  NOP</b></p><

36、p><b>  NOP</b></p><p><b>  SJMP C1</b></p><p>  LLP1:LCALL LP</p><p><b>  NOP</b></p><p><b>  NOP</b></p><

37、p><b>  NOP</b></p><p><b>  SJMP D1</b></p><p>  LLP2:LCALL LP</p><p><b>  NOP</b></p><p><b>  NOP</b></p><

38、p><b>  NOP</b></p><p><b>  SJMP E1</b></p><p>  B2: MOV A,20H ;設(shè)置秒鐘</p><p>  ADD A,#01H</p><p><b>  DA A</b></p>

39、<p><b>  DEC A</b></p><p>  CJNE A,#5FH,A1</p><p><b>  CLR A</b></p><p><b>  MOV 20H,A</b></p><p>  MOV A,21H ;設(shè)置分鐘</p

40、><p>  ADD A,#01H</p><p><b>  DA A</b></p><p><b>  DEC A</b></p><p>  CJNE A,#5FH,A2</p><p><b>  CLR A</b></p><

41、p><b>  MOV 21H,A</b></p><p>  MOV A,22H ;設(shè)置時鐘</p><p>  ADD A,#01H</p><p><b>  DA A</b></p><p><b>  MOV 22H,A</b></p>

42、;<p>  CJNE A,#24H,LOOP</p><p><b>  CLR A</b></p><p><b>  MOV 22H,A</b></p><p><b>  SJMP LOOP</b></p><p>  A1: INC A</p&

43、gt;<p><b>  MOV 20H,A</b></p><p><b>  SJMP LOOP</b></p><p>  A2: INC A</p><p><b>  MOV 21H,A</b></p><p>  LOOP:DJNZ R0,RR1&

44、lt;/p><p><b>  SETB P3.7</b></p><p>  RR1: MOV A,42H ;比較時鐘和鬧鐘的時間是否相等,相等把 XRL A,22H ; p3.7置高電平啟動鬧鐘</p><p>  CJNE A,#00H,QQ</p><p>&

45、lt;b>  MOV A,41H</b></p><p><b>  XRL A,21H</b></p><p>  CJNE A,#00H,QQ</p><p><b>  MOV A,40H</b></p><p><b>  XRL A,20H</b>&

46、lt;/p><p>  CJNE A,#00H,QQ</p><p><b>  CLR P3.7</b></p><p>  MOV R0,#10</p><p><b>  QQ: RET</b></p><p>  LP: MOV P2,#01111111B</

47、p><p>  JNB 30H,WW</p><p><b>  MOV A,40H</b></p><p><b>  SJMP WW0</b></p><p>  WW: MOV A,20H ;顯示秒鐘的個位</p><p>  WW0: MOV B,#1

48、0H</p><p><b>  DIV AB</b></p><p><b>  MOV 50H,A</b></p><p><b>  MOV A,B</b></p><p>  MOVC A,@A+DPTR</p><p><b>  M

49、OV P0,A</b></p><p><b>  LCALL DEL</b></p><p>  MOV A,P2 ;顯示秒鐘的十位</p><p><b>  RR A</b></p><p><b>  MOV P2,A</b></p&

50、gt;<p><b>  MOV A,50H</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p><b>  LCALL DEL</b></p><p>  MOV A,P2

51、 ;顯示'-'</p><p><b>  RR A</b></p><p><b>  MOV P2,A</b></p><p>  MOV P0,#01000000B</p><p><b>  LCALL DEL</b></p>

52、<p>  MOV A,P2 ;顯示分鐘的個位</p><p><b>  RR A</b></p><p><b>  MOV P2,A</b></p><p>  JNB 30H,WW1</p><p><b>  MOV A,41H</b>

53、</p><p><b>  SJMP WW2</b></p><p>  WW1: MOV A,21H</p><p>  WW2: MOV B,#10H</p><p><b>  DIV AB</b></p><p><b>  MOV 51H,A<

54、/b></p><p><b>  MOV A,B</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p><b>  LCALL DEL</b></p><p>  MOV

55、A,P2 ;顯示分鐘的十位</p><p><b>  RR A</b></p><p><b>  MOV P2,A</b></p><p><b>  MOV A,51H</b></p><p>  MOVC A,@A+DPTR</p>

56、<p><b>  MOV P0,A</b></p><p><b>  LCALL DEL</b></p><p>  MOV A,P2 ;顯示'-'</p><p><b>  RR A</b></p><p><

57、b>  MOV P2,A</b></p><p>  MOV P0,#01000000B</p><p><b>  LCALL DEL</b></p><p>  MOV A,P2 ;顯示時鐘的個位</p><p><b>  RR A</b></p

58、><p><b>  MOV P2,A</b></p><p>  JNB 30H,WW4</p><p><b>  MOV A,42H</b></p><p><b>  SJMP WW5</b></p><p>  WW4: MOV A,22H<

59、;/p><p>  WW5: MOV B,#10H</p><p><b>  DIV AB</b></p><p><b>  MOV 52H,A</b></p><p><b>  MOV A,B</b></p><p>  MOVC A,@A+DPT

60、R</p><p><b>  MOV P0,A</b></p><p><b>  LCALL DEL</b></p><p>  MOV A,P2 ;顯示時鐘的十位</p><p><b>  RR A</b></p><p&g

61、t;<b>  MOV P2,A</b></p><p><b>  MOV A,52H</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p><b>  LCALL DEL</b>

62、</p><p><b>  RET</b></p><p>  DEL: MOV R7,#150 ;顯示延遲150us</p><p><b>  DJNZ R7,$</b></p><p><b>  RET</b></p><p>  T

63、AB: DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH</p><p><b>  END</b></p><p><b>  總結(jié)</b></p><p>  在整個設(shè)計中我學(xué)到了在顯示程序中的一些方法,比如說怎么實現(xiàn)動態(tài)顯示,開始的時候總是顯示不了,在經(jīng)過把位選放慢就可以知道自己在

64、設(shè)計程序中先顯示后左移,所以沒有顯示的余光,使得顯示出現(xiàn)異常。在經(jīng)過先左移后顯示的情況下動態(tài)能夠正常顯示。還有在設(shè)定鬧鐘的時候經(jīng)常出現(xiàn)到了鬧鐘的設(shè)定時間不跳轉(zhuǎn),在經(jīng)過在鬧鐘的設(shè)定的同時還要進行時間的調(diào)用,使得這次程序使用的都是程序的調(diào)用,把鬧鐘的設(shè)定看作一個主程序,就相當于p3.5按下之后進入鬧鐘的設(shè)定和顯示,之后一直在查詢p3.5再一次的按下,如果沒有按下就一直查詢是否有在調(diào)整鬧鐘。若再一次按下p3.5就進入時間的設(shè)置和顯示。在顯示中

65、要設(shè)定一個參考量來決定是顯示時間還是鬧鐘,我在程序中用(30H)的數(shù)來作為參考量,如果是“1”則顯示鬧鐘((40H)、(41H)、(42H))里面的數(shù),如果是“0”則顯示時間((20H)、(21H)、(22H))里面的數(shù)??偟膩碚f通過這次課程設(shè)計我學(xué)到了如何去編寫時間程序、鬧鐘的設(shè)定程序、顯示程序。</p><p><b>  參考文獻</b></p><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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論