第一篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)說(shuō)明書(shū)───秒 表 系 統(tǒng) 設(shè) 計(jì)
單片機(jī)課程設(shè)計(jì)說(shuō)明書(shū)
───秒 表 系 統(tǒng) 設(shè) 計(jì)
時(shí) 間:2007.12.23-2008.1.1 院系:電氣與信息工程系 姓 名:*** 班 級(jí):0000000 學(xué) 號(hào):999999999999
目 錄
一 概 述┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 2 二 設(shè)計(jì)要求┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 2 三 設(shè)計(jì)思路及描述┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 3 四 原理圖┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 4 五 設(shè)計(jì)流程圖┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 5 六 設(shè)計(jì)程序┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 8 七 硬件調(diào)試┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 12 八 課程設(shè)計(jì)心得體會(huì)┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 13
九 參考文獻(xiàn)┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ 14
一 概 述
近年來(lái)隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)技術(shù)日益更新。在實(shí)時(shí)檢測(cè)和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個(gè)核心部件來(lái)使用,僅單片機(jī)方面知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。
隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活,工作,科研,各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),本文將介紹一種基于單片機(jī)控制的秒表,隨著人們生活水平的不斷提高,單片機(jī)控制無(wú)疑是人們追求的目標(biāo)之一,它所給人帶來(lái)的方便也是不可否定的,其中秒表就是一個(gè)典型的例子,但人們對(duì)它的要求越來(lái)越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。
本設(shè)計(jì)所介紹的秒表系統(tǒng)設(shè)計(jì)——用AT89C51設(shè)計(jì)一個(gè)2位LED數(shù)碼顯示“秒表”,顯示時(shí)間為00~99秒,每秒自動(dòng)加一。另設(shè)計(jì)一個(gè)“開(kāi)始”按鍵和一個(gè)“復(fù)位”按鍵。增加一個(gè)“暫?!卑存I和一個(gè)“快加”按鍵(每10ms快速加一)
二 設(shè)計(jì)要求
用AT89C51設(shè)計(jì)一個(gè)2位LED數(shù)碼顯示“秒表”,顯示時(shí)間為00~99秒,每秒自動(dòng)加一。另設(shè)計(jì)一個(gè)“開(kāi)始”按鍵和一個(gè)“復(fù)位”按鍵。再增加一個(gè)“暫?!卑存I和一個(gè)“快加”按鍵(每10ms快速加一)。按鍵說(shuō)明:按“開(kāi)始”按鍵,開(kāi)始計(jì)數(shù),數(shù)碼管顯示從00開(kāi)始每秒自動(dòng)加一;按“復(fù)位”按鍵,系統(tǒng)清零,數(shù)碼管顯示00;按“暫停”按鍵,系統(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(芯片的功能類(lèi)似于芯片AT89C51,其管腳功能也和AT89C51的管腳功能類(lèi)似)中的P3.2管腳做為外部中斷0的入口地址,并實(shí)現(xiàn)“開(kāi)始”按鍵的功能;將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í)器。其中“開(kāi)始”按鍵當(dāng)開(kāi)關(guān)由1撥向0(由上向下?lián)埽r(shí)開(kāi)始計(jì)時(shí);“清零”按鍵當(dāng)開(kāi)關(guān)由1撥向0(由上向下?lián)埽r(shí)數(shù)碼管清零,此時(shí)若再撥“開(kāi)始”按鍵則又可重新開(kāi)始計(jì)時(shí)。
四 原理圖
五 設(shè)計(jì)流程圖
7
六 設(shè)計(jì)程序
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;主程序開(kāi)始 外部中斷跳變模式 mov tmod,#11h;定時(shí)器0,1模式1 mov ie,#8fh;開(kāi)總中斷,中斷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 mov r0,#12h loop5: mov r6,#08h;8 mov a,@r0 movc a,@a+dptr loop6:rlc a;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;mov th0,#0CFh
個(gè)數(shù)碼管顯示子程序 位2進(jìn)制數(shù) 循環(huán)左移 定時(shí)子程序 11 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 七 硬件調(diào)試
根據(jù)相關(guān)的單片機(jī)材料,利用所學(xué)的單片機(jī)知識(shí),結(jié)合DVCC系列單片機(jī)微機(jī)仿真實(shí)驗(yàn)系統(tǒng)中的軟件和硬件(集成電路芯片8032,七段數(shù)碼管,開(kāi)關(guān)電路及時(shí)鐘信號(hào)電路,按鍵等),編寫(xiě)能 夠?qū)崿F(xiàn)該項(xiàng)目的軟件程序,最后將軟、硬件有機(jī)的結(jié)合起來(lái),進(jìn)行有效的調(diào)試,達(dá)到完成該實(shí)驗(yàn)課程設(shè)計(jì)的目的要求。八 課程設(shè)計(jì)心得體會(huì)
經(jīng)過(guò)將近三周的單片機(jī)課程設(shè)計(jì),終于完成了我的秒表的設(shè)計(jì),雖然沒(méi)有完全達(dá)到設(shè)計(jì)要求,但從心底里說(shuō),還是高興的,畢竟這次設(shè)計(jì)把實(shí)物都做了出來(lái),高興之余不得不深思呀!在本次設(shè)計(jì)的過(guò)程中,我發(fā)現(xiàn)很多的問(wèn)題,雖然以前還做過(guò)這樣的設(shè)計(jì)但這次設(shè)計(jì)真的讓我長(zhǎng)進(jìn)了很多,單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫(xiě)過(guò)幾次程序,但我覺(jué)的寫(xiě)好一個(gè)程序并不是一件簡(jiǎn)單的事,有好多的東西,只有我們?nèi)ピ囍隽?,才能真正的掌握,只學(xué)習(xí)理論有些東西是很難理解的,更談不上掌握。
從這次的課程設(shè)計(jì)中,我真真正正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫(xiě)與讀的過(guò)程中才能提高,這就是我在這次課程設(shè)計(jì)中的最大收獲。
九 參考文獻(xiàn)
1、江力編著的《單片機(jī)原理及其接口技術(shù)》 清華大學(xué)出版社
2、蘇家健等編的《單片機(jī)原理及應(yīng)用技術(shù)》 高等教育出版社
3、《單片機(jī)原理幾應(yīng)用》課程設(shè)計(jì)指導(dǎo)書(shū)
第二篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)秒表系統(tǒng)設(shè)計(jì)
單片機(jī)課程設(shè)計(jì)
學(xué)院:信息工程專(zhuān)業(yè):
——秒表系統(tǒng)設(shè)計(jì)
一,設(shè)計(jì)目的:
1,熟悉51單片機(jī)的內(nèi)部結(jié)構(gòu),計(jì)數(shù)器,中斷控制器等的用法,來(lái)實(shí)現(xiàn)簡(jiǎn)單的控制應(yīng)用系統(tǒng)。
2,通過(guò)簡(jiǎn)單系統(tǒng)的設(shè)計(jì)了解單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)過(guò)程及其相應(yīng)的調(diào)試程序過(guò)程。
二,設(shè)計(jì)任務(wù):
實(shí)驗(yàn)通過(guò)單片機(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í)意義。
三,設(shè)計(jì)題目:
秒表系統(tǒng)設(shè)計(jì)——用AT89C51設(shè)計(jì)一個(gè)2位LED數(shù)碼顯示“秒表”,顯示時(shí)間為00~99秒,每秒自動(dòng)加一。另設(shè)計(jì)一個(gè)“開(kāi)始”按鍵和一個(gè)“復(fù)位”按鍵。調(diào)用子程序:暫停鍵子程序,計(jì)時(shí)鍵子程序,清0鍵子程序,加一子程序,顯示子程序,定時(shí)子程序,所用特殊寄存器:寄存器A,寄存器C,所用中斷:外部中斷INT0、INT1,定時(shí)器T0、T1
四,設(shè)計(jì)的硬件接線圖:
五,設(shè)計(jì)思路及描述
要求進(jìn)行計(jì)時(shí)并在數(shù)碼管上顯示時(shí)間,則可利用DVCC系列單片機(jī)微機(jī)仿真實(shí)驗(yàn)系統(tǒng)中的芯片8032(芯片的功能類(lèi)似于芯片AT89C51,其管腳功能也和AT89C51的管腳功能類(lèi)似)中的P3.2管腳做為外部中斷0的入口地址,并實(shí)現(xiàn)“開(kāi)始”按鍵的功能;將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í)器。其中“開(kāi)始”按鍵當(dāng)開(kāi)關(guān)由1撥向0(由上向下?lián)埽r(shí)開(kāi)始計(jì)時(shí);“清零”按鍵當(dāng)開(kāi)關(guān)由1撥向0(由上向下?lián)埽r(shí)數(shù)碼管清零,此時(shí)若再撥“開(kāi)始”按鍵則又可重新開(kāi)始計(jì)時(shí)。
六,流程圖
七,程序 源程序: ORG
0000H AJMP
MIAN;主程序入口地址 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;主程序開(kāi)始 外部中斷跳變模式
MOV
TMOD,#11H;定時(shí)器0,1模式1 MOV
IE,#8FH;開(kāi)總中斷,中斷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
HERE 3JNB
P1.2,HERE 3 AJMP
HERE;***********************************************************;外部中斷INT0子程序-----計(jì)時(shí)按鍵K1子程序
;***********************************************************
ZHONGDUAN 0:
SETB TR0;計(jì)時(shí)按鍵 RETI;***********************************************************;外部中斷INT1子程序----復(fù)位按鍵K2子程序
;***********************************************************
ZHONGDUAN 1: 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:TETI;*********************************************************** TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END
八,內(nèi)容提要
利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,結(jié)合dvcc實(shí)驗(yàn)箱上的集成電路芯片8032、LED數(shù)碼管以及實(shí)驗(yàn)箱上的按鍵來(lái)設(shè)計(jì)計(jì)時(shí)器。將軟、硬件有機(jī)地結(jié)合起來(lái),使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),數(shù)碼管能夠正確地顯示時(shí)間。其中本設(shè)計(jì)了四個(gè)開(kāi)關(guān)按鍵:其中一個(gè)按鍵按下去時(shí)以1秒加一開(kāi)始計(jì)時(shí),即秒表開(kāi)始鍵(本實(shí)驗(yàn)中當(dāng)開(kāi)關(guān)從1變?yōu)?時(shí)開(kāi)始計(jì)時(shí)),另一個(gè)按鍵按下去時(shí)暫停計(jì)時(shí),使秒表停留在原先的計(jì)時(shí)(本實(shí)驗(yàn)中當(dāng)相應(yīng)開(kāi)關(guān)從1變?yōu)?時(shí)即停止計(jì)時(shí)),第三個(gè)按鍵按下去時(shí)清0(本實(shí)驗(yàn)中當(dāng)相應(yīng)開(kāi)關(guān)從1變?yōu)?時(shí)即停止計(jì)時(shí)),第四按鍵按下去則是以每10ms秒快速加一計(jì)時(shí)(本實(shí)驗(yàn)中當(dāng)開(kāi)關(guān)從1變?yōu)?時(shí)開(kāi)始計(jì)時(shí))。本設(shè)計(jì)中開(kāi)始時(shí)都要使各按鍵回到各初始位置,即都處于1狀態(tài)。
九,課程設(shè)計(jì)心得體會(huì)
選擇適當(dāng)?shù)恼n題,不益太簡(jiǎn)單或者太難。做到既能把課題完成又能鍛煉自己的能力!根據(jù)課題要求,復(fù)習(xí)相關(guān)的知識(shí),查詢相關(guān)的資料。根據(jù)實(shí)驗(yàn)條件,找到適合的方案,找到需要的元器件及工具,準(zhǔn)備實(shí)驗(yàn)。根據(jù)課程設(shè)計(jì)的要求和自己所要增加的功能寫(xiě)好程序流程圖,在程序流程圖的基礎(chǔ)上,根據(jù)芯片的功能寫(xiě)出相應(yīng)的程序。然后再進(jìn)行程序調(diào)試和相應(yīng)的修改,以達(dá)到能夠?qū)崿F(xiàn)所要求的功能的目的。還要根據(jù)實(shí)驗(yàn)的實(shí)際情況,添加些額外程序來(lái)使系統(tǒng)更加的穩(wěn)定,如開(kāi)關(guān)的消震蕩(采用延遲)。程序要盡量做到由各個(gè)子程序組成,在有些程序后面最好加注釋?zhuān)@樣在程序出錯(cuò)的檢查過(guò)程中可以更容易查找的到,也更簡(jiǎn)潔,更明白易懂。該設(shè)計(jì)的程序可以參考DVCC系列單片機(jī)微機(jī)仿真實(shí)驗(yàn)系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū)中的串并轉(zhuǎn)換實(shí)驗(yàn),也可自己根據(jù)自己熟悉的方法來(lái)編程。在設(shè)計(jì)控制開(kāi)關(guān)時(shí),注意2個(gè)中斷的打開(kāi)和關(guān)閉的先后順序,否則就會(huì)出錯(cuò)。這次的單片機(jī)課程設(shè)計(jì)重點(diǎn)是理論與實(shí)際的相結(jié)合。不再只讀書(shū)了。該設(shè)計(jì)從頭到尾都要自己參與,熟悉了對(duì)整個(gè)設(shè)計(jì)的過(guò)程,更系統(tǒng)的鍛煉了自己。
十、參考文獻(xiàn)
蘇家健等編的《單片機(jī)原理及應(yīng)用技術(shù)》 高等教育出版社 2004年11月 余錫存等,《單片機(jī)原理及接口技術(shù)》 西安電子科技大學(xué)出版社 2004
孫涵芳等 《單片機(jī)原理及應(yīng)用》 北京航空航天大學(xué)出版社 1990
吳金戌等 《8051電片機(jī)的實(shí)踐與應(yīng)用》 清華大學(xué)出版社
第三篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)報(bào)告多功能秒表
青島理工大學(xué)琴島學(xué)院
課程設(shè)計(jì)報(bào)告
課題名稱(chēng):?jiǎn)纹瑱C(jī)原理課程設(shè)計(jì) 學(xué)院:機(jī)電工程系
專(zhuān)業(yè)班級(jí):電氣工程及其自動(dòng)化103班 學(xué)號(hào):201002
學(xué)生:
指導(dǎo)老師:
青島理工大學(xué)琴島學(xué)院教務(wù)處2012年 12月21 日
第四篇:基于89C51單片機(jī)的秒表課程設(shè)計(jì)
摘要
隨著電子技術(shù)的發(fā)展,電子技術(shù)在各個(gè)領(lǐng)域的運(yùn)用也越來(lái)越廣泛,人對(duì)它的認(rèn)識(shí)也逐步加深。秒表計(jì)時(shí)器秒表計(jì)時(shí)器常常用于體育競(jìng)賽及各種其他要求有較精確時(shí)間的各領(lǐng)域中。其中啟/停開(kāi)關(guān)的使用方法與傳統(tǒng)的機(jī)械計(jì)時(shí)器相同,即按一下啟/停開(kāi)關(guān),啟動(dòng)計(jì)時(shí)器開(kāi)始計(jì)時(shí),再按一下啟/停開(kāi)關(guān)計(jì)時(shí)終止。而復(fù)位開(kāi)關(guān)可以在任何情況下使用,即使在計(jì)時(shí)過(guò)程中,只要按一下復(fù)位開(kāi)關(guān),計(jì)時(shí)應(yīng)立即終止,并對(duì)計(jì)時(shí)器清零。本設(shè)計(jì)就是利用所學(xué)到的電子元器件將脈沖源用數(shù)碼管顯示出來(lái),以制承諾簡(jiǎn)易的秒表。
以單片機(jī)為核心,設(shè)計(jì)一個(gè)秒表,具有計(jì)時(shí)功能,按鍵有啟動(dòng)計(jì)時(shí)、數(shù)據(jù)清零、停止、時(shí)間顯示。
采用3個(gè)LED數(shù)碼管顯示時(shí)間,計(jì)時(shí)范圍設(shè)置為0~99.9秒,即精確到0.1秒,用按鍵控制秒表的“開(kāi)始”、“暫停”、“復(fù)位”,按“開(kāi)始”按鍵,開(kāi)始計(jì)時(shí);按“暫?!卑存I,系統(tǒng)暫停計(jì)時(shí);再按“開(kāi)始”鍵,系統(tǒng)繼續(xù)計(jì)時(shí);數(shù)碼管顯示當(dāng)前計(jì)時(shí)值;按“復(fù)位”按鍵,系統(tǒng)清零。
目錄
一、設(shè)計(jì)任務(wù).................................................................................................................3
二、設(shè)計(jì)題目.................................................................................................................3
三、功能分析.................................................................................................................3
四、總體設(shè)計(jì).................................................................................................................3
4.1硬件設(shè)計(jì)...............................................................................................................4
4.1.1 89C51單片機(jī)...........................................................................................4
4.1.2晶體振蕩電路...........................................................................................5
4.1.3復(fù)位電路...................................................................................................6
4.1.4按鍵電路...................................................................................................7
4.1.5顯示電路.................................................................................................8
4.2引腳控制...............................................................................................................9
五、電路原理圖...........................................................................................................10
六、程序流程圖及程序設(shè)計(jì)......................................................................................11
6.1程序流程圖.........................................................................................................11
6.2程序設(shè)計(jì).............................................................................................................12
七、程序仿真...............................................................................................................21
八、心得體會(huì)...............................................................................................................22
九、致謝.......................................................................................................................23
十、參考文獻(xiàn)...............................................................................................................24
一、設(shè)計(jì)任務(wù)
以單片機(jī)為核心,設(shè)計(jì)一個(gè)秒表,具有計(jì)時(shí)功能,按鍵有啟動(dòng)計(jì)時(shí)、數(shù)據(jù)清零、停止、時(shí)間顯示。
二、設(shè)計(jì)題目
秒表的設(shè)計(jì)
三、功能分析
采用3個(gè)LED數(shù)碼管顯示時(shí)間,計(jì)時(shí)范圍設(shè)置為0~99.9秒,即精確到0.1秒,用按鍵控制秒表的“開(kāi)始”、“暫?!?、“復(fù)位”,按“開(kāi)始”按鍵,開(kāi)始計(jì)時(shí);按“暫停”按鍵,系統(tǒng)暫停計(jì)時(shí);再按“開(kāi)始”鍵,系統(tǒng)繼續(xù)計(jì)時(shí);數(shù)碼管顯示當(dāng)前計(jì)時(shí)值;按“復(fù)位”按鍵,系統(tǒng)清零。
四、總體設(shè)計(jì)
本實(shí)驗(yàn)利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和計(jì)數(shù)的原理,通過(guò)采用Proteus仿真軟件來(lái)模擬實(shí)現(xiàn)。模擬AT89C51單片機(jī)、LED數(shù)碼管以及控件來(lái)控制秒表的計(jì)數(shù)以及計(jì)時(shí)的開(kāi)啟、暫停、繼續(xù)、與復(fù)位。其中有三個(gè)數(shù)碼管來(lái)顯示數(shù)據(jù),兩個(gè)數(shù)碼管顯示秒(兩位),另一個(gè)數(shù)碼管顯示十分之一秒,十分之一秒的數(shù)碼管計(jì)數(shù)從0~9,滿十進(jìn)一后顯示秒得數(shù)碼管的個(gè)位加一,并且十分之一秒顯示清零
重新從零計(jì)數(shù)。同理當(dāng)個(gè)位滿十進(jìn)一后個(gè)位也清零重新計(jì)數(shù),當(dāng)計(jì)時(shí)超過(guò)范圍(即超過(guò)99.9秒)后,所有數(shù)碼管全部清零從新計(jì)數(shù)
4.1硬件設(shè)計(jì)
4.1.1 89C51單片機(jī)
MCS-51系列單片機(jī)是8位單片機(jī)產(chǎn)品,89C51是其中的典型代表,基本模塊包括以下幾個(gè)部分:
(1)CPU:89C51的CPU是8位的,另外89C51內(nèi)部有1個(gè)位處理器
(2)R0M:4KB的片內(nèi)程序存儲(chǔ)器,存放開(kāi)發(fā)調(diào)試完成的應(yīng)用程序
(3)RAM:256B的片內(nèi)數(shù)據(jù)存儲(chǔ)器,容量小,但作用大
(4)I/O口:P0-P3,共4個(gè)口32條雙向且可位尋址的I/O口線
(5)中斷系統(tǒng):共5個(gè)中斷源,3個(gè)內(nèi)部中斷,2個(gè)外部中斷
(6)定時(shí)器/計(jì)數(shù)器:2個(gè)16位的可編程定時(shí)器/計(jì)數(shù)器
(7)通用串行口:全雙工通用異步接收器/發(fā)送器
(8)振蕩器:89C51的外接晶振與內(nèi)部時(shí)鐘振蕩器為CPU提供時(shí)鐘信號(hào)
(9)總線控制:89C51對(duì)外提供若干控制總線,便于系統(tǒng)擴(kuò)展
89C51單片機(jī)引腳如下圖:
4.1.2晶體振蕩電路
89C51單片機(jī)內(nèi)部的振蕩電路是一個(gè)高增益反相放大器,引線XTAL1和XTAL2分別為反相振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入和來(lái)自反相
振蕩器的輸出,該反相放大器可以配置為片內(nèi)振蕩器。
這里選用51單片機(jī)12MHZ的內(nèi)部振蕩方式,電路如下:C2、C3起穩(wěn)定振蕩頻率、快速起振的作用。
晶振電路
4.1.3復(fù)位電路
采用上電復(fù)位,上電后,由于電容充電,使RST持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電復(fù)位操作。這不僅能使單片機(jī)復(fù)位,還能是單片機(jī)的外圍設(shè)備同時(shí)復(fù)位,當(dāng)程序出現(xiàn)錯(cuò)誤時(shí),可以隨時(shí)使電路復(fù)位。
電路圖如下:
復(fù)位電路
4.1.4按鍵電路
當(dāng)按鍵被按下時(shí),相應(yīng)的引腳被拉低,經(jīng)掃描后,獲得鍵值,并執(zhí)行鍵功能程序,因此按下不同的按鍵,將執(zhí)行不同的功能程序。
電路圖如下:
按鍵電路
4.1.5顯示電路
采用3個(gè)LED數(shù)碼管,LED是七段顯示器,內(nèi)部有7個(gè)條形發(fā)光二極管和1個(gè)小圓點(diǎn)發(fā)光二極管,根據(jù)各管的亮暗組成字符。
在用數(shù)碼管顯示時(shí),有靜態(tài)和動(dòng)態(tài)兩種選擇,這里采用LED動(dòng)態(tài)顯示,用P0、P1、P2口驅(qū)動(dòng)顯示,由于P0口沒(méi)有上拉電阻,因此P0口需要外接上拉
電阻才能輸出高電平,這里使用8個(gè)4.7k的電阻作為上拉電阻。
電路圖如下:
顯示電路
4.2引腳控制
P0.0—P0.7、P2.0—P2.7、P1.0—P1.7對(duì)應(yīng)三個(gè)數(shù)碼管的a、b、c、d、e、f、g段和小數(shù)點(diǎn)位;P0控制數(shù)碼管十位的顯示,P2控制數(shù)碼管個(gè)位的現(xiàn)實(shí),P1控制小數(shù)點(diǎn)后一問(wèn)的顯示,P3.2、P3.3、P3.4分別接。
五、電路原理圖
用Proteus軟件畫(huà)出主電路圖如下:
六、程序流程圖及程序設(shè)計(jì)
6.1程序流程圖
6.2程序設(shè)計(jì)
程序的各個(gè)組成模塊及工作流程描述:
(1)秒表的初始化
根據(jù)程序流程圖,先進(jìn)行秒表的初始化,即:①將I/O口P3全寫(xiě)一,為秒表的控制輸入做好準(zhǔn)備;②將數(shù)碼管全部置零,使其處于秒表計(jì)時(shí)的初始狀態(tài);③將工作寄存器R0~R2以及30H初始化,留待后面的計(jì)時(shí)程序備用;④將定時(shí)器0置于工作方式1,并為其裝入計(jì)時(shí)預(yù)置數(shù)D8FE(因?yàn)槌绦蜻\(yùn)行過(guò)程中占用的時(shí)間會(huì)導(dǎo)致一定誤差,此為經(jīng)實(shí)物測(cè)試之后的修正值),即將定時(shí)器定為每10ms溢出;⑤開(kāi)總中斷允許和定時(shí)器0中斷允許。初始化完成后,即進(jìn)入之后的按鍵掃描程序。
(2)按鍵檢測(cè)程序
輪流檢測(cè)開(kāi)始計(jì)時(shí)(P3.2)、暫停計(jì)時(shí)(P3.3)、秒表清零(P3.4)三個(gè)按鍵。若發(fā)現(xiàn)有一個(gè)按鍵出現(xiàn)低電平(可能被按下),則延時(shí)10ms(調(diào)用延時(shí)子程序DELAY),延時(shí)完成后,若發(fā)現(xiàn)低電平消失,則說(shuō)明該按鍵實(shí)際上未被按下,此時(shí)轉(zhuǎn)回按鍵檢測(cè)處繼續(xù)檢測(cè);若發(fā)現(xiàn)仍然是低電平,則說(shuō)明此鍵確實(shí)被按下了,此時(shí)就跳轉(zhuǎn)至相應(yīng)的程序標(biāo)號(hào)處,執(zhí)行相應(yīng)的功能。
(3)開(kāi)始計(jì)時(shí)
若確認(rèn)“開(kāi)始計(jì)時(shí)”鍵被按下,則跳轉(zhuǎn)至程序標(biāo)號(hào)“RUN”處,將定時(shí)器0計(jì)時(shí)允許控制位TR0置位,則定時(shí)器開(kāi)始運(yùn)行。此動(dòng)作完成后,返回按鍵檢測(cè)程序,等待操作者的下一次指令。
(4)計(jì)時(shí)程序
定時(shí)器0計(jì)時(shí)至10ms,溢出,引發(fā)中斷,程序跳轉(zhuǎn)至定時(shí)器0中斷服務(wù)程序入口000BH處執(zhí)行。程序跳轉(zhuǎn)至中斷服務(wù)程序TIME0。由于秒表的最小計(jì)時(shí)單位是0.1s,即100ms,因此需加入軟件計(jì)時(shí),使定時(shí)器0溢出10次之后才改變數(shù)碼管的顯示狀態(tài)。因此每來(lái)一次中斷就將30H中的數(shù)加1,若30H中的數(shù)沒(méi)有到10,則給定時(shí)器0重新裝入預(yù)置數(shù),之后中斷返回并繼續(xù)等待中斷;到10了,才進(jìn)入顯示程序,改變數(shù)碼管的顯示狀態(tài),執(zhí)行完畢之后中斷返回并繼續(xù)等待中斷。
(5)顯示程序
將數(shù)碼管的段選碼放在數(shù)表TAB中。每次100ms計(jì)時(shí)完成后,將R0中的值(初值為0)送入A,然后自加1。.若R0中的值沒(méi)到10,則使用累加器A查表,并將查得的數(shù)碼管段選碼送入毫秒位數(shù)碼管。之后將30H中的數(shù)置零,中斷返回。若發(fā)現(xiàn)R0中的數(shù)到10了,則將R0置零,并轉(zhuǎn)入秒位進(jìn)位子程序SECOND,向秒位進(jìn)位,之后,繼續(xù)照常向毫秒位送數(shù)。
在秒位進(jìn)位子程序SECOND中,由于要用到累加器A,因此先將其推入堆棧保護(hù)。將R1中的值(初值為10)送入A,然后自加1。.若R1中的值沒(méi)到20,則使用累加器A查表,并將查得的數(shù)碼管段選碼送入秒位數(shù)碼管。若發(fā)現(xiàn)R1中的數(shù)到20了,則將R1重置為10,并轉(zhuǎn)入十秒位進(jìn)位子程序SECOND1,向十秒位進(jìn)位,之后,繼續(xù)照常向秒位送數(shù)。完成后,彈出ACC和PSW,子程序返回。
十秒位進(jìn)位子程序與秒位進(jìn)位子程序相似,只是沒(méi)有向下一位進(jìn)位的功能。
(6)暫停計(jì)時(shí)
若確認(rèn)“暫停計(jì)時(shí)”鍵被按下,則跳轉(zhuǎn)至程序標(biāo)號(hào)“PAUSE”處,將定時(shí)器0計(jì)時(shí)允許控制位TR0置零,則定時(shí)器暫停運(yùn)行。此動(dòng)作完成后,返回按鍵檢測(cè)程序,等待操作者的下一次指令。
(7)秒表清零
若確認(rèn)“秒表清零”鍵被按下,則跳轉(zhuǎn)至程序標(biāo)號(hào)“STOP”處,將TR0置零,關(guān)閉定時(shí)器0運(yùn)行。并且將數(shù)碼管、工作寄存器、定時(shí)器0預(yù)置數(shù)全部重置,使其處于秒表計(jì)時(shí)的初始狀態(tài)。此動(dòng)作完成后,返回按鍵檢測(cè)程序,等待操作者的下一次指令。
(8)延時(shí)程序
用于按鍵延時(shí)防抖,延時(shí)10ms。
程序清單如下:
ORG 0000H;程序開(kāi)始
AJMP START;跳轉(zhuǎn)到主程序START ORG 000BH;定時(shí)器0中斷的地址入口
AJMP TIME0;定時(shí)器0溢出,跳轉(zhuǎn)到中斷程序TIME0 START:;主程序
MOV P3,#0FFH;輸入端口P3全寫(xiě)1 MOV P0,#3FH;MOV P1,#3FH;
MOV P2,#0BFH;數(shù)碼管初始化
MOV 30H,#00H;MOV R0,#00H;MOV R1,#0AH;MOV R2,#00H;MOV TMOD,#01H;MOV TH0,#0D8H;MOV TL0,#0FEH;SETB EA;SETB ET0;READ:;L1:JB P3.2,L2;LCALL DELAY;JB P3.2,L1;AJMP RUN;L2:JB P3.3,L3;
工作寄存器初始化
定時(shí)器0工作于方式1
定時(shí)器0預(yù)置數(shù)(D8FEH=55550D)
開(kāi)總中斷允許
開(kāi)定時(shí)器0中斷允許
讀鍵程序
按鍵延時(shí)防抖
確認(rèn)計(jì)時(shí)鍵被按下,開(kāi)始/繼續(xù)計(jì)時(shí)15
LCALL DELAY;按鍵延時(shí)防抖
JB P3.3,L2;AJMP PAUSE;確認(rèn)暫停鍵被按下,暫停計(jì)時(shí)
L3:JB P3.4,L1;LCALL DELAY;JB P3.4,L3;AJMP STOP;RUN:;SETB TR0;AJMP READ;PAUSE:;CLR TR0;AJMP READ;TIME0:;INC 30H;MOV A,30H;
按鍵延時(shí)防抖
確認(rèn)清零鍵被按下,秒表重置
計(jì)時(shí)鍵按下,跳轉(zhuǎn)至此
定時(shí)器0開(kāi)始/繼續(xù)運(yùn)行
暫停鍵按下,跳轉(zhuǎn)至此
定時(shí)器0溢出,中斷,跳轉(zhuǎn)至此16
CJNE A,#0AH,TIME1;30H單元中的值到10了嗎?(計(jì)時(shí)到10毫秒了嗎,也就是說(shuō),該向毫秒位送數(shù)了嗎?)MOV DPTR,#TAB;30H中的值到10了,順序執(zhí)行
MOV A,R0;INC R0;CJNE R0,#0AH,GET;R0MOV R0,#00H;LCALL SECOND;進(jìn)位
GET:;MOVC A,@A+DPTR;MOV P1,A;MOV 30H,#00H;TIME1:;MOV TH0,#0D8H;MOV TL0,#0FEH;RETI;中的值到10了嗎?(該向秒位進(jìn)位了嗎?)
到了,R0清零,調(diào)用進(jìn)位子程序SECOND,向秒位沒(méi)到,跳過(guò)進(jìn)位子程序
查表并向數(shù)碼管毫秒位送數(shù)
重置30H單元
給定時(shí)器0重新預(yù)置數(shù)
中斷返回
SECOND:;秒位進(jìn)位子程序
PUSH ACC;PUSH PSW;將ACC和PSW推入堆棧保護(hù)
MOV A,R1;INC R1;CJNE R1,#14H,GET1;R1了嗎?
MOV R1,#0AH;LCALL SECOND1;位進(jìn)位
GET1:;MOVC A,@A+DPTR;MOV P2,A;POP PSW;POP ACC;PSW,ACCRET;SECOND1:;中的值到20了嗎,也就是說(shuō),該向十秒位進(jìn)位到了。R1重置,調(diào)用進(jìn)位子程序SECOND1,向十秒沒(méi)到,跳過(guò)進(jìn)位子程序
查表并向數(shù)碼管秒位送數(shù)
出棧
子程序返回
十秒位進(jìn)位子程序
PUSH ACC;PUSH PSW;將ACC和PSW推入堆棧保護(hù)
MOV A,R2;INC R2;CJNE R2,#0AH,GET2;R2
MOV R2,#00H;GET2:;MOVC A,@A+DPTR;MOV P0,A;POP PSW;POP ACC;PSWRET;STOP:;MOV P3,#0FFH;MOV P0,#3FH;MOV P1,#3FH;
中的值到10了嗎,也就是說(shuō),該將此位歸零了到了,R2清零
沒(méi)到,跳過(guò)清零程序
查表并向數(shù)碼管十秒位送數(shù),ACC出棧
子程序返回
清零鍵按下,跳轉(zhuǎn)至此 嗎?
MOV P2,#0BFH;數(shù)碼管清零
MOV 30H,#00H;MOV R0,#00H;MOV R1,#0AH;MOV R2,#00H;CLR TR0;MOV TH0,#0D8H;MOV TL0,#0FEH;AJMP READ;DELAY:;MOV R3,#50D;D1:MOV R4,#100D;D2:DJNZ R4,D2;DJNZ R3,D1;RET;工作寄存器初始化計(jì)時(shí)器0停止計(jì)時(shí)定時(shí)器0預(yù)置數(shù)
延時(shí)10ms子程序
子程序返回
TAB: DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,3FH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH,0BFH;數(shù)碼管段選碼數(shù)表
END;程序結(jié)束
七、程序仿真
將以上程序清單導(dǎo)入先前做好的Proteus仿真電路,匯編之后,按 鍵開(kāi)始進(jìn)行仿真。
仿真結(jié)果如下:
仿真結(jié)果描述:
按“開(kāi)始”鍵,秒表開(kāi)始計(jì)時(shí);按“暫停”鍵,秒表暫停計(jì)時(shí);再按“開(kāi)始”鍵,秒表繼續(xù)計(jì)時(shí);按“清零”鍵,秒表清零。
八、心得體會(huì)
雖然秒表是一個(gè)非常簡(jiǎn)單的功能,但要在單片機(jī)中使用匯編語(yǔ)言來(lái)實(shí)現(xiàn)這個(gè)功能,仍然花了我不少心思。
首先是計(jì)時(shí)的問(wèn)題,由于單片機(jī)計(jì)時(shí)器最大只能計(jì)時(shí)65.5ms,因此要實(shí)現(xiàn)毫秒位的變化,我采用了軟件計(jì)時(shí)的方法,單片機(jī)只需計(jì)時(shí)10ms,然后用軟件重復(fù)10次,即可達(dá)到計(jì)時(shí)100ms的目的。
顯示方面,為了使編程簡(jiǎn)單,我使用了靜態(tài)顯示。不過(guò)這使得占用I/O口線過(guò)多,而且連線復(fù)雜繁瑣,為實(shí)物的制作帶來(lái)了不便。在以后的學(xué)習(xí)和應(yīng)用中我會(huì)努力加深動(dòng)態(tài)掃描顯示的理解,爭(zhēng)取熟練運(yùn)用。
根據(jù)書(shū)本知識(shí),我們一開(kāi)始只給P0口加上了上拉電阻,但是實(shí)物做成后我們發(fā)現(xiàn)P1和P2口得輸出顯示非常暗,初步確定是驅(qū)動(dòng)能力不足的問(wèn)題后,我們給二者也加上了上拉電阻,結(jié)果使得顯示正常了。由此我們了解到,實(shí)踐才是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),有時(shí)候書(shū)本上的知識(shí)需要經(jīng)過(guò)實(shí)踐的改進(jìn),才能運(yùn)用到實(shí)際中。
此次課程設(shè)計(jì)鞏固了我的基礎(chǔ)知識(shí),提高了我的應(yīng)用水平,鍛煉了我的動(dòng)手能力,使我受益匪淺。然而,在吸取經(jīng)驗(yàn)的同時(shí),我也吃了不少教訓(xùn)。在編程、仿真、焊接方面都走了不少?gòu)澛贰5?,學(xué)則要有所收獲,經(jīng)過(guò)此次的鍛煉,我在很多方面都已經(jīng)有所提高,知識(shí)也掌握得更加扎實(shí)了。
在今后的學(xué)習(xí)和實(shí)踐中,我將繼續(xù)努力鉆研,提高自己,爭(zhēng)取在學(xué)術(shù)和記憶上獲得更大的進(jìn)步。
九、致謝
本設(shè)計(jì)是在李芳老師的悉心指導(dǎo)下完成的,李老師淵博的知識(shí),嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,一絲不茍的工作作風(fēng),平易近人的性格都是我學(xué)習(xí)的楷模。在論文的研究及整理期間,李老師給了我很大的支持和鼓勵(lì),才使得論文得以順利的完成,在此謹(jǐn)向?qū)煴硎局倚牡母兄x和崇高的敬意。
同時(shí)還要感謝同學(xué)們,他們也給了我很大的支持和幫助。
十、參考文獻(xiàn)
1)《微控制器與接口技術(shù)》.虞滄.電子工業(yè)出版社.2012.10 2)李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社.2005.10 3)夏繼強(qiáng).單片機(jī)實(shí)驗(yàn)北京:北京航空航天大學(xué)出版社.2001.4)孫德輝,鄭士富.微型計(jì)算機(jī)控制系統(tǒng).北京:冶金工業(yè)出版社.2002
5)肖洪兵.跟我學(xué)用單片機(jī).北京:北京航空航天大學(xué)出版社.2002.8 6)陳汝全.實(shí)用微機(jī)與單片機(jī)控制技術(shù).電子科技大學(xué)出版社.1995.7 7)王涌.單片機(jī)與嵌入式系統(tǒng)應(yīng)用[J],2002(3):58-61 8)羅亞非.凌陽(yáng)16位單片機(jī)應(yīng)用基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社.2003.5 9)李慶.Keil C51 使用詳解 V3.0[M].北京:北京理工大學(xué)出版
10)李華.MCS-51系列單片機(jī)實(shí)用接口技術(shù).北京航空航天大學(xué)出版社.1993,162-229 11)溫鋼云,黃道平.計(jì)算機(jī)控制技術(shù).廣州:華南理工大學(xué)出版社.2002 12)肖洪兵.單片機(jī)應(yīng)用技術(shù).自編教材
13)孫德輝,鄭士富.微型計(jì)算機(jī)控制系統(tǒng).北京:冶金工業(yè)出版社.2002 14)韓來(lái)吉.用 89C51實(shí)現(xiàn)急救車(chē)優(yōu)先的交通燈控制系統(tǒng)[J] 15)陳志強(qiáng),芮延年,城市路口交通燈多級(jí)智能控制方法的研究J.2007 16)李廣弟.單片機(jī)基礎(chǔ).北京:北京航空航天大學(xué)出版社.2001,56 17)馬忠梅等.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì).北京航空航天出版社.1999
18)劉瑞新,單片機(jī)原理及應(yīng)用教程,北京機(jī)械工業(yè)出版社,2003 19)李傳軍,單片機(jī)原理及應(yīng)用,河南科技出版社,2006 20)饒慶,89C51單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教材,北京人民郵電出版社,2003
第五篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)之秒表
單片機(jī)課程設(shè)計(jì)報(bào)告
題目:基于stc89c52rc的秒表設(shè)計(jì)
學(xué)生:唐偉軒 11071339
指導(dǎo)老師:
日期:2013年12月8日
基于stc89c52rc的秒表設(shè)計(jì)
此設(shè)計(jì)中硬件部分由王華杲完成,軟件由唐偉軒完成一、設(shè)計(jì)要求
使用STC89C52RC單片機(jī)設(shè)計(jì)一個(gè)2位LED數(shù)碼管顯示的秒表,顯示時(shí)間為00—99秒,每秒自動(dòng)加1,設(shè)計(jì)開(kāi)始、停止、復(fù)位鍵。
二、設(shè)計(jì)思路
為了功能拓展,本設(shè)計(jì)硬件部分采用了四位一體共陽(yáng)數(shù)碼管作為顯示單元,采用三極管進(jìn)行陽(yáng)極位選驅(qū)動(dòng),陰極直接接限流電阻接單片機(jī)P0口;采用“4+1”按鍵,分別為“系統(tǒng)復(fù)位”、“計(jì)數(shù)停止”、“復(fù)位秒表”、“翻頁(yè)”、“預(yù)留”功能,“系統(tǒng)復(fù)位”為系統(tǒng)總復(fù)位按鍵;“計(jì)數(shù)停止”和“復(fù)位秒表”按鍵接到單片機(jī)中斷口(即INT0引腳與INT1引腳)。單片機(jī)的時(shí)鐘晶振為12M。
軟件部分設(shè)計(jì)采用“動(dòng)態(tài)刷新”和“定時(shí)器精確計(jì)時(shí)”的方式實(shí)現(xiàn)秒表功能,時(shí)間最小刻度為0.01s,同時(shí)采用外部按鍵中斷的方式實(shí)現(xiàn)“計(jì)數(shù)停止”、“復(fù)位秒表”功能,采用按鍵掃描實(shí)現(xiàn)“翻頁(yè)”功能。
本設(shè)計(jì)秒表可在一次計(jì)時(shí)鐘保存最多十次計(jì)時(shí)值。
三、硬件設(shè)計(jì)與分析
1.單片機(jī)最小系統(tǒng)
51單片機(jī)最小系統(tǒng)由復(fù)位電路和時(shí)鐘電路組成。
51單片機(jī)的Reset引腳為單片機(jī)的復(fù)位引腳,在該引腳上保持兩個(gè)機(jī)器周期的高電平,單片機(jī)復(fù)位,PC值復(fù)位至0000H,并在Reset引腳恢復(fù)至低電平時(shí)重新開(kāi)始執(zhí)行ROM中的程序,由此可設(shè)計(jì)典型單片機(jī)上電復(fù)位與手動(dòng)復(fù)位一體的復(fù)位電路,該自動(dòng)復(fù)位電路能在上電后在單片機(jī)Reset引腳上保持ms級(jí)的高電平時(shí)間,滿足設(shè)計(jì)要求,電路如圖3.1所示。
51單片機(jī)的時(shí)鐘系統(tǒng)可選擇使用外部時(shí)鐘或內(nèi)部RC時(shí)鐘(不準(zhǔn)確),xtal1與xtal2引腳為單片機(jī)外部時(shí)鐘引腳,51單片機(jī)的機(jī)器周期為12個(gè)時(shí)鐘周期,采用12M晶體振蕩器時(shí),機(jī)器周期為1us,外部晶振電路如圖3.2所示。
圖3.1圖3.22.數(shù)碼管顯示電路設(shè)計(jì)
本設(shè)計(jì)中采用4位一體共陽(yáng)數(shù)碼管,4個(gè)共陽(yáng)極使用三極管s9012進(jìn)行控電平的電流放大,8個(gè)共陰極接限流電阻接到單片機(jī)P0口;51單片機(jī)P0屬于漏極開(kāi)路結(jié)構(gòu),在老式51單片機(jī)中作為外部數(shù)據(jù)總線使用,可在較高輸入輸出頻率下使用,在本設(shè)計(jì)中,使用了P0的該特點(diǎn),作為數(shù)碼管的段碼數(shù)據(jù)控制。
3.中斷按鍵與按鍵掃描
51單片機(jī)支持兩路外部中斷,分別為INT0引腳和INT1引腳,恰當(dāng)使用外部中斷功能可極大地提高外部觸發(fā)信號(hào)的響應(yīng)速度。本設(shè)計(jì)中,共使用了4個(gè)按鍵,其中兩個(gè)接在兩個(gè)外部中斷引腳上以提高其響應(yīng)速度實(shí)現(xiàn)高級(jí)功能,另外兩個(gè)按鍵接普通IO實(shí)現(xiàn)一般功能。
4.電路圖
圖3.3四、軟件設(shè)計(jì)與分析
1.刷新顯示程序
數(shù)碼管顯示部分由于其公共端共接結(jié)構(gòu),需采用刷新顯示的方式驅(qū)動(dòng),驅(qū)動(dòng)部分C語(yǔ)言程序如下:
P1=0xFE;//四位數(shù)碼管掃描
P0=codetab[one];
delay(3);
P1=0xFD;
P0=codetab[two];
delay(3);
P1=0xFB;
P0=0X7F;//顯示小數(shù)點(diǎn)
delay(3);
P0=codetab[three];
delay(3);
P1=0xF7;
P0=codetab[four];
delay(3);
2.定時(shí)器的應(yīng)用
51單片機(jī)中含有兩個(gè)定時(shí)器,分別為T(mén)0和T1,共有13位計(jì)數(shù)定時(shí)、16位計(jì)數(shù)定時(shí)、8位自動(dòng)重裝計(jì)數(shù)定時(shí)三種工作模式,每個(gè)定時(shí)器可產(chǎn)生獨(dú)立的中斷信號(hào)。51單片機(jī)定時(shí)器采用“向上計(jì)數(shù)”的方式,即加滿溢出后產(chǎn)生中斷,定時(shí)時(shí)鐘源為系統(tǒng)時(shí)鐘,每1個(gè)機(jī)器周期加1,本設(shè)計(jì)中采用12M外部時(shí)鐘,對(duì)應(yīng)定時(shí)器時(shí)鐘為1us,要實(shí)現(xiàn)0.01s精度顯示,即定時(shí)最大為10ms,這里采用定時(shí)20us,C語(yǔ)言程序設(shè)計(jì)如下:
void time0()
{//定時(shí)器初始化,定時(shí)20us
TMOD=0X01;
TH0 =0XF8;
TL0 =0X30;
//TR0 =1;
EA=1;
ET0 =1;
}
3.程序流程圖
圖4.1五、數(shù)據(jù)測(cè)試
1.秒表計(jì)時(shí)誤差:小于0.1% 2.各按鍵觸發(fā)功能是否正常:正常 3.最大單次計(jì)時(shí)記錄次數(shù):10次
六、參考文獻(xiàn)
【1】劉煥成.《工程背景下的單片機(jī)原理及系統(tǒng)設(shè)計(jì)(第2版)》.清華大學(xué)出版社.2011年10月