單片機(jī)秒表課程設(shè)計(jì)
;***********************************************************
; 暫停鍵K3,快加鍵K4程序
;***********************************************************
here:jb p1.0,here
show:clr tr1
clr tr0
acall xianshi
kuaijia:jb p1.2,kuaijia ;等待P1.2為0 快加
clr tr0
setb tr1
here3:jnb p1.2,here3
ajmp here
;***********************************************************
; 外部中斷INT0子程序-----計(jì)時(shí)按鍵K1子程序
;***********************************************************
zhongduan0: setb tr0 ;計(jì)時(shí)按鍵
reti
;***********************************************************
; 外部中斷INT1子程序----復(fù)位按鍵K2子程序
;***********************************************************
zhongduan1:clr tr0 ;復(fù)位按鍵
clr tr1
mov 12h,#00h
mov 11h,#00h
acall xianshi ;調(diào)用顯示子程序
mov r1,#00h
mov r2,#00h
reti
;***********************************************************
; 加一子程序
;***********************************************************
jia1: inc r1 ;加1子程序
cjne r1,#0ah ,loop ;判斷是否到表尾
mov r1,#00h
inc r2
cjne r2,#0ah,loop
mov r2,#00h
loop: mov 12h,r1 ;重新賦值
mov 11h,r2
ret
;***********************************************************
; 顯示子程序
;***********************************************************
xianshi:mov r7,#02h ;2個(gè)數(shù)碼管顯示子程序
mov r0,#12h
loop5: mov r6,#08h ;8位2進(jìn)制數(shù)
mov a,@r0
movc a,@a+dptr
loop6:rlc a ;循環(huán)左移
clr p3.1
mov p3.0,c
setb p3.1
djnz r6,loop6
dec r0
djnz r7,loop5
ret
;***********************************************************
; 定時(shí)器T0子程序
;***********************************************************
yanshi: mov tl0,#2Ch ;定時(shí)子程序
mov th0,#0CFh
djnz r3,loop7
acall jia1 ;調(diào)用加1子程序
acall xianshi ;調(diào)用顯示子程序
mov r3,#40
loop7: reti
;***********************************************************
;定時(shí)器T1子程序
;***********************************************************
dingshi1:mov tl1,#78h ;置初值,定時(shí)10MS
mov th1,#0ech
clr tr0
setb tr1
mov 12h,r1
mov 11h,r2
jnb p1.0,show
acall jia1
acall xianshi
lop7:reti
;***********************************************************
tab:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end
十一、課程設(shè)計(jì)心得體會(huì)
1、 認(rèn)真審題,看懂題目的要求!選擇適當(dāng)?shù)恼n題,不益太簡(jiǎn)單或者太難。做到既能把課題完成又能鍛煉自己的能力!
2、 根據(jù)課題要求,復(fù)習(xí)相關(guān)的知識(shí),查詢相關(guān)的資料。
3、 根據(jù)實(shí)驗(yàn)條件,找到適合的方案,找到需要的元器件及工具,準(zhǔn)備實(shí)驗(yàn)。
4、 根據(jù)課程設(shè)計(jì)的要求和自己所要增加的功能寫好程序流程圖,在程序流程圖的基礎(chǔ)上,根據(jù)芯片的功能寫出相應(yīng)的程序。然后再進(jìn)行程序調(diào)試和相應(yīng)的修改,以達(dá)到能夠?qū)崿F(xiàn)所要求的功能的目的。
5、 還要根據(jù)實(shí)驗(yàn)的實(shí)際情況,添加些額外程序來使系統(tǒng)更加的穩(wěn)定,如開關(guān)的消震蕩(采用延遲)。
6、 程序要盡量做到由各個(gè)子程序組成,在有些程序后面最好加注釋,這樣在程序出錯(cuò)的檢查過程中可以更容易查找的到,也更簡(jiǎn)潔,更明白易懂。
7、 該實(shí)驗(yàn)的程序可以參考DVCC系列單片機(jī)微機(jī)仿真實(shí)驗(yàn)系統(tǒng)實(shí)驗(yàn)指導(dǎo)書中的串并轉(zhuǎn)換實(shí)驗(yàn),也可自己根據(jù)自己熟悉的方法來編程。
8、 在設(shè)計(jì)控制開關(guān)時(shí),注意2個(gè)中斷的打開和關(guān)閉的先后順序,否則就會(huì)出錯(cuò)。
9、 這次的單片機(jī)課程設(shè)計(jì)重點(diǎn)是理論與實(shí)際的相結(jié)合。不再只讀書了。
10、 該設(shè)計(jì)從頭到尾都要自己參與,熟悉了對(duì)整個(gè)設(shè)計(jì)的過程,更系統(tǒng)的鍛煉了自己。
此設(shè)計(jì)完畢?。?/P>
-------------------------------------------------------
下面提供一個(gè)程序(供參考的)
;開機(jī)初始化
MOV P3,#0FFH;對(duì)P3口初始化,設(shè)置為高電平,用于按鍵輸入
MOV P0,#0FFH;使顯示時(shí)間數(shù)碼管熄滅
CLR F0
CLR F1
MOV DPTR,#NUMTAB ;指定查表啟始地址
;等待按鍵輸入
;根據(jù)按鍵的輸入判斷執(zhí)行什么功能
;按鍵1按下則執(zhí)行功能1
MOV P3,#0FFH;對(duì)P3口初始化,設(shè)置為高電平,用于按鍵輸入
MOV P0,#0FFH;使顯示時(shí)間數(shù)碼管熄滅
START:JB P3.6,START1;循環(huán)判斷開始按鈕K1是否按下?
ACALL DELAY10;延時(shí)10毫秒觸點(diǎn)消抖
JB P3.6,START;如果是干擾就返回
JNB P3.6,$;等待按鍵松開
LJMP GN1
;按鍵2按下則執(zhí)行功能2
START1: JB P3.7,START;循環(huán)判斷開始按鈕K2是否按下?
ACALL DELAY10;延時(shí)10毫秒觸點(diǎn)消抖
JB P3.7,START1;如果是干擾就返回
JNB P3.7,$
LJMP GN2
評(píng)論