單片機課程設計報告---作息時間表系統(tǒng)設計_第1頁
已閱讀1頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  單片機課程設計報告</b></p><p>  項目:作息時間表系統(tǒng)設計 </p><p><b>  一、題目</b></p><p>  作息時間表系統(tǒng)設計——用89C51設計一個6位LED數(shù)碼顯示“作息時間表系統(tǒng)”,顯示時間為00—00—00 ~ 23時—59分

2、—59秒,每秒自動加一。另設計4個按鈕,分別是“分狀態(tài)”按鍵、“分加1”按鍵、“時狀態(tài)”按鍵,“時加1”按鍵。用于進行小時和分鐘的調整。這就是一個完整的具有時、分、秒顯示的單片機實時鐘系統(tǒng)。</p><p><b>  二、增加功能</b></p><p>  在上述實時鐘系統(tǒng)的基礎上,在控制軟件鐘增加一個“作息時間表”,如圖1 所示,并增加對該表的查詢功能模塊,依據(jù)

3、對該表的查詢結果,控制喇叭,進行課間打鈴提示,完成單片機作息時間表系統(tǒng)的設計。也完成本次課程設計。</p><p><b>  三、內容提要</b></p><p>  本設計利用單片機的定時器/計數(shù)器定時和記數(shù)的原理,結合sl-100、sl-200系統(tǒng)上的集成電路芯片8052、LED數(shù)碼管以及按鍵來設計計時器。將軟、硬件有機地結合起來,使得系統(tǒng)能夠正確地進行計時,數(shù)

4、碼管能夠正確地顯示時間。其中本設計中的四個開關按鍵:其中一個按鍵按下去時,系統(tǒng)進入秒調整狀態(tài),然后,秒加1鍵每按一次,秒計時器加1。時狀態(tài)按下時,系統(tǒng)進入時調整狀態(tài),時按鍵每按一次,時計數(shù)器加1。本設計運行開始時,各按鍵回到各初始位置,即都處于1狀態(tài)。計時顯示從00:00:00開始,依據(jù)秒加1為單位進行顯示計時。</p><p><b>  三、實驗目的</b></p><

5、;p>  1、 通過本次課程設計加深對單片機課程的全面認識復習和掌握,對嵌入式系統(tǒng)的應用進一步的了解。</p><p>  2、 掌握定時器、外部中斷的設置和編程原理。</p><p>  3、 通過此次課程設計能夠將單片機軟硬件結合起來,對程序進行編輯,校驗。</p><p><b>  四、意義</b></p><

6、p>  該實驗通過單片機的定時器/計數(shù)器定時和計數(shù)原理,設計單片機作息時間表系統(tǒng),擁有正確的計時、顯示、時間調整等功能,并同時可以用數(shù)碼管顯示,在現(xiàn)實生活中應用廣泛,具有現(xiàn)實意義。</p><p><b>  五、本人所做工作</b></p><p>  根據(jù)相關的單片機材料,利用所學的單片機知識,結合sl-100單片機微機實驗系統(tǒng)中的軟件和硬件(集成電路芯片8

7、952,七段數(shù)碼管,開關電路及時鐘信號電路,按鍵等),編寫能夠實現(xiàn)該設計的軟件程序,最后將軟、硬件有機的結合起來,進行有效的調試,達到完成該實驗課程設計的目的要求。</p><p><b>  六、設計內容</b></p><p>  用AT89C51設計一個6位LED數(shù)碼顯示“實時鐘”,顯示時間為00:00:00秒,每秒自動加一。另設計一個“時狀態(tài)”按鍵和一個“時加

8、1 ”按鍵。再增加一個“分狀態(tài)”按鍵和一個“分加1”按鍵。</p><p>  在以上設計的基礎上,在在控制軟件系統(tǒng)中增加作息時間表功能,驅動喇叭去完成作息時間控制的功能。</p><p><b>  七、設計思路及描述</b></p><p>  該實驗要求進行計時并在數(shù)碼管上顯示時間,則可利用sl-100單片機實驗系統(tǒng)中的芯片AT89C52

9、,中的P3管腳做為外部按鍵輸入,并實現(xiàn)各個按鍵的功能;定時器T0作為每10~50毫秒加一的定時器。在內部RAM中開辟10~50MS計數(shù)器,秒計數(shù)器、分計數(shù)器、時計數(shù)器。單片機依據(jù)定時器T0的定時時間,進行秒、分、時的累加,并將秒、分、時數(shù)據(jù)轉換為7段LED顯示段碼,送LED顯示器,從而完成單片機實時鐘系統(tǒng)的設計。注意,為了輸出顯示方便,時、分、秒的累加計時可以采用BCD碼運算。 。</p>

10、<p><b>  八、原理圖</b></p><p>  九、課程設計參考匯編程序</p><p>  ;*******************************</p><p>  ; 按鍵可調作息時間電子鐘</p><p><b>  ; </b></p>

11、;<p><b>  ;</b></p><p>  ;Date 2007.7.6 </p><p>  ;Created by 李強 </p><p>  ;*******************************</p><p>  ;**********************

12、*********</p><p>  ; 顯示緩沖區(qū)定義</p><p>  ;*******************************</p><p>  Seclequ50h</p><p>  Sechequ51h</p><p>  Minlequ52h</p><p&

13、gt;  Minhequ53h</p><p>  Hourlequ54h</p><p>  Hourhequ55h</p><p>  ;*******************************</p><p>  ; 時鐘計數(shù)單元定義</p><p>  ;******************

14、*************</p><p>  msequ56h</p><p>  secequ57h</p><p>  minequ58h</p><p>  hourequ59h</p><p>  flashequ5ah</p><p>  timecequ5b

15、h</p><p>  bpcountequ5ch</p><p>  codepequ5dh</p><p>  ;*******************************</p><p><b>  ; 按鍵定義</b></p><p>  ;*****************

16、**************</p><p>  keymbit p3.0</p><p>  keym1bitp3.1</p><p>  keym_1 bitp3.2</p><p>  keyhbitp3.3</p><p>  keyh1bitp3.4</p><p>

17、;  keyh_1bit p3.5</p><p>  ;keytime bitp3.6</p><p><b>  ;按鍵狀態(tài)標志</b></p><p>  m_keybit00h</p><p>  h_keybit01h</p><p>  flashbbit02h

18、</p><p>  timebit03h</p><p>  timegbit04h</p><p>  ;*******************************</p><p>  ; 共陽數(shù)碼管段碼</p><p>  ;*******************************</p

19、><p>  ;DispTab: </p><p>  ;db 0c0h,0f9h,0a4h,0b0h,99h</p><p>  ;db 92h,82h,0f8h,80h,90h,0ffh</p><p><b>  org 0080h</b></p><p>  Tab:

20、 </p><p>  DB 0C0H, 0F9H, 0A4H, 0B0H, 99H; 01234</p><p>  DB 92H, 82H, 0F8H, 80H, 90H ; 56789</p><p>  DB 88H, 83H, 0C6H, 0A1H, 86H; ABCDE</p><p>  DB

21、 8EH,0FFh</p><p>  ;*******************************</p><p><b>  ; 作息時間碼</b></p><p>  ;*******************************</p><p><b>  org00b0h</b&g

22、t;</p><p><b>  timetab:</b></p><p>  db00h,00h,15h</p><p>  db00h,00h,30h</p><p>  db00h,01h,00h</p><p>  db10h,00h,15h</p><p>

23、;  db00h,03h,00h</p><p>  db13h,00h,15h</p><p>  db20h,30h,00h</p><p>  db00h,00h,45h</p><p>  db0ffh,0ffh,0ffh</p><p>  ;****************************

24、***</p><p>  ; 中斷地址表設置</p><p>  ;*******************************</p><p><b>  org0000h</b></p><p><b>  ajmpmain</b></p><p><b&

25、gt;  org0003h</b></p><p><b>  reti</b></p><p><b>  org000bh</b></p><p>  ajmpintt0</p><p><b>  org0013h</b></p><

26、;p><b>  reti</b></p><p><b>  org001bh</b></p><p>  ajmpintt1</p><p><b>  org0023h</b></p><p><b>  reti</b></p&g

27、t;<p>  ;*******************************</p><p><b>  ; main程序</b></p><p>  ;*******************************</p><p><b>  org0100h</b></p><

28、p><b>  main:</b></p><p>  movsp,#60h</p><p>  movr7,#0fh</p><p>  movr0,#50h</p><p>  mova,#00h</p><p><b>  mov20h,a</b><

29、;/p><p><b>  clrm_key</b></p><p><b>  clrh_key</b></p><p>  clrd:mov@r0,a</p><p><b>  incr0</b></p><p>  djnzr7,clrd

30、</p><p>  movtmod,#11h</p><p>  movth0,#3ch</p><p>  movtl0,#0b0h</p><p>  movth1,#3ch</p><p>  movtl1,#0b0h</p><p>  movms,#00h</p&g

31、t;<p>  movflash,#00h</p><p><b>  setbea</b></p><p><b>  setbet0</b></p><p><b>  setbet1</b></p><p><b>  setbtr0&l

32、t;/b></p><p><b>  clrtimeg</b></p><p><b>  clrtr1</b></p><p>  cont: lcalldisplay</p><p>  lcallkeytest</p><p>  ;jnbtime

33、,cont</p><p>  lcallbeep</p><p><b>  ajmpcont</b></p><p>  ;*******************************</p><p><b>  ; beep程序</b></p><p>  ;*

34、******************************</p><p><b>  beep:</b></p><p>  movtimec,hour</p><p>  movcodep,#0fdh</p><p>  movdptr,#timetab</p><p>  beph:

35、mova,codep</p><p><b>  inca</b></p><p><b>  inca</b></p><p><b>  inca</b></p><p>  movcodep,a</p><p>  movca,@a+

36、dptr</p><p><b>  movb,a</b></p><p>  xrla,#0ffh</p><p><b>  jzexitb</b></p><p><b>  mova,b</b></p><p>  cjnea,time

37、c,beph</p><p>  movtimec,min</p><p><b>  deccodep</b></p><p><b>  deccodep</b></p><p>  bepm:mova,codep</p><p><b>  inc

38、a</b></p><p><b>  inca</b></p><p><b>  inca</b></p><p>  movcodep,a</p><p>  movca,@a+dptr</p><p><b>  movb,a</

39、b></p><p>  xrla,#0ffh</p><p><b>  jzexitb</b></p><p><b>  mova,b</b></p><p>  cjnea,timec,bepm</p><p>  movtimec,sec</p

40、><p><b>  deccodep</b></p><p><b>  deccodep</b></p><p>  bepsec:mova,codep</p><p><b>  inca</b></p><p><b>  inc

41、a</b></p><p><b>  inca</b></p><p>  movcodep,a</p><p>  movca,@a+dptr</p><p><b>  movb,a</b></p><p>  xrla,#0ffh</p&

42、gt;<p><b>  jzexitb</b></p><p><b>  mova,b</b></p><p>  cjnea,timec,bepsec</p><p>  setbtimeg</p><p><b>  clrcodep</b>&l

43、t;/p><p>  ;ajmp exitbb</p><p>  exitb:;clrtimeg</p><p>  exitbb:clrcodep</p><p><b>  clrtimec</b></p><p><b>  ret</b></p&g

44、t;<p>  ;*******************************</p><p>  ; keytest 程序</p><p>  ;key0--P3.0,狀態(tài)鍵盤</p><p>  ;key1==P3.1,加1鍵</p><p>  ;*******************************<

45、;/p><p><b>  keytest:</b></p><p><b>  setbkeym</b></p><p>  setbkeym1</p><p><b>  setbkeyh</b></p><p>  setbkeyh1</

46、p><p>  setbkeym_1</p><p>  setbkeyh_1</p><p>  jnbkeym,keydelay</p><p>  jnbkeym1,keydelay</p><p>  jnbkeym_1,keydelay</p><p>  jnbkeyh,ke

47、ydelay</p><p>  jnbkeyh1,keydelay</p><p>  jnbkeyh_1,keydelay</p><p>  ;jnbkeytime,keydelay</p><p>  ajmpexitskey</p><p><b>  keydelay:</b>

48、</p><p>  lcall delay10ms</p><p>  jnbkeym,keymp</p><p>  jnbkeym1,keym1p</p><p>  jnbkeym_1,keym_1p</p><p>  jnbkeyh,keyhp</p><p>  jnb

49、keyh1,keyh1p</p><p>  jnbkeyh_1,keyh_1p</p><p>  ;jnbkeytime,keytimep</p><p>  ajmpexitskey</p><p>  keymp:ajmpkeympp</p><p>  keym1p:ajmpkeym1pp<

50、;/p><p>  keym_1p:ajmpkeym_1pp</p><p>  keyhp:ajmpkeyhpp</p><p>  keyh1p:ajmpkeyh1pp</p><p>  keyh_1p:ajmpkeyh_1pp</p><p>  ;keytimep:ajmptimep</p&g

51、t;<p>  ;timep:jnbkeytime,$</p><p>  ;jbcm_key,exitkeyt</p><p>  ;jbch_key,exitkeyt</p><p>  ;cpltime</p><p>  ;ajmp exitskey</p><p>  k

52、eympp:jnbkeym,$</p><p>  jbcm_key,exitkeyt</p><p>  jbch_key,exitkeyt</p><p>  setbm_key</p><p><b>  setbet1</b></p><p><b>  setbt

53、r1</b></p><p><b>  clrtr0</b></p><p>  ajmpexitskey</p><p>  exitkeyt:ajmpexitkey</p><p>  keyhpp:jnbkeyh,$</p><p>  jbcm_key,exitk

54、ey</p><p>  jbch_key,exitkey</p><p>  setbh_key</p><p><b>  setbet1</b></p><p><b>  setbtr1</b></p><p><b>  clrtr0</b

55、></p><p>  ajmpexitskey</p><p>  keym1pp:jnbkeym1,$</p><p>  jnbm_key,exitkey</p><p><b>  mova,min</b></p><p><b>  adda,#1</b&

56、gt;</p><p><b>  daa</b></p><p><b>  movmin,a</b></p><p>  cjnea,#60h,$+3</p><p><b>  jcexitsm</b></p><p>  movmin,

57、#00h</p><p>  exitsm:ajmpexitskey</p><p>  keym_1pp:jnbkeym_1,$</p><p>  jnbm_key,exitkey</p><p><b>  mova,min</b></p><p>  jnzexitm_1<

58、;/p><p>  mova,#60h</p><p>  exitm_1:clrc</p><p><b>  subba,#1</b></p><p><b>  movb,a</b></p><p>  anla,#0fh</p><p>

59、  cjnea,#0fh,exm</p><p><b>  mova,b</b></p><p>  subba,#06h</p><p><b>  sjmp$+3</b></p><p>  exm:mova,b</p><p><b>  mov

60、min,a</b></p><p>  ajmpexitskey</p><p>  keyh_1pp:jnbkeyh_1,$</p><p>  jnbh_key,exitkey</p><p>  mova,hour</p><p>  jnzexith_1</p><p

61、>  mova,#24h</p><p>  exith_1:clrc</p><p><b>  subba,#1</b></p><p><b>  movb,a</b></p><p>  anla,#0fh</p><p>  cjnea,#0fh,

62、exh</p><p><b>  mova,b</b></p><p>  subba,#06h</p><p><b>  sjmp$+3</b></p><p>  exh:mova,b</p><p>  movhour,a</p><

63、p>  ajmpexitskey</p><p>  keyh1pp:jnbkeyh1,$</p><p>  jnbh_key,exitkey</p><p>  mova,hour</p><p><b>  adda,#1</b></p><p><b>  da

64、a</b></p><p>  movhour,a</p><p>  cjnea,#24h,$+3</p><p><b>  jcexitsh</b></p><p>  movhour,#00h</p><p>  exitsh:ajmpexitskey</p&

65、gt;<p>  exitkey:setbtr0</p><p><b>  clret1</b></p><p><b>  clrtr1</b></p><p><b>  exitskey:</b></p><p><b>  ret<

66、/b></p><p>  ;*******************************</p><p>  ; display 程序</p><p>  ;*******************************</p><p><b>  display:</b></p><p&

67、gt;  mova,sec;顯示緩沖區(qū)更新</p><p><b>  movb,a</b></p><p>  anla,#0fh</p><p>  movsecl,a</p><p><b>  mova,b</b></p><p>  anla,#0f0

68、h</p><p><b>  swapa</b></p><p>  movsech,a</p><p><b>  mova,min</b></p><p><b>  movb,a</b></p><p>  anla,#0fh</

69、p><p>  movminl,a</p><p><b>  mova,b</b></p><p>  anla,#0f0h</p><p><b>  swapa</b></p><p>  movminh,a</p><p>  mova

70、,hour</p><p><b>  movb,a</b></p><p>  anla,#0fh</p><p>  movhourl,a</p><p><b>  mova,b</b></p><p>  anla,#0f0h</p><

71、p><b>  swapa</b></p><p>  movhourh,a</p><p><b>  ; 顯示更新</b></p><p>  movdptr,#Tab</p><p>  mov a,secl</p><p>  movca,@a+

72、dptr</p><p><b>  movp0,a</b></p><p>  movp2,#0feh</p><p>  lcalldelay1ms</p><p>  mov a,sech</p><p>  movca,@a+dptr</p><p>

73、;<b>  movp0,a</b></p><p>  movp2,#0fdh</p><p>  lcalldelay1ms</p><p>  jnbm_key,dmin</p><p>  jnbflashb,dmin</p><p>  movminl,#16</p&g

74、t;<p>  movminh,#16</p><p>  dmin:mov a,minl</p><p>  movca,@a+dptr</p><p><b>  movp0,a</b></p><p>  movp2,#0fbh</p><p>  lcall

75、delay1ms</p><p>  mov a,minh</p><p>  movca,@a+dptr</p><p><b>  movp0,a</b></p><p>  movp2,#0f7h</p><p>  lcalldelay1ms</p><

76、;p>  jnbh_key,dhour</p><p>  jnbflashb,dhour</p><p>  movhourl,#16</p><p>  movhourh,#16</p><p><b>  dhour:</b></p><p>  mov a,hour

77、l</p><p>  movca,@a+dptr</p><p><b>  movp0,a</b></p><p>  movp2,#0efh</p><p>  lcalldelay1ms</p><p>  mov a,hourh</p><p> 

78、 movca,@a+dptr</p><p><b>  movp0,a</b></p><p>  movp2,#0dfh</p><p>  lcalldelay1ms</p><p><b>  ret</b></p><p>  ;**************

79、*****************</p><p><b>  ; 延時 程序</b></p><p>  ;*******************************</p><p><b>  delay1ms:</b></p><p>  movr7,#10</p>&l

80、t;p>  d1ms:movr6,#100</p><p><b>  djnzr6,$</b></p><p>  djnzr7,d1ms</p><p><b>  ret</b></p><p>  delay10ms:</p><p>  movr7,

81、#100</p><p>  d10ms:movr6,#100</p><p><b>  djnzr6,$</b></p><p>  djnzr7,d10ms</p><p><b>  ret</b></p><p>  ;*******************

82、************</p><p>  ; T0 50ms 中斷 程序</p><p>  ;*******************************</p><p>  intt0: ;lcall beep</p><p><b>  pushacc</b></p><p>&

83、lt;b>  pushpsw</b></p><p>  ;lcall beep</p><p><b>  clrtr0</b></p><p><b>  clrc</b></p><p>  mova,#0b8h</p><p><b&g

84、t;  adda,tl0</b></p><p><b>  movtl0,a</b></p><p>  mova,#3ch</p><p><b>  addca,#0</b></p><p><b>  movth0,a</b></p>

85、<p><b>  setbtr0</b></p><p><b>  mova,ms</b></p><p><b>  inca</b></p><p><b>  movms,a</b></p><p>  cjnea,#20,

86、eout</p><p>  movms,#00h</p><p><b>  mova,sec</b></p><p><b>  adda,#1</b></p><p><b>  daa</b></p><p><b>  mov

87、sec,a</b></p><p>  cjnea,#60h,eout</p><p>  movsec,#00h</p><p><b>  mova,min</b></p><p><b>  adda,#1</b></p><p><b>

88、;  daa</b></p><p><b>  movmin,a</b></p><p>  cjnea,#60h,eout</p><p>  movmin,#00h</p><p>  mova,hour</p><p><b>  adda,#1</

89、b></p><p><b>  daa</b></p><p>  movhour,a</p><p>  cjnea,#24h,eout</p><p>  movhour,#00h</p><p>  eout:jnbtimeg,eeout</p><p

90、>  movtmod,#21h</p><p>  movth1,#156</p><p>  movtl1,#156</p><p><b>  setbtr1</b></p><p><b>  ;cplp3.3</b></p><p>  incbpc

91、ount</p><p>  mova,bpcount</p><p>  cjnea,#100,eeout</p><p>  movbpcount,#0</p><p><b>  clrtimeg</b></p><p><b>  clrtimec</b>&

92、lt;/p><p><b>  setbp3.3</b></p><p>  movtmod,#11h</p><p><b>  clrtr1</b></p><p><b>  clrtimec</b></p><p><b>  cl

93、rcodep</b></p><p>  eeout: ;lcallbeep</p><p><b>  poppsw</b></p><p><b>  popacc</b></p><p><b>  reti</b></p><p

94、>  ;*******************************</p><p>  ; T1 50ms 中斷 程序</p><p>  ;*******************************</p><p><b>  intt1:</b></p><p><b>  pushacc

95、</b></p><p><b>  pushpsw</b></p><p>  jnbtimeg,exit_int1</p><p>  ;movth1,#0d8h</p><p>  ;movtl1,#0f0h</p><p><b>  cplp3.3<

96、/b></p><p>  ;incbpcount</p><p>  ;mova,bpcount</p><p>  ;cjnea,#200,exitt1</p><p>  ;movbpcount,#00h</p><p>  ;clrtimeg</p><p><b&

97、gt;  ;clrtr1</b></p><p>  ;setbp3.3</p><p>  sjmpexitnt1</p><p>  exit_int1:</p><p>  ;movtmod,#11h</p><p><b>  incflash</b></p&g

98、t;<p>  mova,flash</p><p>  cjnea,#5,exitnt1</p><p>  movflash,#0</p><p>  cplflashb;閃爍標志取反</p><p><b>  exitnt1:</b></p><p>  movt

99、h1,#3ch</p><p>  movtl1,#0b0h</p><p>  exitt1:poppsw</p><p><b>  popacc</b></p><p><b>  reti</b></p><p>  end </p>

100、;<p>  十、課程設計C51參考程序</p><p>  clock.c 文件</p><p>  /*******************************</p><p><b>  電子表C源程序</b></p><p>  Date 2007.7.11 </p><

101、;p>  Created by 李強 </p><p>  *******************************/</p><p>  #include"clock.h"</p><p>  /*******************************</p><p><b>  主程

102、序</b></p><p>  ********************************/</p><p><b>  main()</b></p><p><b>  {</b></p><p>  TMOD=0x11;</p><p><b>

103、;  ET0=1;</b></p><p><b>  ET1=1;</b></p><p><b>  EA=1;</b></p><p><b>  TH0=0x3c;</b></p><p><b>  TL0=0xb0;</b><

104、/p><p><b>  TH1=0x3c;</b></p><p><b>  TL1=0xb0;</b></p><p><b>  TR0=1;</b></p><p><b>  while(1)</b></p><p><

105、;b>  {</b></p><p><b>  disp();</b></p><p><b>  beep();</b></p><p><b>  key();</b></p><p><b>  }</b></p>

106、<p><b>  }</b></p><p>  clock.h 文件</p><p>  #include<at89x51.h></p><p>  /*******************************</p><p><b>  數(shù)據(jù)類型聲明</b></

107、p><p>  ********************************/</p><p>  #define uint unsigned int</p><p>  typedef unsigned char uchar;</p><p>  /*******************************</p>&

108、lt;p><b>  全局數(shù)據(jù)類型聲明</b></p><p>  ********************************/ </p><p>  typedef struct { /* structure of the time record */</p><p>  uchar h

109、our; /* hour */</p><p>  uchar min; /* minute */</p><p>  uchar sec; /* second

110、 */</p><p>  ucharms; /* 50 ms */</p><p><b>  }time;</b></p><p>  typedef struct { /* structure of the time record

111、 */</p><p>  uchar hourh; /* hour */</p><p>  uchar hourl;</p><p>  uchar minh; /* minute

112、 */</p><p>  uchar minl;</p><p>  uchar sech; </p><p>  uchar secl; /* second */</p><p><b>  }timebuf;</b></p><

113、;p>  typedef struct { /* structure of the time record */</p><p>  uchar hour; /* hour */</p><p>  uchar min;

114、 /* minute */</p><p>  uchar sec; /* second */</p><p><b>  }timetab;</b></p><p>  /*****

115、**************************</p><p><b>  函數(shù)原型聲明</b></p><p>  ********************************/</p><p>  void delay1ms();</p><p>  void delay10ms();</p>

116、;<p>  void disp();</p><p>  void beep();</p><p>  void scankey();</p><p>  void key_min_state();</p><p>  void key_min_plus();</p><p>  void

117、key_min_sub();</p><p>  void key_hour_state();</p><p>  void key_hour_plus();</p><p>  void key_hour_sub();</p><p>  void key();</p><p>  function.c 文件

118、</p><p>  #include"clock.h"</p><p>  /*******************************</p><p><b>  數(shù)碼管共陽段碼表</b></p><p>  ********************************/</p>

119、;<p>  uchar code DispCode[17]={</p><p>  0xc0,0xf9,0xa4,0xb0,</p><p>  0x99,0x92,0x82,0xf8,</p><p>  0x80,0x90,0x88,0x83,</p><p>  0xc6,0xa1,0x86,0x8e,</p>

120、;<p><b>  0xff</b></p><p><b>  };</b></p><p>  /*******************************</p><p><b>  初始時間值</b></p><p>  **************

121、******************/</p><p>  extern timebuf data dtimebuf = { 0, 0, 0, 0, 0, 0 };</p><p>  extern time data ctime = { 12, 0, 0, 0 };</p><p>  uint count;</p><p>  u

122、int count_flash;</p><p>  bit beeph;</p><p>  bit flash_flag;</p><p>  /*******************************</p><p><b>  作息時間表</b></p><p>  ********

123、************************/ </p><p>  timetab code code_time[10]={</p><p><b>  12,30,15,</b></p><p><b>  12,30,30,</b></p><p><b>  12,30,45

124、,</b></p><p><b>  12,20,45,</b></p><p><b>  12,03,00,</b></p><p><b>  12,01,00,</b></p><p>  0xff,0xff,0xff,</p><p&

125、gt;<b>  };</b></p><p>  /*******************************</p><p><b>  按鍵I/O口定義</b></p><p>  /********************************/ </p><p>  sbitke

126、ymin= 0xb0;</p><p>  sbitkeymin_plus = 0xb1;</p><p>  sbitkeymin_sub= 0xb2;</p><p>  sbitkeyhour= 0xb3;</p><p>  sbitkeyhour_plus= 0xb4;</p><p&

127、gt;  sbitkeyhour_sub= 0xb5 ;</p><p>  /*******************************</p><p><b>  時間調整定義</b></p><p>  ********************************/ </p><p>  b

128、itmin_flag;</p><p>  bithour_flag;</p><p>  /*******************************</p><p><b>  顯示函數(shù)實現(xiàn)</b></p><p>  ********************************/</p>

129、<p>  void disp()</p><p><b>  {</b></p><p>  dtimebuf.secl=DispCode[ctime.sec%10];</p><p>  dtimebuf.sech=DispCode[ctime.sec/10];</p><p>  dtimebuf.m

130、inl=DispCode[ctime.min%10];</p><p>  dtimebuf.minh=DispCode[ctime.min/10];</p><p>  dtimebuf.hourl=DispCode[ctime.hour%10];</p><p>  dtimebuf.hourh=DispCode[ctime.hour/10];</p>

131、;<p>  if(flash_flag)</p><p><b>  {</b></p><p>  if(min_flag)</p><p><b>  {</b></p><p>  P0=dtimebuf.secl;</p><p><b> 

132、 P2=0xfe;</b></p><p>  delay1ms();</p><p>  P0=dtimebuf.sech;</p><p><b>  P2=0xfd;</b></p><p>  delay1ms();</p><p>  P0=dtimebuf.hourl;&l

133、t;/p><p><b>  P2=0xef;</b></p><p>  delay1ms();</p><p>  P0=dtimebuf.hourh;</p><p><b>  P2=0xdf;</b></p><p>  delay1ms();</p>&

134、lt;p><b>  }</b></p><p>  if (hour_flag) </p><p><b>  {</b></p><p>  P0=dtimebuf.secl;</p><p><b>  P2=0xfe;</b></p><p&

135、gt;  delay1ms();</p><p>  P0=dtimebuf.sech;</p><p><b>  P2=0xfd;</b></p><p>  delay1ms();</p><p>  P0=dtimebuf.minl;</p><p><b>  P2=0xfb;

136、</b></p><p>  delay1ms();</p><p>  P0=dtimebuf.minh;</p><p><b>  P2=0xf7;</b></p><p>  delay1ms();</p><p><b>  }</b></p>

137、;<p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  P0=dtimebuf.secl;</p><p><b>  P2=0xfe;</b></p&

138、gt;<p>  delay1ms();</p><p>  P0=dtimebuf.sech;</p><p><b>  P2=0xfd;</b></p><p>  delay1ms();</p><p>  P0=dtimebuf.minl;</p><p><b>

139、;  P2=0xfb;</b></p><p>  delay1ms();</p><p>  P0=dtimebuf.minh;</p><p><b>  P2=0xf7;</b></p><p>  delay1ms();</p><p>  P0=dtimebuf.hourl;

140、</p><p><b>  P2=0xef;</b></p><p>  delay1ms();</p><p>  P0=dtimebuf.hourh;</p><p><b>  P2=0xdf;</b></p><p>  delay1ms();</p>

141、<p><b>  }</b></p><p><b>  }</b></p><p>  /*******************************</p><p>  timer0 中斷函數(shù)實現(xiàn)</p><p>  *******************************

142、*/</p><p>  void intt0(void) interrupt 1 using 1</p><p><b>  {</b></p><p><b>  TH0=0x3c;</b></p><p><b>  TL0=0xb0;</b></p>&l

143、t;p>  if(++ctime.ms==20)</p><p><b>  {</b></p><p>  ctime.ms=0;</p><p>  if(++ctime.sec==60)</p><p><b>  {</b></p><p>  ctime.se

溫馨提示

  • 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

提交評論