課程設(shè)計----基于單片機(jī)的數(shù)字電子鐘設(shè)計_第1頁
已閱讀1頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  課題設(shè)計任務(wù)、功能要求及總體方案</p><p><b>  課題設(shè)計任務(wù)</b></p><p>  本課程設(shè)計選題目為:數(shù)字電子鐘。</p><p>  設(shè)計一個具有特定功能的電子鐘。</p><p><b>  功能要求</b></p><p> 

2、 設(shè)計的數(shù)字電子鐘上電或按鍵復(fù)位后能自動顯示系統(tǒng)提示符“P.”, 進(jìn)入時鐘準(zhǔn)備狀態(tài);第一次按數(shù)字電子鐘啟動/調(diào)整鍵,數(shù)字電子鐘從0時0分0秒開始運行,進(jìn)入時鐘運行狀態(tài);再次按數(shù)字電子鐘啟動/調(diào)整鍵,則數(shù)字電子鐘進(jìn)入時鐘調(diào)整狀態(tài),并且時間停止不動,此時可分別利用各調(diào)整鍵調(diào)整時、分、秒,調(diào)整結(jié)束后可按啟動/調(diào)整鍵再次進(jìn)入時鐘運行狀態(tài)。</p><p>  設(shè)計總體方案介紹及工作原理說明</p><

3、p>  本課程設(shè)計采用AT89S52單片機(jī)設(shè)計一個數(shù)字電子鐘,通過兩個4位LED數(shù)碼管顯示時、分、秒,并設(shè)有9個按鍵。其中一個用于單片機(jī)的復(fù)位;一個為啟動/調(diào)整鍵;兩個分別為加,減鍵;其他鍵本課題暫不用。</p><p>  電路分為5部分,分別為復(fù)位電路、鍵盤電路、時鐘電路、顯示電路和控制電路。復(fù)位電路采用按鍵復(fù)位方式。鍵盤電路采用獨立式鍵盤。時鐘電路用12MHz的晶振產(chǎn)生時鐘信號。顯示電路采用8個三極管

4、驅(qū)動兩個4位LED顯示??刂齐娐凡捎?位的AT89S52單片機(jī)作為CPU;原理是:時鐘用T0為時鐘秒加1中斷,時間常數(shù)位50MS,每20次加1S,T0用為時間加1中斷,時間常數(shù)為50MS,中斷20次時間加1。其設(shè)計框圖如圖1.1所示:</p><p>  圖1.1 設(shè)計方案框圖</p><p>  2 數(shù)字電子鐘硬件系統(tǒng)的設(shè)計</p><p>  2.1 硬件

5、系統(tǒng)各模塊功能簡要介紹</p><p>  2.1.1 復(fù)位電路</p><p>  復(fù)位是單片機(jī)的硬件初始化操作。經(jīng)復(fù)位操作后,單片機(jī)系統(tǒng)才能開始正常工作。</p><p>  單片機(jī)上有復(fù)位引腳RST,用于外接復(fù)位電路,這里復(fù)位電路采用按鍵電平復(fù)位。</p><p>  2.1.2 時鐘電路</p><p> 

6、 單片機(jī)工作所需的同步時鐘信號由以下兩種方法獲得:由單片機(jī)片內(nèi)時鐘電路結(jié)合外部晶振、電容產(chǎn)生和直接從單片機(jī)外部引入脈沖信號。這里用第一種方法產(chǎn)生時鐘信號。</p><p>  電路用12MHz的石英晶體和二個微調(diào)電容(為33pF)連接起來接到單片機(jī)的XTAL1和XTAL2引腳上。</p><p>  2.1.3 鍵盤電路</p><p>  由于按鍵較少,所以此處

7、使用獨立式鍵盤,鍵盤接到單片機(jī)的P1口上,當(dāng)鍵按下時,在其相應(yīng)的口線上產(chǎn)生低電平信號,鍵松開時仍為高電平信號。 </p><p>  2.1.4 顯示電路</p><p>  本顯示電路采用三極管驅(qū)動兩個4位數(shù)碼管段位控端;用單片機(jī)的P2口控制位控;用單片機(jī)的P0口線作段控口,位、段控線上都串入470Ω的限流電阻。 </p><p>  2.2 數(shù)字電子鐘原理圖

8、、PCB圖和元器件布局圖</p><p>  2.2.1 原理圖</p><p><b>  原理圖見附錄A。</b></p><p>  2.2.2 PCB圖</p><p><b>  PCB圖見附錄B。</b></p><p><b>  元器件布局圖&l

9、t;/b></p><p>  元器件布局圖見附錄C。</p><p>  2.3 數(shù)字電子鐘元器件清單</p><p>  本課程設(shè)計元器件清單如表2.1所示:</p><p>  表2.1 數(shù)字電子鐘元器件清單</p><p>  3 數(shù)字電子鐘軟件系統(tǒng)的設(shè)計</p><p>  數(shù)

10、字電子鐘使用單片機(jī)資源情況</p><p>  在電子鐘的編程過程中,單片機(jī)資源使用情況如下:</p><p>  寄存器:通用寄存器的R0~R7;</p><p>  位地址:23H(用于保存啟動/調(diào)整鍵盤當(dāng)前的狀態(tài));</p><p>  IO口線:P0口(作數(shù)碼管的段控口),P2口(作數(shù)碼管的位控口),P1口(作鍵</p>

11、<p><b>  盤接口);</b></p><p>  堆棧棧底單元地址:60H;</p><p>  定時器:定時器0;</p><p>  顯示緩沖單元:78H~7FH;</p><p>  秒分時對應(yīng)儲存單元:72H~77H</p><p>  生成鍵碼出口地址:20H。&

12、lt;/p><p>  數(shù)字電子鐘軟件系統(tǒng)各模塊功能簡要介紹</p><p>  3.2.1 顯示模塊</p><p>  此處將顯示程序編成一個子程序,要顯示時調(diào)用顯示子程序即可,顯示程序中顯示的是緩沖區(qū)中的內(nèi)容再調(diào)數(shù)據(jù)表格中顯示代碼,程序中只要將要顯示的內(nèi)容在數(shù)據(jù)表中的位置送往顯示緩沖區(qū)即可,就可以顯示你所需要顯示的內(nèi)容。</p><p>

13、  3.2.2 中斷服務(wù)程序模塊</p><p>  本程序中用了一個定時器中斷,所以有中斷服務(wù)程序,是為了使秒自加而使用定時器中斷,定時50MS循環(huán)20次到一秒以后,向CPU申請中斷,使秒自加1。</p><p>  3.2.3 鍵盤模塊</p><p>  運用直接判斷IO口線的方法編成鍵盤掃描程序,來完成用鍵盤監(jiān)控程序的功能,總共用了四個鍵,其具體的功能上

14、面已經(jīng)敘述過,這里不再贅述,使用鍵盤能夠很準(zhǔn)確的、快速的監(jiān)控系統(tǒng)。</p><p>  數(shù)字電子鐘軟件系統(tǒng)程序流程框圖</p><p><b>  主程序流程框圖</b></p><p>  主程序員流程框圖如圖3.1所示:</p><p>  圖3.1 主程序流程圖</p><p>  中斷服務(wù)

15、程序流程框圖</p><p>  中斷服務(wù)程序流程圖如圖3.2所示:</p><p>  圖3.2 中斷服務(wù)程序流程圖</p><p><b>  加1子程序流程框圖</b></p><p>  加1子程序流程框圖如圖3.3所示:</p><p>  圖3.3 加1子程序流程圖</p>

16、<p><b>  減1子程序流程框圖</b></p><p>  加1子程序流程框圖如圖3.4所示:</p><p>  圖3.4 減1子程序流程圖</p><p>  3.3.5 鍵掃子程序流程圖框圖</p><p>  鍵掃子程序流程圖框圖如圖3.5</p><p>  圖3

17、.5 鍵掃子程序流程圖</p><p>  3.3.6 顯示子程序流程圖框圖</p><p>  顯示子程序流程圖框圖如圖3.6</p><p>  圖3.6 顯示子程序流程圖</p><p>  3.4 數(shù)字電子鐘軟件系統(tǒng)程序清單</p><p><b>  程序清單詳見附錄D</b><

18、;/p><p>  4 仿真與誤差分析</p><p>  4.1 數(shù)字電子鐘的設(shè)計結(jié)論及使用說明</p><p>  本課程設(shè)計的目的是設(shè)計一個電子鐘,通過原理圖的繪制,PCB板的制作,最終做出的實物是成功的,能夠達(dá)到預(yù)期的目的,以下本次所作電子鐘的具體的使用說明:電子鐘上電后,最高位顯示P.,按下啟動/調(diào)整鍵,電子鐘從0時0分0秒開始自動運行,再次按下啟動/調(diào)整

19、鍵,電子鐘運行停止,處于調(diào)整狀態(tài),按下加減鍵,可以實現(xiàn)時、分、秒加鍵1,這樣可以實現(xiàn)時、分、秒的累加調(diào)整,再次按下啟動/調(diào)整鍵,電子鐘自動運行起來,處于運行狀態(tài),調(diào)整結(jié)束。</p><p>  4.2 設(shè)計課題的仿真結(jié)果</p><p>  如圖4.1、4.2所示:</p><p>  圖4.1 顯示P.仿真結(jié)果</p><p>  圖4.

20、2 運行仿真結(jié)果</p><p>  4.3 設(shè)計課題的誤差分析</p><p>  本課程設(shè)計存在一定誤差,引起誤差原因主要是程序中定時后很多指令引起的時間誤差。經(jīng)過測試10小時,時鐘慢25秒,則每秒鐘慢2.5/3600=0.6944MS,</p><p>  50MS中斷一次,20次中斷為1秒,因此每次中斷比標(biāo)準(zhǔn)慢0.6944/20=0.03472MS.<

21、;/p><p>  TH0TL0=65536-[(50-0.03472)*1000]/1=15570=3CD2H。</p><p>  將原來中斷初值TH0TL0=3CB0H改為TH0TL0=3CD2H。</p><p>  4.4 數(shù)字電子鐘設(shè)計體會</p><p>  本次做課程設(shè)計,從硬件方面說,我認(rèn)為本次設(shè)計的重點在于單片機(jī)的最小系統(tǒng),

22、若單片機(jī)的最小系統(tǒng)不能正常工作,那后面一切都免談;從軟件方面說,我編程的思路就是從簡單到難,一步一步實現(xiàn)各個功能。這個電子鐘的程序重點在于調(diào)整鍵功能程序和中斷服務(wù)程序的編寫,這兩個小模塊編好了,就很容易了。</p><p>  在做課程設(shè)計的過程中,學(xué)到很多東西,比如說做PCB板的技術(shù)有了很大的提高,再比如說,自己通過編電子鐘的程序,使自己對匯編指令的應(yīng)用越來越熟練,編程的能力也有了較大提高。在制作電子鐘的過程中

23、,遇到的問題都能嘗試去自己解決,比如說調(diào)試程序,檢查線路等等,使自己發(fā)現(xiàn)問題、解決問題的能力大大提高。</p><p><b>  4.5 教學(xué)建議</b></p><p>  通過一個學(xué)期的單片機(jī)課,我生生的體會到了什么叫名師;誠然,王老師總說自己不是名師,但我們真的得尊稱你為名師。 在這里我只是覺得我們的動手能力還是太差了,還得增加實踐的動手!讓我們多做幾塊板子

24、,即使我們心有不情愿,還需老師一如既往的加壓!</p><p><b>  參考文獻(xiàn)</b></p><p>  [ 1 ] 李廣第,朱月秀,冷祖祁.單片機(jī)基礎(chǔ)[M].第三版.北京:航空航天大學(xué)出版社,2007.18-152</p><p>  Li Guangdi,Zhu Yuexiu,Leng Zuqi.Scmcbasis[M].The t

25、hird edition.Beijing: Aerospace university press,2007.18-152</p><p>  [ 2 ] 邱麗芳,彭志剛,胡漢輝.單片機(jī)原理與應(yīng)用 .第二版.北京:人民郵電出版社,2009.7-259</p><p>  Qiu Lifang,Peng Zhigang,Hu Hanhui.Single-chip microcomputer p

26、rinciple and application. The second edition. Beijing: Beijing people's telephone and postal press ,2009.7-259</p><p><b>  致 謝</b></p><p>  在本課程設(shè)計進(jìn)行過程中得到王韌老師的悉心指導(dǎo),還有很多同學(xué)的幫助。王老師

27、嚴(yán)謹(jǐn)求實的治學(xué)態(tài)度,踏實堅韌的工作精神,將使我終生受益。在此,謹(jǐn)向老師和幫助我的同學(xué)致以誠摯的謝意和崇高的敬意。 </p><p><b>  附 錄 A</b></p><p><b>  附 錄 B</b></p><p><b>  附 錄 C</b></p><p&

28、gt;<b>  元器件布局圖</b></p><p><b>  附 錄 D</b></p><p><b>  程序清單:</b></p><p>  ;********************************************************************<

29、;/p><p>  ;項目名稱:數(shù)字電子鐘</p><p><b>  ;設(shè)計者:譚育奇</b></p><p>  ;設(shè)計日期:2010年12月29日</p><p>  ;********************************************************************</p&

30、gt;<p><b>  ;堆棧棧底60H;</b></p><p>  ;********************************************************************</p><p>  ;LED數(shù)碼管顯示器設(shè)定;</p><p>  ;P0.7---P0.0段控線,接LED的顯示段d

31、p,g,f,e,d,c,b,a</p><p>  ;P2.7---P2.0位控線,從左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)</p><p>  ;顯示緩沖區(qū)設(shè)定從左至右依次為7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED4,LED5,LED6,LED7,LED0,LED1,LED2,LED3)</p>

32、<p>  ;時十位,時個位,分十位,分個位,秒十位,秒個位對應(yīng)的儲存單元是(77H,76H,75H,74H,73H,72H);鍵值放在20H單元</p><p>  ;********************************************************************</p><p><b>  ;獨立式鍵盤設(shè)定;</b&g

33、t;</p><p>  ;8個按鍵S2至S9分別依次接在P1.0至P1.7口線;S2鍵為啟動/調(diào)整;S4、S5為加、減鍵 </p><p>  ;******************************************************************** </p><p><b>  ;子程序;</b></

34、p><p>  ;DISP(數(shù)碼管顯示子程序)</p><p>  ;KEY(鍵掃子程序)</p><p>  ;DL(1毫秒延時子程序,晶振頻率12MHz)</p><p>  ;TAKE(更新緩沖區(qū)子程序)</p><p>  ;*********************************************

35、***********************</p><p><b>  ;常數(shù)表格;</b></p><p>  ;TAB(共陽數(shù)碼管字型代碼表)</p><p>  ;TAB1(位控序號表)</p><p>  ;DISBH(系統(tǒng)提示符P.字型代碼序號表)</p><p>  ;******

36、*************************************************************</p><p>  ;時分秒的十位和個位分別偽定義</p><p>  SECGE EQU 72H</p><p>  SECSHI EQU 73H</p><p>  FENGE EQU

37、 74H</p><p>  FENSHI EQU 75H</p><p>  SHIGE EQU 76H</p><p>  SHISHI EQU 77H</p><p>  ;*****************************************************************

38、**</p><p><b>  ;鍵值偽定義</b></p><p>  S2B BIT 20H.0</p><p>  S3B BIT 20H.1</p><p>  S4B BIT 20H.2</p><p>  S5B BIT 20H

39、.3</p><p>  S6B BIT 20H.4</p><p>  S7B BIT 20H.5</p><p>  S8B BIT 20H.6</p><p>  S9B BIT 20H.7</p><p>  ;**********************

40、*********************************************</p><p><b>  ;主程序</b></p><p>  ORG 0000H</p><p>  START: LJMP MAIN ;主程序入口地址</p><p> 

41、 ORG 000BH</p><p>  LJMP TC0</p><p>  ORG 0030H</p><p>  MAIN: MOV SP, #60H ;堆棧初始化</p><p>  ;********************************************

42、**********************</p><p><b>  ;定時器初始化</b></p><p>  MOV TMOD ,#11H</p><p>  MOV TH0 ,#3CH</p><p>  MOV TL0 ,#0B0H</p>

43、<p>  MOV IE ,#8AH ;允許定時器0中斷</p><p>  ;******************************************************************</p><p>  MOV PSW ,#00H ;psw初始化</p>&l

44、t;p>  MOV R0 ,#20H ;RAM區(qū)首地址</p><p>  MOV R7 ,#5FH ;RAM區(qū)單元個數(shù)</p><p>  ML: MOV @R0 ,#00H ;RAM初始化</p><p>  INC R0</p&

45、gt;<p>  DJNZ R7 ,ML</p><p>  CLR 23H.0 ;停止是否按下判斷位</p><p>  CLR 23H.1</p><p>  CLR 23H.2 ;調(diào)整鍵按下判斷位</p><p&

46、gt;  CLR 23H.3 ;啟動停止判斷位</p><p>  PUSH PSW ;改變當(dāng)期寄存器為2組</p><p>  SETB RS1</p><p>  CLR RS0</p><p>  MOV R1

47、,#200</p><p>  MOV R5 ,#20 ;設(shè)定中斷服務(wù)程序循環(huán)次數(shù)</p><p>  MOV R6 ,#0 ;判調(diào)整鍵按下的次數(shù)</p><p>  MOV R7 ,#25 ;按鍵是若不松開調(diào)顯示的次數(shù)</p>&

48、lt;p>  POP PSW</p><p>  TSF: MOV DPTR ,#DISBH ;系統(tǒng)初始化后提示符“P.”字符代碼表首地址</p><p>  MOV R1 ,#00H</p><p>  MOV R5 ,#08H</p><p>  M

49、OV R0 ,#78H</p><p>  DISPTSF: MOV A ,@R1</p><p>  MOVC A ,@A+DPTR</p><p>  MOV @R0 ,A</p><p>  INC R0</p><p>

50、  INC R1</p><p>  DJNZ R5 ,DISPTSF ;調(diào)顯示子程序顯示提示符“P.”</p><p>  TT: LCALL DISP</p><p>  LCALL KEY </p><p>  MOV A ,20H</p><p

51、>  JZ TT</p><p>  ;******************************************************************</p><p><b>  ;鍵判斷程序</b></p><p>  JB S2B ,S22</p><p>

52、  JB S4B ,S44</p><p>  JB S5B ,S55</p><p>  JB S3B ,S3</p><p>  JB S6B ,S6</p><p>  JB S7B ,S7</p><p&g

53、t;  JB S8B ,S8</p><p>  JB S9B ,S9</p><p>  LJMP TT</p><p>  ;******************************************************************</p><p><b&g

54、t;  ;鍵功能程序</b></p><p>  S22: LJMP S2</p><p>  S44: LJMP S4 </p><p>  S55: LJMP S5</p><p><b>  S3: NOP</b></p><p>  LJMP

55、 TT </p><p><b>  S6: NOP </b></p><p>  LJMP TT</p><p><b>  S7: NOP </b></p><p>  LJMP TT</p><p><b>  S8: NOP </b

56、></p><p>  LJMP TT</p><p><b>  S9: NOP </b></p><p>  LJMP TT</p><p>  ;啟動停止鍵功能程序</p><p>  S2: PUSH PSW ;改變通用寄

57、存器組為2組</p><p>  SETB RS1</p><p>  CLR RS0</p><p>  JB 23H.0 ,SZT</p><p>  JB 23H.4 ,S2TZ ;23H.4為0執(zhí)行啟動程序,否則轉(zhuǎn)向停止程序</p><p>  

58、SETB 23H.4</p><p>  SETB TR0</p><p>  CLR 23H.2</p><p>  JB 23H.1 ,S2D1 ;23H.1為1轉(zhuǎn)向啟動程序結(jié)束</p><p>  SETB 23H.1 ;第一次啟動電子鐘,標(biāo)

59、志位置1</p><p>  MOV SECSHI ,#0</p><p>  MOV SECGE ,#0</p><p>  MOV FENSHI ,#0</p><p>  MOV FENGE ,#0</p><p>  MOV SHISHI

60、 ,#0</p><p>  MOV SHIGE ,#0</p><p>  S2D1: LCALL KEY ;判鍵是否松開</p><p>  JB S2B ,S2D1</p><p>  LJMP SS2</p><p>  

61、S2TZ: CLR TR0 ;停止程序</p><p>  SETB 23H.0 </p><p>  CLR 23H.4</p><p>  S2D2: LCALL KEY ;判鍵是否松開</p><p>  JB S2B

62、 ,S2D2</p><p>  LJMP SS2</p><p>  SZT: JNB 23H.0 ,SS2 ;判停止鍵是否按下,沒有按下轉(zhuǎn)向結(jié)束程序 </p><p>  LCALL DL</p><p>  SETB 23H.2 ;調(diào)整鍵

63、按下,置1</p><p>  CJNE R6 ,#00H ,S2S ;是第一次按下調(diào)整鍵嗎</p><p>  INC R6 ;調(diào)整鍵的次數(shù)加1</p><p>  S2S1: LCALL KEY </p><p>  JB S2B ,S

64、2S1</p><p>  LJMP SS2</p><p>  S2S: CJNE R6 ,#01H ,S2F ;是第二次按下調(diào)整鍵嗎</p><p>  INC R6 ;調(diào)整鍵次數(shù)加1</p><p>  S2S2: LCALL KEY</p&

65、gt;<p>  JB S2B ,S2S2</p><p>  LJMP SS2</p><p>  S2F: MOV R6 ,#00H ;第三次按下調(diào)整鍵,把按下調(diào)整鍵的次數(shù)置0</p><p>  S2S3: LCALL KEY</p><p>  J

66、B S2B ,S2S3</p><p>  SS2: LCALL TAKE</p><p>  POP PSW</p><p>  LJMP TT</p><p>  ;******************************************************************

67、</p><p><b>  ;加1鍵功能程序</b></p><p>  S4: PUSH PSW ;改變通用寄存器為2組</p><p>  SETB RS1</p><p>  CLR RS0</p><p>  JNB

68、23H.2 ,S3G ;判調(diào)整鍵是否按下</p><p>  CJNE R6 ,#01H ,S3F ;停止鍵按下的次數(shù)是1次嗎?</p><p>  LCALL TAKE3 ;時加1</p><p>  CJNE R2 ,#24H ,S3D1 ;24小

69、時到了嗎</p><p>  MOV SHISHI ,#00H</p><p>  MOV SHIGE ,#00H</p><p>  S3D1: LCALL DISP ;延時0.2秒</p><p>  DJNZ R7 ,S3D1</p>

70、;<p>  MOV R7 ,#25</p><p>  LJMP S3G</p><p>  S3F: CJNE R6 ,#02H ,S3M ;停止鍵按下的次數(shù)是2次嗎?</p><p>  LCALL TAKE2 ;分加1</p><

71、p>  CJNE R3 ,#60H ,S3D2 ;60分到了嗎</p><p>  MOV FENSHI ,#00H</p><p>  MOV FENGE ,#00H</p><p>  S3D2: LCALL DISP ;延時0.2秒</p>&

72、lt;p>  DJNZ R7 ,S3D2</p><p>  MOV R7 ,#25</p><p>  LJMP S3G</p><p>  S3M: LCALL TAKE1 ;秒加1</p><p>  CJNE R4 ,#

73、60H ,S3D3 ;60秒到了嗎</p><p>  MOV SECSHI ,#00H</p><p>  MOV SECGE ,#00H</p><p>  S3D3: LCALL DISP ;延時0.2秒</p><p>  DJNZ R7

74、 ,S3D3</p><p>  MOV R7 ,#25</p><p>  S3G: LCALL TAKE</p><p>  POP PSW</p><p>  LJMP TT</p><p>  ;*************************************

75、*****************************</p><p><b>  ;減1鍵功能程序</b></p><p>  S5: PUSH PSW</p><p>  SETB RS1</p><p>  CLR RS0</p><p>  JNB 23H

76、.2 ,S4G</p><p>  CJNE R6 ,#01H ,S4F ;停止鍵按下的次數(shù)是1次嗎</p><p>  S4DY: LCALL TAKE7 ;時減1</p><p>  S4D1: LCALL DISP ;延時0.2秒</p

77、><p>  DJNZ R7 ,S4D1</p><p>  MOV R7 ,#25</p><p>  LJMP S4G</p><p>  S4F: CJNE R6 ,#02H ,S4M ;停止鍵按下的次數(shù)是2次嗎</p><p>  LCAL

78、L TAKE6 ;分減1</p><p>  S4D2: LCALL DISP</p><p>  DJNZ R7 ,S4D2</p><p>  MOV R7 ,#25</p><p>  LJMP S4G</p><p>

79、  S4M: CJNE R6 ,#00H ,S4G ;停止鍵按下的次數(shù)是3次嗎</p><p>  LCALL TAKE5 ;秒減1</p><p>  S4D3: LCALL DISP</p><p>  DJNZ R7 ,S4D3</p><p>

80、;  MOV R7 ,#25</p><p>  S4G: LCALL TAKE</p><p>  POP PSW</p><p>  LJMP TT </p><p>  ;**************************************************************

81、******</p><p><b>  ;常數(shù)表格區(qū)</b></p><p>  ;系統(tǒng)初始化后提示符“P.”字符代碼表</p><p>  DISBH: DB 11H,10H,10H,10H,10H,10H,10H,10H </p><p>  ;顯示字符段選碼表(共陽極代碼)</p>

82、<p>  TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H </p><p>  DB 90H, 0FFH,0CH,0BFH </p><p>  TAB1: DB 0EFH,0DFH,0BFH,07FH,0FE

83、H,0FDH,0FBH,0F7H</p><p>  ;********************************************************************</p><p><b>  ;延時1毫秒子程序</b></p><p>  DL: MOV R7 ,#02H</p>

84、<p>  DL1: MOV R6 ,#0FFH</p><p>  DL2: DJNZ R6 ,DL2</p><p>  DJNZ R7 ,DL1</p><p><b>  RET</b></p><p>  ;************

85、*******************************************</p><p><b>  ;顯示子程序</b></p><p>  ;入口:78H,79H,7AH,7BH,7CH,7DH,7EH,7FH</p><p>  DISP: PUSH DPH</p><p>  PUSH

86、 DPL</p><p>  PUSH ACC</p><p>  PUSH PSW</p><p>  CLR RS1 ;改變當(dāng)前寄存器組為組1</p><p>  SETB RS0</p><p>  MOV R7 ,#08H&

87、lt;/p><p>  MOV R1 ,#78H ;顯示緩沖存儲單元首地址</p><p>  MOV R0 ,#00H ;從左至右顯示</p><p>  DISP1: MOV A ,@R1</p><p>  MOV DPTR

88、 ,#TAB</p><p>  MOVC A ,@A+DPTR</p><p>  MOV P0 ,A ;送段控</p><p>  MOV A ,@R0 </p><p>  MOV DPTR ,#TAB1<

89、;/p><p>  MOVC A ,@A+DPTR</p><p>  MOV P2 ,A ;送位控</p><p>  LCALL DL ;延時1毫秒</p><p>  DJNZ R7 ,DISP2</p>&

90、lt;p>  INC R1</p><p>  INC R0</p><p>  LJMP DISP1</p><p>  DISP2: POP PSW ;恢復(fù)當(dāng)前寄存器組的組號</p><p>  POP ACC</p><p> 

91、 POP DPL</p><p>  POP DPH </p><p><b>  RET</b></p><p>  ;*****************************************************************</p><p>  ;8個按鍵S2至S9分別依

92、次接在P1.0至P1.7口線</p><p><b>  ;鍵掃子程序KEY</b></p><p><b>  ;出口:B,20H</b></p><p>  KEY: LCALL KEYCHULI ;調(diào)鍵處理子程序</p><p>  JZ EXIT

93、</p><p>  LCALL DISP ;去抖動</p><p>  LCALL DISP</p><p>  LCALL KEYCHULI ;調(diào)鍵處理子程序</p><p>  JZ EXIT ;</p&

94、gt;<p>  MOV B ,20H ;保存鍵值</p><p>  KEYSF: LCALL KEYCHULI ;調(diào)鍵處理子程序 </p><p>  JZ KEY1 ;按鍵釋放,準(zhǔn)備退出KEY子程序</p>

95、;<p>  LCALL DISP</p><p>  KEY1: MOV 20H ,B ;恢復(fù)鍵值</p><p>  EXIT: RET</p><p>  ;鍵處理子程序KEYCHULI</p><p><b>  ;出口:A,20H</b></

96、p><p>  KEYCHULI: MOV P1 ,#0FFH ;先向P1口寫1</p><p>  MOV A ,P1</p><p><b>  CPL A</b></p><p>  ANL A ,#04H</p>

97、<p>  MOV 20H ,A ;保存取反后的鍵值</p><p><b>  RET</b></p><p>  ;******************************************************************</p><p><b>  

98、;更新緩沖區(qū)子程序</b></p><p>  TAKE: MOV 78H ,SHISHI</p><p>  MOV 79H ,SHIGE</p><p>  MOV 7AH ,#12H</p><p>  MOV 7BH ,FENSHI</

99、p><p>  MOV 7CH ,FENGE</p><p>  MOV 7DH ,#12H</p><p>  MOV 7EH ,SECSHI

100、 </p><p>  MOV 7FH ,SECGE</p><p><b>  RET</b></p><p>  ;******************************************************************</p&g

101、t;<p><b>  ;數(shù)字處理子程序</b></p><p>  TAKE1: PUSH PSW ;秒加1子程序</p><p>  SETB RS1 ;改變當(dāng)期寄存器為2組</p><p>  CLR RS0 </p&

102、gt;<p>  MOV A ,SECSHI</p><p><b>  SWAP A</b></p><p>  MOV R4 ,A</p><p>  MOV A ,SECGE</p><p>  ORL A

103、 ,R4</p><p>  ADD A ,#01H</p><p><b>  DA A</b></p><p>  MOV R4 ,A</p><p><b>  SWAP A</b></p><p>  

104、ANL A ,#0FH</p><p>  MOV SECSHI ,A</p><p>  MOV A ,R4</p><p>  ANL A ,#0FH</p><p>  MOV SECGE ,A</p><p>

105、  POP PSW</p><p><b>  RET</b></p><p>  TAKE2: PUSH PSW ;分加1子程序</p><p>  SETB RS1</p><p>  CLR RS0 </p><p>  

106、MOV A ,FENSHI</p><p><b>  SWAP A</b></p><p>  MOV R3 ,A</p><p>  MOV A ,FENGE</p><p>  ORL A ,R3</p>

107、<p>  ADD A ,#01H</p><p><b>  DA A</b></p><p>  MOV R3 ,A</p><p><b>  SWAP A</b></p><p>  ANL A

108、 ,#0FH</p><p>  MOV FENSHI ,A</p><p>  MOV A , R3</p><p>  ANL A ,#0FH</p><p>  MOV FENGE ,A</p><p>  POP PSW&l

109、t;/p><p><b>  RET</b></p><p>  TAKE3: PUSH PSW ;時加1子程序</p><p>  SETB RS1</p><p>  CLR RS0 </p><p>  MOV A

110、 ,SHISHI</p><p><b>  SWAP A</b></p><p>  MOV R2 ,A</p><p>  MOV A ,SHIGE</p><p>  ORL A ,R2</p><p>  AD

111、D A ,#01H</p><p><b>  DA A</b></p><p>  MOV R2 ,A</p><p><b>  SWAP A</b></p><p>  ANL A ,#0FH</p&g

112、t;<p>  MOV SHISHI ,A</p><p>  MOV A ,R2</p><p>  ANL A ,#0FH</p><p>  MOV SHIGE ,A</p><p>  POP PSW</p><p&

113、gt;<b>  RET</b></p><p>  TAKE5: PUSH PSW ;秒減1程序</p><p>  SETB RS1</p><p>  CLR RS1</p><p>  MOV A ,SECSHI</p&g

114、t;<p><b>  SWAP A</b></p><p>  MOV R4 ,A</p><p>  MOV A ,SECGE</p><p>  ORL A ,R4</p><p>  SUBB A ,#

115、01H</p><p>  MOV R4 ,A</p><p><b>  SWAP A</b></p><p>  ANL A ,#0FH</p><p>  CJNE A ,#0FH ,LOPM ;秒到00嗎?</p><

116、;p>  MOV A ,#05H</p><p>  LOPM: MOV SECSHI ,A</p><p>  MOV A ,R4</p><p>  ANL A ,#0FH</p><p>  CJNE A ,#0FH ,L

117、ODP ;個位是0嗎?</p><p>  SUBB A, #6</p><p>  LODP: MOV SECGE ,A</p><p>  POP PSW</p><p><b>  RET</b></p><p>  TAKE6: PUSH

118、 PSW ;分減1程序</p><p>  SETB RS1</p><p>  CLR RS1</p><p>  MOV A ,FENSHI</p><p><b>  SWAP A</b></p><p&g

119、t;  MOV R3 ,A</p><p>  MOV A ,FENGE</p><p>  ORL A ,R3</p><p>  SUBB A ,#01H</p><p>  MOV R3 ,A</p><

120、p><b>  SWAP A</b></p><p>  ANL A ,#0FH</p><p>  CJNE A ,#0FH , LOPF ;分到00嗎?</p><p>  MOV A ,#05H</p><p>  LOPF: M

121、OV FENSHI ,A</p><p>  MOV A ,R3</p><p>  ANL A ,#0FH</p><p>  CJNE A ,#0FH ,LODP1 ;個位是0嗎?</p><p>  SUBB A ,#6</

122、p><p>  LODP1: MOV FENGE ,A</p><p>  POP PSW</p><p><b>  RET</b></p><p>  TAKE7: PUSH PSW ;時減1程序</p><p>  SET

123、B RS1</p><p>  CLR RS1</p><p>  MOV A ,SHISHI</p><p><b>  SWAP A</b></p><p>  MOV R2 ,A</p><p>  MOV A

124、 ,SHIGE</p><p>  ORL A ,R2</p><p>  SUBB A ,#01H</p><p>  MOV R2 ,A</p><p><b>  SWAP A</b></p><p>  AN

125、L A ,#0FH</p><p>  CJNE A ,#0FH , LOPS ;時到00嗎?</p><p>  MOV SHISHI ,#02H</p><p>  MOV SHIGE ,#03H</p><p>  LJMP LODP3</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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論