3、實訓(xùn)進度安排
(1)第一天上午:布置任務(wù)、分組、確定題目。
(2)第一天下午和晚上:查找資料確定方案,畫出系統(tǒng)組成框圖、硬件電路圖、軟件流程圖。
(3)第二天上午:同步進行元件購買和軟件設(shè)計
(4)第二天下午和晚上:同步進行軟件設(shè)計與電路焊接
(5)第三天上午:同步進行軟件設(shè)計與電路焊接
(6)第三天下午和晚上:同步進行軟件仿真調(diào)試和電路調(diào)試
(7)第四天上午:軟硬件聯(lián)調(diào)
(8)第四天下午和晚上:軟硬件聯(lián)調(diào),撰寫實訓(xùn)報告(每組一份)
(9)第五天上午和下午:產(chǎn)品測試與答辯
通過本次課程設(shè)計的實踐,進一步學(xué)習(xí)、掌握單片機應(yīng)用系統(tǒng)的有關(guān)知識,加深了解單片機的工作原理。也進一步掌握簡單單片機應(yīng)用系統(tǒng)的設(shè)計、制作、調(diào)試的方法。同時還提高自身的動手實踐能力和科學(xué)的思維能力。
同時值得一提的是,在此設(shè)計過程中,就對時分之間的點閃爍體現(xiàn)是用查表輸出形式實現(xiàn)的,由于本系統(tǒng)設(shè)計是采用74LS164驅(qū)動數(shù)碼管,只有一個數(shù)據(jù)信號輸入口,所以不能對數(shù)碼管進行“位”控,只能對數(shù)碼管的整體顯示進行控制。所以每秒內(nèi)至少需兩次數(shù)據(jù)輸出并顯示,第一次輸出顯示的數(shù)的小數(shù)點都不亮,第二次輸出顯示的數(shù)(數(shù)的值不變)中第三個數(shù)碼管的數(shù)的小數(shù)點亮,兩者交替輸出顯示,即可實現(xiàn)點時分之間的點閃爍。在具體實現(xiàn)過程中是用查表方式實現(xiàn),即在第二次輸出顯示時,把R3的值加10,既R3查表所得的值是TAB表格中第二排數(shù)值(參看程序清單),而第二排數(shù)值所對應(yīng)顯示的數(shù)都是小數(shù)點亮的,在此次輸出顯示完成后,再把R3減10,返回原來的值并繼續(xù)進行計時。另外在設(shè)計按鈕時,一開始遇到的難題是:按一下按鈕,時或分所加的數(shù)值并不為1,加的數(shù)為不確定值,最后經(jīng)過研究,使設(shè)計程序在查詢P1.2,P1.3端口時,若檢測到高電平時需延遲20ms左右后,再進行二次檢測,以消除按鈕的抖動干擾,使之按一下能正確調(diào)節(jié)時分進行加1調(diào)整(參看程序清單)。最后值得總結(jié)的是,在程序設(shè)計過程中還存在很多細節(jié)上的問題,如因為沒有對進位標志位CY清零,在其他程序都正確的情況下卻始終調(diào)不出正確滿意的結(jié)果,最后費了很多時間精力去查找尋錯,才得以解決,這使我認識到在程序設(shè)計過程中,平時必須加強對一些細小環(huán)節(jié)的重視,這樣才能在真正程序設(shè)計時能做到正確快速的調(diào)試成功。總的說來,這次課程設(shè)計收益匪淺,通過認真思考、查找資料,以及和同學(xué)、老師的探討,解決了很多問題,同時也增長了很多在課堂上學(xué)不到的知識。
;中斷向量程序段
org 0000h
ajmp start
org 000bh ;定時器T0中斷向量地址
ajmp dingshi
org 001bh ;定時器T0中斷向量地址
ajmp ds
;*********************************************
;初始化程序段
org 0030h
start: mov sp,#30h
mov tmod,#11h ;定時器設(shè)置
mov th0,#3ch ;定時1秒
mov tl0,#0b0h
mov iE,#8ah ;打開定時中斷
mov p1,#00h
setb tr0
;*********************************************
;主程序段
main: mov p1,#00h
mov a,p1
jb acc.3,proc3 ;查詢P1.3端口電壓
jb acc.2,proc2 ;查詢P1.2端口電壓
ajmp main
;*********************************************
;二次檢測P1.3,P1.2端口電平
proc3: acall delay0 ;延時20ms
mov p1,#00h
mov a,p1
jb acc.3,jiafen
ret
proc2: acall delay0 ;延時20ms
mov p1,#00h
mov a,p1
jb acc.2,jiashi
ret
;*********************************************
;調(diào)節(jié)分子程序
jiafen: clr p1.3
mov ie,#00h
clr tr0
inc r1
cjne r1,#0ah,xianshi0 ;十進位
mov r1,#00h
inc r2
cjne r2,#06h,xianshi0 ;六進位
mov r2,#00h
xianshi0:acall show
mov ie,#8ah ;打開TO,T1中斷
setb tr0 ;使T0開始計時
ret
;*********************************************
; 調(diào)節(jié)時子程序
jiashi: clr p1.2
mov ie,#00h
clr tr0
cjne r4,#02h,sjw ;判斷R4是否為2
;*******
;二十四清零
inc r3
cjne r3,#04h,xianshi1 ;四進位
mov r3,#00h
inc r4
cjne r4,#03h,xianshi1 ;三進位
mov r4,#00h
ajmp xianshi1
;********
sjw: inc r3
cjne r3,#0ah,xianshi1 ; 十進位
mov r3,#00h
inc r4
cjne r4,#03h,xianshi1 ;三進位
mov r4,#00h
xianshi1:acall show
mov ie,#8ah ;打開TO,T1中斷
setb tr0 ;使T0開始計時
ret
;*********************************************
;TO產(chǎn)生中斷計時子程序
dingshi:mov th1,#0ffh ;T1賦初值(可任意值)
mov tl1,#0feh
mov th0,#3ch ;T0賦初值(定時0.1s)
mov tl0,#0b0h
inc r6
cjne r6,#0ah,dings0 ; 十進位
mov r6,#00h
setb et1
setb tr1
inc r5
cjne r5,#3ch,dings4 ; 60進位
mov r5,#00h
inc r1
cjne r1,#0ah,dings4 ; 十進位
mov r1,#00h
inc r2
cjne r2,#06h,dings4 ; 六進位
mov r2,#00h
cjne r4,#02h,sjw ;判斷R4是否為2
;*******
;二十四清零
inc r3
cjne r3,#04h,dings4 ; 四進位
mov r3,#00h
inc r4
cjne r4,#03h,dings4 ; 三進位
mov r4,#00h
ajmp dings4
;*******
sjw: inc r3
cjne r3,#0ah,dings4 ; 十進位
mov r3,#00h
inc r4
cjne r4,#03h,dings4 ; 三進位
mov r4,#00h
dings4: acall show
dings0: reti
;*********************************************
;T1中斷子程序
ds: clr tr1
acall delay ;延時約0.5s
;*******
;R3加10
mov a,#0ah
add a,r3
mov r3,a
acall show
;*******
; R3減10
mov a,r3
clr c ;特別注意在減法操作時應(yīng)清除CY標志位
subb a,#0ah
clr c
mov r3,a
reti
;*********************************************
;顯示子程序
show: mov dptr,#Tab
mov 70h,#04h ; 顯示的位數(shù)
mov r0,#01h ;先輸出R0值
led: mov 71h,#08h
mov a,@r0
movc a,@a+dptr
setb p1.1 ;P1.1 時鐘信號
tart: rlc a
nop
mov p1.0,c ;P1.0 數(shù)據(jù)信號
nop
clr p1.1
nop
setb p1.1
djnz 71h,tart
inc r0 ;進行加1,分別輸出R2,R3,R4的值
djnz 70h,led
ret
;*********************************************
;延時約20ms子程序
delay0: mov 75h,#4eh
loop01: mov 76h,#0ffh
loop02: nop
djnz 76h,loop02
djnz 75h,loop01
ret
;*********************************************
;延時約0.5S子程序
delay: mov 74h,#03h
loop0: mov 73h,#0ffh
loop1: mov 72h,#0ffh
loop2: nop
djnz 72h,loop2
djnz 73h,loop1
djna 74h,loop0
ret
;*********************************************
; 本表為顯示數(shù)據(jù)表
Tab: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
;“0,1,2,3,4,5,6,7,8,9”
db 0bfh,86h,0dbh,0cfh,0e6h,0edh,0fdh,87h,0ffh,0efh
;帶有小數(shù)點顯示的“0,1,2,3,4,5,6,7,8,9”
;*********************************************
end
