單片機(jī)秒表課程設(shè)計(jì)
本文關(guān)鍵詞:單片機(jī)秒表課程設(shè)計(jì),由筆耕文化傳播整理發(fā)布。
當(dāng)前位置:?jiǎn)纹瑱C(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章
單片機(jī)秒表課程設(shè)計(jì)作者:佚名 來源:本站原創(chuàng) 點(diǎn)擊數(shù):… 更新時(shí)間:2007年06月28日 【字體:】
一、實(shí)驗(yàn)題目
秒表系統(tǒng)設(shè)計(jì)——用AT89C51設(shè)計(jì)一個(gè)2位LED數(shù)碼顯示“秒表”,顯示時(shí)間為00~99秒,每秒自動(dòng)加一。另設(shè)計(jì)一個(gè)“開始”按鍵和一個(gè)“復(fù)位”按鍵。
二、增加功能
增加一個(gè)“暫�!卑存I和一個(gè)“快加”按鍵(每10ms快速加一)
三、實(shí)驗(yàn)內(nèi)容提要
本實(shí)驗(yàn)利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,結(jié)合dvcc實(shí)驗(yàn)箱上的集成電路芯片8032、LED數(shù)碼管以及實(shí)驗(yàn)箱上的按鍵來設(shè)計(jì)計(jì)時(shí)器。將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),數(shù)碼管能夠正確地顯示時(shí)間。其中本實(shí)驗(yàn)設(shè)計(jì)了四個(gè)開關(guān)按鍵:其中一個(gè)按鍵按下去時(shí)以1秒加一開始計(jì)時(shí),即秒表開始鍵(本實(shí)驗(yàn)中當(dāng)開關(guān)從1變?yōu)?時(shí)開始計(jì)時(shí)),另一個(gè)按鍵按下去時(shí)暫停計(jì)時(shí),使秒表停留在原先的計(jì)時(shí)(本實(shí)驗(yàn)中當(dāng)相應(yīng)開關(guān)從1變?yōu)?時(shí)即停止計(jì)時(shí)),第三個(gè)按鍵按下去時(shí)清0(本實(shí)驗(yàn)中當(dāng)相應(yīng)開關(guān)從1變?yōu)?時(shí)即停止計(jì)時(shí)),第四按鍵按下去則是以每10ms秒快速加一計(jì)時(shí)(本實(shí)驗(yàn)中當(dāng)開關(guān)從1變?yōu)?時(shí)開始計(jì)時(shí))。本實(shí)驗(yàn)中開始時(shí)都要使各按鍵回到各初始位置,即都處于1狀態(tài)。
三、實(shí)驗(yàn)?zāi)康?br /> 1、 通過本次課程設(shè)計(jì)加深對(duì)單片機(jī)課程的全面認(rèn)識(shí)復(fù)習(xí)和掌握,對(duì)單片機(jī)課程的應(yīng)用進(jìn)一步的了解。
2、 掌握定時(shí)器、外部中斷的設(shè)置和編程原理。
3、 通過此次課程設(shè)計(jì)能夠?qū)纹瑱C(jī)軟硬件結(jié)合起來,對(duì)程序進(jìn)行編輯,校驗(yàn)。
四、意義
該實(shí)驗(yàn)通過單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和計(jì)數(shù)原理,設(shè)計(jì)簡(jiǎn)單的計(jì)時(shí)器系統(tǒng),擁有正確的計(jì)時(shí)、暫停、清零、快加功能,并同時(shí)可以用數(shù)碼管顯示,在現(xiàn)實(shí)生活中應(yīng)用廣泛,具有現(xiàn)實(shí)意義。
五、本人所做工作
根據(jù)相關(guān)的單片機(jī)材料,利用所學(xué)的單片機(jī)知識(shí),結(jié)合DVCC系列單片機(jī)微機(jī)仿真實(shí)驗(yàn)系統(tǒng)中的軟件和硬件(集成電路芯片8032,七段數(shù)碼管,開關(guān)電路及時(shí)鐘信號(hào)電路,按鍵等),編寫能夠?qū)崿F(xiàn)該項(xiàng)目的軟件程序,最后將軟、硬件有機(jī)的結(jié)合起來,進(jìn)行有效的調(diào)試,達(dá)到完成該實(shí)驗(yàn)課程設(shè)計(jì)的目的要求。
六、實(shí)驗(yàn)內(nèi)容
用AT89C51設(shè)計(jì)一個(gè)2位LED數(shù)碼顯示“秒表”,顯示時(shí)間為00~99秒,每秒自動(dòng)加一。另設(shè)計(jì)一個(gè)“開始”按鍵和一個(gè)“復(fù)位”按鍵。再增加一個(gè)“暫�!卑存I和一個(gè)“快加”按鍵(每10ms快速加一)。
按鍵說明:按“開始”按鍵,開始計(jì)數(shù),數(shù)碼管顯示從00開始每秒自動(dòng)加一;按“復(fù)位”按鍵,系統(tǒng)清零,數(shù)碼管顯示00;按“暫�!卑存I,系統(tǒng)暫停計(jì)數(shù),數(shù)碼管顯示當(dāng)時(shí)的計(jì)數(shù);按“快加”按鍵,系統(tǒng)每10ms快速加一,即數(shù)碼顯示管在原先的計(jì)數(shù)上快速加一。
七、設(shè)計(jì)思路及描述
該實(shí)驗(yàn)要求進(jìn)行計(jì)時(shí)并在數(shù)碼管上顯示時(shí)間,則可利用DVCC系列單片機(jī)微機(jī)仿真實(shí)驗(yàn)系統(tǒng)中的芯片8032(芯片的功能類似于芯片AT89C51,其管腳功能也和AT89C51的管腳功能類似)中的P3.2管腳做為外部中斷0的入口地址,并實(shí)現(xiàn)“開始”按鍵的功能;將P3.3做為外部中斷1的入口地址,并實(shí)現(xiàn)“清零”按鍵的功能;將P3.0做為數(shù)據(jù)信號(hào)DATA輸入的入口地址;將P3.1做為時(shí)鐘信號(hào)CLK輸入的入口地址。定時(shí)器T0作為每秒加一的定時(shí)器;定時(shí)器T1作為“快加”鍵的定時(shí)器。其中“開始”按鍵當(dāng)開關(guān)由1撥向0(由上向下?lián)埽⿻r(shí)開始計(jì)時(shí);“清零”按鍵當(dāng)開關(guān)由1撥向0(由上向下?lián)埽⿻r(shí)數(shù)碼管清零,此時(shí)若再撥“開始”按鍵則又可重新開始計(jì)時(shí)。
八、原理圖
十、實(shí)驗(yàn)程序
;******************************************************************
; 設(shè)計(jì)選題:實(shí)驗(yàn)五-----秒表系統(tǒng)設(shè)計(jì)
; 描述: 2位LED數(shù)碼顯示"秒表",顯示時(shí)間為00~99秒,每秒自動(dòng)加1,
; 一個(gè)"開始"鍵,一個(gè)"復(fù)位"鍵,一個(gè)"暫停"鍵,一個(gè)“快加”鍵。
; 調(diào)用子程序:暫停鍵子程序,計(jì)時(shí)鍵子程序,清0鍵子程序,加一子程序
; 顯示子程序,定時(shí)子程序
;所用特殊寄存器:寄存器A,寄存器C
;所用中斷:外部中斷INT0、INT1,定時(shí)器T0、T1
; 實(shí)驗(yàn)作者: 吳呤--2號(hào),方曉瑛--10號(hào)
;***************************************************************************
org 0000h
ajmp main ;主程序入口地址
org 0003h
ajmp zhongduan0 ;中斷0入口地址
org 000bh
ajmp yanshi ;定時(shí)器T0入口地址
org 0013h
ajmp zhongduan1 ;中斷1入口地址
org 001bh
ajmp dingshi1 ;定時(shí)器T1入口地址
org 0030h
;***********************************************************
; 主程序
;***********************************************************
main: mov tcon,#05h ;主程序開始 外部中斷跳變模式
mov tmod,#11h ;定時(shí)器0,1模式1
mov ie,#8fh ;開總中斷,中斷0,1,定時(shí)器0,1
mov dptr,#tab
mov r1,#00h
mov r2,#00h
mov r3,#40 ;循環(huán)次數(shù)40
mov tl0,#2Ch ;置初值,定時(shí)25MS
mov th0,#0CFh
mov tl1,#78h ;置初值,定時(shí)10MS
mov th1,#0ech
clr tr0 ;關(guān)定時(shí)器
clr tr1
;***********************************************************
; 暫停鍵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ì)完畢�。�
-------------------------------------------------------
下面提供一個(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
;數(shù)碼管顯示秒表時(shí)間的程序
GN1: ;先初始化
S1:MOV A,#0
MOV TEMP,A
GOON1: MOV R2,#2
JS1: MOV R3,#250
TIME1: MOV A,TEMP ;將TEMP中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制
MOV B,#10 ;10進(jìn)制/10=10進(jìn)制
DIV AB
MOV B_BIT,A ;十位在A
MOV A_BIT,B ;個(gè)位在B
LCALL DPLOP1
;插入一段判斷定時(shí)過程中是否有按鍵輸入的程序段
C1: JB P3.6,B1
ACALL DELAY10;延時(shí)10毫秒消抖
JB P3.6,C1
JNB P3.6,$;等待按鍵松開
CPL F0
ZT1: ; MOV P3,#0FFH;對(duì)P3口初始化,設(shè)置為高電平,用于按鍵輸入
JB P3.6,$;循環(huán)判斷開始按鈕K1是否按下?
ACALL DELAY10;延時(shí)10毫秒觸點(diǎn)消抖
JB P3.6,ZT1;如果是干擾就返回
JNB P3.6,$;等待按鍵松開
LCALL DPLOP1
B1: JB P3.7,LOOP1
ACALL DELAY10;延時(shí)10毫秒消抖
JB P3.7,B1
JNB P3.7,$;等待按鍵松開
AJMP OVER
LOOP1: DJNZ R3,TIME1 ;2毫秒循環(huán)執(zhí)行250次,時(shí)間約0.5秒
DJNZ R2,JS1 ;循環(huán)執(zhí)行2次,時(shí)間為1 秒鐘
INC TEMP;滿一秒鐘對(duì)時(shí)間加1
MOV A,TEMP
CLR C
SUBB A,#60
JNZ GOON1;判斷TEMP的數(shù)值是否為60?不為60循環(huán)
ACALL OVER
RET
GN2: MOV A,#14H ; 設(shè)定倒計(jì)時(shí)的時(shí)間20S
MOV TEMP,A
;數(shù)碼管顯示倒計(jì)時(shí)時(shí)間的程序
;初始化
MOV P3,#0FFH;對(duì)P3口初始化,設(shè)置為高電平,用于按鍵輸入
MOV P0,#14H;使顯示時(shí)間為設(shè)定的倒計(jì)時(shí)時(shí)間
GOON2: MOV R2,#2
JS2: MOV R3,#250
TIME2: MOV A,TEMP ;將TEMP中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制
MOV B,#10 ;10進(jìn)制/10=10進(jìn)制
DIV AB
MOV B_BIT,A ;十位在A
MOV A_BIT,B ;個(gè)位在B
MOV DPTR,#NUMTAB ;指定查表啟始地址
DPLOP2: MOV A,A_BIT ;取個(gè)位數(shù)
MOVC A,@A+DPTR ;查個(gè)位數(shù)的7段代碼
MOV P0,A ;送出個(gè)位的7段代碼
CLR P2.5 ;開個(gè)位顯示
ACALL DELY1;顯示1毫秒
SETB P2.5;關(guān)閉個(gè)位顯示,防止鬼影
MOV A,B_BIT ;取十位數(shù)
MOVC A,@A+DPTR ;查十位數(shù)的7段代碼
MOV P0,A ;送出十位的7段代碼
CLR P2.6 ;開十位顯示
ACALL DELY1;顯示1毫秒
SETB P2.6;關(guān)閉十位顯示,防止鬼影
;插入一段判斷定時(shí)過程中是否有按鍵輸入的程序段
C2: JB P3.6,B2
ACALL DELAY10;延時(shí)10毫秒消抖
JB P3.6,C2
JNB P3.6,$;等待按鍵松開
ZT2: MOV P3,#0FFH;對(duì)P3口初始化,設(shè)置為高電平,用于按鍵輸入
JB P3.6,$;循環(huán)判斷開始按鈕K1是否按下?
ACALL DELAY10;延時(shí)10毫秒觸點(diǎn)消抖
JB P3.6,ZT2;如果是干擾就返回
JNB P3.6,$;等待按鍵松開
B2: JB P3.7,LOOP2
ACALL DELAY10;延時(shí)10毫秒消抖
JB P3.7,B1
JNB P3.7,$;等待按鍵松開
AJMP OVER
LOOP2: DJNZ R3,TIME2 ;2毫秒循環(huán)執(zhí)行250次,時(shí)間約0.5秒
DJNZ R2,JS2 ;循環(huán)執(zhí)行2次,時(shí)間為1 秒鐘
DEC TEMP;滿一秒鐘對(duì)時(shí)間減1
MOV A,TEMP
JNZ GOON2;判斷TEMP的數(shù)值是否為0?不為0循環(huán)
ACALL OVER
RET
;結(jié)束定時(shí)
OVER: AJMP START;退到開機(jī)初始化狀態(tài)
;1毫秒延時(shí)子程序
DELY1: MOV R4,#2
D1:MOV R5,#248
DJNZ R5,$
DJNZ R4,D1
RET
;10毫秒延時(shí)子程序
DELAY10: MOV R4,#20
D2:MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
RET
;實(shí)驗(yàn)板上的兩位一體的數(shù)碼管0~9各數(shù)字的顯示代碼
NUMTAB: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
DPLOP1: MOV A,A_BIT ;取個(gè)位數(shù)
MOVC A,@A+DPTR ;查個(gè)位數(shù)的7段代碼
MOV P0,A ;送出個(gè)位的7段代碼
CLR P2.5 ;開個(gè)位顯示
ACALL DELY1;顯示1毫秒
SETB P2.5;關(guān)閉個(gè)位顯示,防止鬼影
MOV A,B_BIT ;取十位數(shù)
MOVC A,@A+DPTR ;查十位數(shù)的7段代碼
MOV P0,A ;送出十位的7段代碼
CLR P2.6 ;開十位顯示
ACALL DELY1;顯示1毫秒
SETB P2.6;關(guān)閉十位顯示,防止鬼影
RET
END
【發(fā)表評(píng)論】【告訴好友】【收藏此文】【】
上一篇:單片機(jī)鍵盤輸入程序
下一篇:單片機(jī)測(cè)試系統(tǒng)設(shè)計(jì)
文章評(píng)論
相關(guān)文章
閱讀排行
推薦文章
本文關(guān)鍵詞:單片機(jī)秒表課程設(shè)計(jì),由筆耕文化傳播整理發(fā)布。
本文編號(hào):82780
本文鏈接:http://sikaile.net/wenshubaike/kcsz/82780.html