微機原理電子秒表課程設(shè)計_第1頁
已閱讀1頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  電子秒表設(shè)計報告</b></p><p><b>  設(shè)計要求:</b></p><p>  用89C51,外接晶振,復位電路,二個數(shù)碼管,二個按鍵,做一個電子秒表,具體要求為用按鍵起停電子表,可用按鍵設(shè)計倒計時時間(如10S,20S,60S),并啟動倒計時功能。能用按鍵選擇以上兩功能之一。</p>&

2、lt;p><b>  實現(xiàn)原理:</b></p><p>  利用12M晶振的一個機器周期為1微秒,通過循環(huán)產(chǎn)生1秒時間延遲,掃描單片機中所存放的時間的值(可正記時,也可倒計時),并通過輸出顯示在數(shù)碼管上。</p><p><b>  電路圖:</b></p><p>  p0.0—p0.7對應了兩個接數(shù)碼管的A,B

3、,C,D,E,F,G和小數(shù)點位,p2.6接顯示個位數(shù)的數(shù)碼管的3、8引角,p2.7則接十位數(shù)的。p3.6、p3.7分別接按鍵。</p><p><b>  流程框圖:</b></p><p><b>  程序代碼:</b></p><p>  a_bit equ 20h ;數(shù)碼管個位數(shù)存放內(nèi)存位置</p>&

4、lt;p>  b_bit equ 21h ;數(shù)碼管十位數(shù)存放內(nèi)存位置</p><p>  temp equ 22h ;計數(shù)器數(shù)值存放內(nèi)存位置</p><p><b>  ;開機初始化</b></p><p>  MOV P3,#0FFH;對P3口初始化,設(shè)置為高電平,用于按鍵輸入</p><p>  MOV P0

5、,#0FFH;使顯示時間數(shù)碼管熄滅</p><p><b>  ;等待按鍵輸入</b></p><p>  ;根據(jù)按鍵的輸入判斷執(zhí)行什么功能</p><p>  ;按鍵1按下則執(zhí)行功能1</p><p>  START:JB P3.6,$;循環(huán)判斷開始按鈕K1是否按下?</p><p>  ACA

6、LL DELAY10;延時10毫秒觸點消抖</p><p>  JB P3.6,START1;如果是干擾就返回</p><p>  JNB P3.6,$;等待按鍵松開</p><p>  ljmp gn1 </p><p><b>  ;</b></p><p>  按鍵2按下則執(zhí)行功能

7、2</p><p>  start1: jb p3.7,$;循環(huán)判斷開始按鈕K2是否按下? </p><p>  ACALL DELAY10;延時10毫秒觸點消抖</p><p>  JB P3.7,START;如果是干擾就返回</p><p>  jnb p3.7,$</p><p><b>  ljmp

8、 gn2</b></p><p>  ;數(shù)碼管顯示秒表時間的程序</p><p>  gn1: ;先初始化</p><p>  MOV P3,#0FFH;對P3口初始化,設(shè)置為高電平,用于按鍵輸入</p><p>  MOV P0,#0FFH;使顯示時間數(shù)碼管熄滅</p><p><b> 

9、 mov a,#0</b></p><p>  mov temp,a </p><p>  goon1: MOV R2,#2</p><p>  js1: MOV R3,#250</p><p>  TIME1: mov a,temp ;將temp中的十六進制數(shù)轉(zhuǎn)換成10進制 </p><p>

10、;  mov b,#10 ;10進制/10=10進制</p><p><b>  div ab</b></p><p>  mov b_bit,a ;十位在a</p><p>  mov a_bit,b ;個位在b</p><p>  mov dptr,#numtab ;指定查表啟始地址</p><p

11、>  mov r0,#4 </p><p>  dpl1: mov r1,#250 ;</p><p>  dplop1: mov a,a_bit ;取個位數(shù)</p><p>  MOVC A,@A+DPTR ;查個位數(shù)的7段代碼</p><p>  mov p0,a ;送出個位的7段代碼</p><p>

12、  mov p0,a ;送出個位的7段代碼</p><p>  clr p2.7 ;開個位顯示</p><p>  ACALL DELY1;顯示1毫秒</p><p>  setb p2.7;關(guān)閉個位顯示,防止鬼影</p><p>  mov a,b_bit ;取十位數(shù)</p><p>  MOVC A,@A+DP

13、TR ;查十位數(shù)的7段代碼</p><p>  mov p0,a ;送出十位的7段代碼</p><p>  clr p2.6 ;開十位顯示</p><p>  ACALL DELY1;顯示1毫秒</p><p>  setb p2.6;關(guān)閉十位顯示,防止鬼影</p><p>  ;插入一段判斷定時過程中是否有按鍵輸入的

14、程序段</p><p>  C1: JB P3.6,B1</p><p>  ACALL DELAY10;延時10毫秒消抖</p><p>  JB P3.6,C1</p><p>  JNB P3.6,$;等待按鍵松開</p><p>  zt1: MOV P3,#0FFH;對P3口初始化,設(shè)置為高電平

15、,用于按鍵輸入</p><p>  jb p3.6,$;循環(huán)判斷開始按鈕K1是否按下?</p><p>  ACALL DELAY10;延時10毫秒觸點消抖</p><p>  JB P3.6,zt1;如果是干擾就返回</p><p>  JNB P3.6,$;等待按鍵松開</p><p>  B1: JB P

16、3.7,loop1</p><p>  ACALL DELAY10;延時10毫秒消抖</p><p>  JB P3.7,B1</p><p>  JNB P3.7,$;等待按鍵松開</p><p><b>  AJMP OVER</b></p><p>  loop1: djnz r3,TI

17、ME1 ;2毫秒循環(huán)執(zhí)行250次,時間約0.5秒</p><p>  djnz r2,js1 ;循環(huán)執(zhí)行2次,時間為1 秒鐘</p><p>  inc TEMP;滿一秒鐘對時間加1</p><p>  MOV A,TEMP</p><p><b>  clr c</b></p><p&g

18、t;  subb a,#60</p><p>  JNZ goon1;判斷TEMP的數(shù)值是否為60?不為60循環(huán) </p><p>  acall over</p><p><b>  ret</b></p><p>  gn2: mov a,#14h ; 設(shè)定倒計時的時間20S</p><p

19、>  mov temp,a</p><p>  ;數(shù)碼管顯示倒計時時間的程序</p><p><b>  ;初始化</b></p><p>  MOV P3,#0FFH;對P3口初始化,設(shè)置為高電平,用于按鍵輸入</p><p>  MOV P0,#14H;使顯示時間為設(shè)定的倒計時時間</p><

20、;p>  goon2: MOV R2,#2</p><p>  js2: MOV R3,#250</p><p>  TIME2: mov a,temp ;將temp中的十六進制數(shù)轉(zhuǎn)換成10進制 </p><p>  mov b,#10 ;10進制/10=10進制</p><p><b>  div ab<

21、;/b></p><p>  mov b_bit,a ;十位在a</p><p>  mov a_bit,b ;個位在b</p><p>  mov dptr,#numtab ;指定查表啟始地址</p><p>  mov r0,#4 </p><p>  dpl2: mov r1,#250 ;</p&

22、gt;<p>  dplop2: mov a,a_bit ;取個位數(shù)</p><p>  MOVC A,@A+DPTR ;查個位數(shù)的7段代碼</p><p>  mov p0,a ;送出個位的7段代碼</p><p>  mov p0,a ;送出個位的7段代碼</p><p>  clr p2.7 ;開個位顯示</p&g

23、t;<p>  ACALL DELY1;顯示1毫秒</p><p>  setb p2.7;關(guān)閉個位顯示,防止鬼影</p><p>  mov a,b_bit ;取十位數(shù)</p><p>  MOVC A,@A+DPTR ;查十位數(shù)的7段代碼</p><p>  mov p0,a ;送出十位的7段代碼</p>

24、<p>  clr p2.6 ;開十位顯示</p><p>  ACALL DELY1;顯示1毫秒</p><p>  setb p2.6;關(guān)閉十位顯示,防止鬼影</p><p>  ;插入一段判斷定時過程中是否有按鍵輸入的程序段</p><p>  C2: JB P3.6,B2</p><p>  

25、ACALL DELAY10;延時10毫秒消抖</p><p>  JB P3.6,C2</p><p>  JNB P3.6,$;等待按鍵松開</p><p>  zt2: MOV P3,#0FFH;對P3口初始化,設(shè)置為高電平,用于按鍵輸入</p><p>  jb p3.6,$;循環(huán)判斷開始按鈕K1是否按下?</p>

26、<p>  ACALL DELAY10;延時10毫秒觸點消抖</p><p>  JB P3.6,zt2;如果是干擾就返回</p><p>  JNB P3.6,$;等待按鍵松開</p><p>  B2: JB P3.7,loop2</p><p>  ACALL DELAY10;延時10毫秒消抖</p>&

27、lt;p>  JB P3.7,B1</p><p>  JNB P3.7,$;等待按鍵松開</p><p><b>  AJMP OVER</b></p><p>  loop2: djnz r3,TIME2 ;2毫秒循環(huán)執(zhí)行250次,時間約0.5秒</p><p>  djnz r2,js2 ;循環(huán)

28、執(zhí)行2次,時間為1 秒鐘</p><p>  dec TEMP;滿一秒鐘對時間加1</p><p>  MOV A,TEMP</p><p>  JNZ goon2;判斷TEMP的數(shù)值是否為0?不為0循環(huán) </p><p>  acall over</p><p><b>  ret</b><

29、;/p><p><b>  ;結(jié)束定時</b></p><p>  OVER: AJMP START;退到開機初始化狀態(tài)</p><p><b>  ;1毫秒延時子程序</b></p><p>  DELY1: MOV R4,#2</p><p>  D1:MOV R5,#2

30、48</p><p><b>  DJNZ R5,$</b></p><p>  DJNZ R4,D1</p><p><b>  RET</b></p><p>  ;10毫秒延時子程序</p><p>  DELAY10: MOV R4,#20</p>&l

31、t;p>  D2:MOV R5,#248</p><p><b>  DJNZ R5,$</b></p><p>  DJNZ R4,D2</p><p><b>  RET</b></p><p>  ;實驗板上的兩位一體的數(shù)碼管0~9各數(shù)字的顯示代碼</p><p>

溫馨提示

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

評論

0/150

提交評論