微機原理電子秒表課程設計_第1頁
微機原理電子秒表課程設計_第2頁
微機原理電子秒表課程設計_第3頁
微機原理電子秒表課程設計_第4頁
微機原理電子秒表課程設計_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、電子秒表設計報告設計要求: 用89C51,外接晶振,復位電路,二個數碼管,二個按鍵,做一個電子秒表,具體要求為用按鍵起停電子表,可用按鍵設計倒計時時間(如10S,20S,60S),并啟動倒計時功能。能用按鍵選擇以上兩功能之一。實現原理:利用12M晶振的一個機器周期為1微秒,通過循環產生1秒時間延遲,掃描單片機中所存放的時間的值(可正記時,也可倒計時),并通過輸出顯示在數碼管上。電路圖:P0.0P0.7對應了兩個接數碼管的A,B,C,D,E,F,G和小數點位,P2.6接顯示個位數的數碼管的3、8引角,P2.7則接十位數的。P3.6、P3.7分別接按鍵。流程框圖:程序代碼:A_BIT EQU 20

2、H ;數碼管個位數存放內存位置B_BIT EQU 21H ;數碼管十位數存放內存位置TEMP EQU 22H ;計數器數值存放內存位置;開機初始化 MOV P3,#0FFH;對P3口初始化,設置為高電平,用于按鍵輸入 MOV P0,#0FFH;使顯示時間數碼管熄滅;等待按鍵輸入;根據按鍵的輸入判斷執行什么功能;按鍵1按下則執行功能1START:JB P3.6,$;循環判斷開始按鈕K1是否按下? ACALL DELAY10;延時10毫秒觸點消抖 JB P3.6,START1;如果是干擾就返回 JNB P3.6,$;等待按鍵松開 LJMP GN1 ;按鍵2按下則執行功能2START1: JB P3

3、.7,$;循環判斷開始按鈕K2是否按下? ACALL DELAY10;延時10毫秒觸點消抖 JB P3.7,START;如果是干擾就返回 JNB P3.7,$ LJMP GN2;數碼管顯示秒表時間的程序GN1: ;先初始化 MOV P3,#0FFH;對P3口初始化,設置為高電平,用于按鍵輸入 MOV P0,#0FFH;使顯示時間數碼管熄滅 MOV A,#0 MOV TEMP,A GOON1: MOV R2,#2JS1: MOV R3,#250TIME1: MOV A,TEMP ;將TEMP中的十六進制數轉換成10進制 MOV B,#10 ;10進制/10=10進制 DIV AB MOV B_B

4、IT,A ;十位在A MOV A_BIT,B ;個位在B MOV DPTR,#NUMTAB ;指定查表啟始地址 MOV R0,#4 DPL1: MOV R1,#250 ;DPLOP1: MOV A,A_BIT ;取個位數 MOVC A,A+DPTR ;查個位數的7段代碼 MOV P0,A ;送出個位的7段代碼 MOV P0,A ;送出個位的7段代碼 CLR P2.7 ;開個位顯示 ACALL DELY1;顯示1毫秒 SETB P2.7;關閉個位顯示,防止鬼影 MOV A,B_BIT ;取十位數 MOVC A,A+DPTR ;查十位數的7段代碼 MOV P0,A ;送出十位的7段代碼 CLR P

5、2.6 ;開十位顯示 ACALL DELY1;顯示1毫秒 SETB P2.6;關閉十位顯示,防止鬼影 ;插入一段判斷定時過程中是否有按鍵輸入的程序段C1: JB P3.6,B1 ACALL DELAY10;延時10毫秒消抖 JB P3.6,C1 JNB P3.6,$;等待按鍵松開 ZT1: MOV P3,#0FFH;對P3口初始化,設置為高電平,用于按鍵輸入 JB P3.6,$;循環判斷開始按鈕K1是否按下? ACALL DELAY10;延時10毫秒觸點消抖 JB P3.6,ZT1;如果是干擾就返回 JNB P3.6,$;等待按鍵松開 B1: JB P3.7,LOOP1ACALL DELAY1

6、0;延時10毫秒消抖JB P3.7,B1JNB P3.7,$;等待按鍵松開AJMP OVERLOOP1: DJNZ R3,TIME1 ;2毫秒循環執行250次,時間約0.5秒DJNZ R2,JS1 ;循環執行2次,時間為1 秒鐘INC TEMP;滿一秒鐘對時間加1MOV A,TEMPCLR CSUBB A,#60JNZ GOON1;判斷TEMP的數值是否為60?不為60循環 ACALL OVERRETGN2: MOV A,#14H ; 設定倒計時的時間20S MOV TEMP,A;數碼管顯示倒計時時間的程序 ;初始化 MOV P3,#0FFH;對P3口初始化,設置為高電平,用于按鍵輸入 MOV

7、 P0,#14H;使顯示時間為設定的倒計時時間GOON2: MOV R2,#2JS2: MOV R3,#250TIME2: MOV A,TEMP ;將TEMP中的十六進制數轉換成10進制 MOV B,#10 ;10進制/10=10進制 DIV AB MOV B_BIT,A ;十位在A MOV A_BIT,B ;個位在B MOV DPTR,#NUMTAB ;指定查表啟始地址 MOV R0,#4 DPL2: MOV R1,#250 ;DPLOP2: MOV A,A_BIT ;取個位數 MOVC A,A+DPTR ;查個位數的7段代碼 MOV P0,A ;送出個位的7段代碼 MOV P0,A ;送出

8、個位的7段代碼 CLR P2.7 ;開個位顯示 ACALL DELY1;顯示1毫秒 SETB P2.7;關閉個位顯示,防止鬼影 MOV A,B_BIT ;取十位數 MOVC A,A+DPTR ;查十位數的7段代碼 MOV P0,A ;送出十位的7段代碼 CLR P2.6 ;開十位顯示 ACALL DELY1;顯示1毫秒 SETB P2.6;關閉十位顯示,防止鬼影 ;插入一段判斷定時過程中是否有按鍵輸入的程序段C2: JB P3.6,B2 ACALL DELAY10;延時10毫秒消抖 JB P3.6,C2 JNB P3.6,$;等待按鍵松開 ZT2: MOV P3,#0FFH;對P3口初始化,設

9、置為高電平,用于按鍵輸入 JB P3.6,$;循環判斷開始按鈕K1是否按下? ACALL DELAY10;延時10毫秒觸點消抖 JB P3.6,ZT2;如果是干擾就返回 JNB P3.6,$;等待按鍵松開 B2: JB P3.7,LOOP2ACALL DELAY10;延時10毫秒消抖JB P3.7,B1JNB P3.7,$;等待按鍵松開AJMP OVERLOOP2: DJNZ R3,TIME2 ;2毫秒循環執行250次,時間約0.5秒DJNZ R2,JS2 ;循環執行2次,時間為1 秒鐘DEC TEMP;滿一秒鐘對時間加1MOV A,TEMPJNZ GOON2;判斷TEMP的數值是否為0?不為0循環 ACALL OVERRET ;結束定時OVER: AJMP START;退到開機初始化狀態;1毫秒延時子程序DELY1: MOV R4,#2D1:MOV R5,#248DJNZ R5,$DJNZ R4,D1RET

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論