版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 1 引言</b></p><p> 隨著電子技術(shù)的發(fā)展,電子技術(shù)在各個(gè)領(lǐng)域的運(yùn)用也越來越廣泛,人們對(duì)它的認(rèn)識(shí)也逐步加深。秒表計(jì)時(shí)器常常用于體育競(jìng)賽及各種其他要求有較精確時(shí)間的各領(lǐng)域中。其中啟/停開關(guān)的使用方法與傳統(tǒng)的機(jī)械計(jì)時(shí)器相同,即按一下啟/停開關(guān),啟動(dòng)計(jì)時(shí)器開始計(jì)時(shí),再按一下啟/停開關(guān)計(jì)時(shí)終止。而復(fù)位開關(guān)可以在任何情況下使用,即使在計(jì)時(shí)過程中,只要按一下復(fù)
2、位開關(guān),計(jì)時(shí)應(yīng)立即終止。</p><p><b> 2 設(shè)計(jì)方案及原理</b></p><p> 以單片機(jī)為核心,設(shè)計(jì)一個(gè)秒表,具有計(jì)時(shí)功能,按鍵有啟動(dòng)計(jì)時(shí)、數(shù)據(jù)清零、停止、時(shí)間顯示。</p><p> 采用3個(gè)LED數(shù)碼管顯示時(shí)間,計(jì)時(shí)范圍設(shè)置為0~99.9秒,即精確到0.1秒,用按鍵控制秒表的“開始”、“暫停”、“復(fù)位”,按“開始”按
3、鍵,開始計(jì)時(shí);按“暫停”按鍵,系統(tǒng)暫停計(jì)時(shí);再按“開始”鍵,系統(tǒng)繼續(xù)計(jì)時(shí);數(shù)碼管顯示當(dāng)前計(jì)時(shí)值;按“復(fù)位”按鍵,系統(tǒng)清零。</p><p><b> 3 硬件設(shè)計(jì)</b></p><p> MCS-51系列單片機(jī)是8位單片機(jī)產(chǎn)品,89C51是其中的典型代表,基本模塊包括以下幾個(gè)部分:</p><p> (1)CPU:89C51的CPU是8
4、位的,另外89C51內(nèi)部有1個(gè)位處理器;</p><p> (2)R0M:4KB的片內(nèi)程序存儲(chǔ)器,存放開發(fā)調(diào)試完成的應(yīng)用程序;</p><p> (3)RAM:256B的片內(nèi)數(shù)據(jù)存儲(chǔ)器,容量小,但作用大;</p><p> (4)I/O口:P0-P3,共4個(gè)口32條雙向且可位尋址的I/O口線;</p><p> (5)中斷系統(tǒng):共5個(gè)
5、中斷源,3個(gè)內(nèi)部中斷,2個(gè)外部中斷;</p><p> (6)定時(shí)器/計(jì)數(shù)器:2個(gè)16位的可編程定時(shí)器/計(jì)數(shù)器;</p><p> (7)通用串行口:全雙工通用異步接收器/發(fā)送器;</p><p> (8)振蕩器:89C51的外接晶振與內(nèi)部時(shí)鐘振蕩器為CPU提供時(shí)鐘信號(hào);</p><p> (9)總線控制:89C51對(duì)外提供若干控制總
6、線,便于系統(tǒng)擴(kuò)展。</p><p> 89C51單片機(jī)內(nèi)部的振蕩電路是一個(gè)高增益反相放大器,引線XTAL1和XTAL2分別為反相振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入和來自反相振蕩器的輸出,該反相放大器可以配置為片內(nèi)振蕩器。</p><p> 采用上電復(fù)位,上電后,由于電容充電,使RST持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電復(fù)位操作。</p><p> 采用3個(gè)
7、LED數(shù)碼管,LED是七段顯示器,內(nèi)部有7個(gè)條形發(fā)光二極管和1個(gè)小圓點(diǎn)發(fā)光二極管,根據(jù)各管的亮暗組成字符。用Proteus軟件畫出主電路圖見附錄一。</p><p><b> 4 軟件設(shè)計(jì)</b></p><p><b> (1)秒表的初始化</b></p><p> 根據(jù)程序流程圖,先進(jìn)行秒表的初始化,即:①將I/
8、O口P3全寫一,為秒表的控制輸入做好準(zhǔn)備;②將數(shù)碼管全部置零,使其處于秒表計(jì)時(shí)的初始狀態(tài);③將工作寄存器R0~R2以及30H初始化,留待后面的計(jì)時(shí)程序備用;④將定時(shí)器0置于工作方式1,并為其裝入計(jì)時(shí)預(yù)置數(shù)D8FE(因?yàn)槌绦蜻\(yùn)行過程中占用的時(shí)間會(huì)導(dǎo)致一定誤差,此為經(jīng)實(shí)物測(cè)試之后的修正值),即將定時(shí)器定為每10ms溢出;⑤開總中斷允許和定時(shí)器0中斷允許。初始化完成后,即進(jìn)入之后的按鍵掃描程序。</p><p><
9、;b> (2)按鍵檢測(cè)程序</b></p><p> 輪流檢測(cè)開始計(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)低電平消失,則說明該按鍵實(shí)際上未被按下,此時(shí)轉(zhuǎn)回按鍵檢測(cè)處繼續(xù)檢測(cè);若發(fā)現(xiàn)仍然是低電平,則說明此鍵確實(shí)被按下了,此時(shí)就跳轉(zhuǎn)至相應(yīng)的程序標(biāo)號(hào)處,執(zhí)行相應(yīng)的功
10、能。</p><p><b> (3)開始計(jì)時(shí)</b></p><p> 若確認(rèn)“開始計(jì)時(shí)”鍵被按下,則跳轉(zhuǎn)至程序標(biāo)號(hào)“RUN”處,將定時(shí)器0計(jì)時(shí)允許控制位TR0置位,則定時(shí)器開始運(yùn)行。此動(dòng)作完成后,返回按鍵檢測(cè)程序,等待操作者的下一次指令。</p><p><b> (4)計(jì)時(shí)程序</b></p>&
11、lt;p> 定時(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)。因此每來一次中斷就將30H中的數(shù)加1,若30H中的數(shù)沒有到10,則給定時(shí)器0重新裝入預(yù)置數(shù),之后中斷返回并繼續(xù)等待中斷;到10了,才進(jìn)入顯示程序,改變數(shù)碼管的顯示狀態(tài),執(zhí)行完畢之
12、后中斷返回并繼續(xù)等待中斷。</p><p><b> (5)顯示程序</b></p><p> 將數(shù)碼管的段選碼放在數(shù)表TAB中。每次100ms計(jì)時(shí)完成后,將R0中的值(初值為0)送入A,然后自加1。若R0中的值沒到10,則使用累加器A查表,并將查得的數(shù)碼管段選碼送入毫秒位數(shù)碼管。之后將30H中的數(shù)置零,中斷返回。若發(fā)現(xiàn)R0中的數(shù)到10了,則將R0置零,并轉(zhuǎn)入秒位
13、進(jìn)位子程序SECOND,向秒位進(jìn)位,之后,繼續(xù)照常向毫秒位送數(shù)。</p><p><b> (6)暫停計(jì)時(shí)</b></p><p> 若確認(rèn)“暫停計(jì)時(shí)”鍵被按下,則跳轉(zhuǎn)至程序標(biāo)號(hào)“PAUSE”處,將定時(shí)器0計(jì)時(shí)允許控制位TR0置零,則定時(shí)器暫停運(yùn)行。此動(dòng)作完成后,返回按鍵檢測(cè)程序,等待操作者的下一次指令。</p><p><b>
14、 (7)秒表清零</b></p><p> 若確認(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è)程序,等待操作者的下一次指令。</p><p><b> (8)延時(shí)程序</b></p><
15、p> 用于按鍵延時(shí)防抖,延時(shí)10ms。程序清單見附錄二。</p><p> 程序流程圖如圖1所示。</p><p><b> 圖1 程序流程圖</b></p><p><b> 4.3 程序仿真</b></p><p> 將以上程序清單導(dǎo)入先前做好的Proteus仿真電路,匯編之后,
16、按</p><p><b> 鍵開始進(jìn)行仿真。</b></p><p><b> 仿真結(jié)果如圖2。</b></p><p><b> 圖2 仿真結(jié)果圖</b></p><p> 仿真開始后,第一個(gè)按鈕為計(jì)時(shí)按鈕,點(diǎn)擊開始計(jì)時(shí);第二個(gè)按鈕為暫停按鈕,點(diǎn)擊則暫停計(jì)時(shí);第三個(gè)
17、按鈕為復(fù)位按鈕,點(diǎn)擊后秒表復(fù)位歸零。三個(gè)顯示器分別是十秒、秒、微秒的顯示。如圖2顯示的為21.9秒。</p><p><b> 5 總結(jié)</b></p><p> 在此次課程設(shè)計(jì)中秒表雖然是一個(gè)非常簡(jiǎn)單的功能,但要在單片機(jī)中使用匯編語言來實(shí)現(xiàn)這個(gè)功能,仍然花了我不少心思。</p><p> 首先是計(jì)時(shí)的問題,由于單片機(jī)計(jì)時(shí)器最大只能計(jì)時(shí)6
18、5.5ms,因此要實(shí)現(xiàn)毫秒位的變化,我采用了軟件計(jì)時(shí)的方法,單片機(jī)只需計(jì)時(shí)10ms,然后用軟件重復(fù)10次,即可達(dá)到計(jì)時(shí)100ms的目的。</p><p> 顯示方面,為了使編程簡(jiǎn)單,我使用了靜態(tài)顯示。不過這使得占用I/O口線過多,而且連線復(fù)雜繁瑣,為實(shí)物的制作帶來了不便。在以后的學(xué)習(xí)和應(yīng)用中我會(huì)努力加深動(dòng)態(tài)掃描顯示的理解,爭(zhēng)取熟練運(yùn)用。</p><p> 根據(jù)書本知識(shí),我們一開始只給P
19、0口加上了上拉電阻,但是實(shí)物做成后我們發(fā)現(xiàn)P1和P2口得輸出顯示非常暗,初步確定是驅(qū)動(dòng)能力不足的問題后,我們給二者也加上了上拉電阻,結(jié)果使得顯示正常了。由此我們了解到,實(shí)踐才是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),有時(shí)候書本上的知識(shí)需要經(jīng)過實(shí)踐的改進(jìn),才能運(yùn)用到實(shí)際中。</p><p> 此次課程設(shè)計(jì)鞏固了我的基礎(chǔ)知識(shí),提高了我的應(yīng)用水平,鍛煉了我的動(dòng)手能力,使我受益匪淺。然而,在吸取經(jīng)驗(yàn)的同時(shí),我也吃了不少教訓(xùn)。在編程、仿真、
20、焊接方面都走了不少彎路。但是,學(xué)則要有所收獲,經(jīng)過此次的鍛煉,我在很多方面都已經(jīng)有所提高,知識(shí)也掌握得更加扎實(shí)了。</p><p> 在今后的學(xué)習(xí)和實(shí)踐中,我將繼續(xù)努力鉆研,提高自己,爭(zhēng)取在學(xué)術(shù)和記憶上獲得更大的進(jìn)步。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]張毅剛, 彭喜元.單片機(jī)原理及接口技術(shù)[M].人民郵
21、電出版社.</p><p> [2]單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo) 李光飛等. 北京航空航天大學(xué)出版社</p><p> [3]51系列單片機(jī)原理、開發(fā)與應(yīng)用實(shí)例 孫進(jìn)平等編著 </p><p> [4]單片機(jī)程序設(shè)計(jì)實(shí)例 先鋒工作室編著 清華大學(xué)出版社 </p><p><b> .</b><
22、/p><p><b> 7 附錄</b></p><p><b> 附錄一 主電路圖</b></p><p><b> 附錄二 主程序</b></p><p> ORG 0000H ;程序開始</p><p> AJMP STAR
23、T ;跳轉(zhuǎn)到主程序START </p><p> ORG 000BH ;定時(shí)器0中斷的地址入口</p><p> AJMP TIME0 ;定時(shí)器0溢出,跳轉(zhuǎn)到中斷程序TIME0</p><p> START: ;主程序</p><p> MOV P3,#0FFH
24、 ;輸入端口P3全寫1</p><p> MOV P0,#3FH ;</p><p> MOV P1,#3FH ;</p><p> MOV P2,#0BFH ;數(shù)碼管初始化</p><p> MOV 30H,#00H ;</p><p> MO
25、V R0,#00H ;</p><p> MOV R1,#0AH ;</p><p> MOV R2,#00H ;工作寄存器初始化</p><p> MOV TMOD,#01H ;定時(shí)器0工作于方式1</p><p> MOV TH0,#0D8H ;</p>
26、<p> MOV TL0,#0FEH ;定時(shí)器0預(yù)置數(shù)(D8FEH=55550D)</p><p> SETB EA ;開總中斷允許</p><p> SETB ET0 ;開定時(shí)器0中斷允許</p><p> READ: ;讀鍵程序</p><p&g
27、t; L1:JB P3.2,L2 ;</p><p> LCALL DELAY ;按鍵延時(shí)防抖</p><p> JB P3.2,L1 ;</p><p> AJMP RUN ;確認(rèn)計(jì)時(shí)鍵被按下,開始/繼續(xù)計(jì)時(shí)</p><p> L2:JB P3.3,L3 ;&l
28、t;/p><p> LCALL DELAY ;按鍵延時(shí)防抖</p><p> JB P3.3,L2 ;</p><p> AJMP PAUSE ;確認(rèn)暫停鍵被按下,暫停計(jì)時(shí)</p><p> L3:JB P3.4,L1 ;</p><p> LCALL DE
29、LAY ;按鍵延時(shí)防抖</p><p> JB P3.4,L3 ;</p><p> AJMP STOP ;確認(rèn)清零鍵被按下,秒表重置</p><p> RUN: ;計(jì)時(shí)鍵按下,跳轉(zhuǎn)至此</p><p> SETB TR0 ;定時(shí)器0開始/
30、繼續(xù)運(yùn)行</p><p> AJMP READ ;</p><p> PAUSE: ;暫停鍵按下,跳轉(zhuǎn)至此</p><p> CLR TR0 ;</p><p> AJMP READ ; </p><p> TIME0:
31、 ;定時(shí)器0溢出,中斷,跳轉(zhuǎn)至此</p><p> INC 30H ;</p><p> MOV A,30H ;</p><p> CJNE A,#0AH,TIME1 ;30H單元中的值到10了嗎?(計(jì)時(shí)到10毫秒了嗎,也就是說,該向毫秒位送數(shù)了嗎?)</p><p>
32、MOV DPTR,#TAB ;30H中的值到10了,順序執(zhí)行</p><p> MOV A,R0 ;</p><p> INC R0 ;</p><p> CJNE R0,#0AH,GET ;R0中的值到10了嗎?(該向秒位進(jìn)位了嗎?)</p><p> MOV R0,#00H
33、 ;</p><p> LCALL SECOND ;到了,R0清零,調(diào)用進(jìn)位子程序SECOND,向秒位進(jìn)位</p><p> GET: ;沒到,跳過進(jìn)位子程序</p><p> MOVC A,@A+DPTR ;</p><p> MOV P1,A ;查表
34、并向數(shù)碼管毫秒位送數(shù)</p><p> MOV 30H,#00H ;重置30H單元</p><p> TIME1: ;</p><p> MOV TH0,#0D8H ;</p><p> MOV TL0,#0FEH ;給定時(shí)器0重新預(yù)置數(shù)</p><p>
35、; RETI ;中斷返回</p><p> SECOND: ;秒位進(jìn)位子程序</p><p> PUSH ACC ;</p><p> PUSH PSW ;將ACC和PSW推入堆棧保護(hù)</p><p> MOV A,R1 ;
36、</p><p> INC R1 ;</p><p> CJNE R1,#14H,GET1 ;R1中的值到20了嗎,也就是說,該向十秒位進(jìn)位了嗎?</p><p> MOV R1,#0AH ;</p><p> LCALL SECOND1 ;到了。R1重置,調(diào)用進(jìn)位子程序SECOND1
37、,向十秒位進(jìn)位</p><p> GET1: ;沒到,跳過進(jìn)位子程序</p><p> MOVC A,@A+DPTR ;</p><p> MOV P2,A ;查表并向數(shù)碼管秒位送數(shù)</p><p> POP PSW ;</p><p>
38、; POP ACC ;PSW,ACC出棧</p><p> RET ;子程序返回</p><p> SECOND1: ;十秒位進(jìn)位子程序</p><p> PUSH ACC ;</p><p> PUSH PSW ;將AC
39、C和PSW推入堆棧保護(hù)</p><p> MOV A,R2 ;</p><p> INC R2 ;</p><p> CJNE R2,#0AH,GET2 ;R2中的值到10了嗎,也就是說,該將此位歸零了嗎?</p><p> MOV R2,#00H ;到了,R2清零</
40、p><p> GET2: ;沒到,跳過清零程序</p><p> MOVC A,@A+DPTR ;</p><p> MOV P0,A ;查表并向數(shù)碼管十秒位送數(shù)</p><p> POP PSW ;</p><p> POP ACC
41、 ;PSW,ACC出棧</p><p> RET ;子程序返回</p><p> STOP: ;清零鍵按下,跳轉(zhuǎn)至此</p><p> MOV P3,#0FFH ;</p><p> MOV P0,#3FH ;</p>&
42、lt;p> MOV P1,#3FH ;</p><p> MOV P2,#0BFH ;數(shù)碼管清零</p><p> MOV 30H,#00H ;</p><p> MOV R0,#00H ;</p><p> MOV R1,#0AH ;</p>&
43、lt;p> MOV R2,#00H ;工作寄存器初始化</p><p> CLR TR0 ;計(jì)時(shí)器0停止計(jì)時(shí)</p><p> MOV TH0,#0D8H ;</p><p> MOV TL0,#0FEH ;定時(shí)器0預(yù)置數(shù)</p><p> AJMP READ
44、 ;</p><p> DELAY: ;延時(shí)10ms子程序</p><p> MOV R3,#50D ;</p><p> D1:MOV R4,#100D ;</p><p> D2:DJNZ R4,D2 ;</p><p> DJNZ R3,D1
45、 ;</p><p> RET ;子程序返回</p><p> TAB: DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,3FH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH,0BFH ;數(shù)碼管段選碼數(shù)表</p><p> END
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于89c51單片機(jī)的秒表課程設(shè)計(jì)
- 基于89c51單片機(jī)的秒表課程設(shè)計(jì) 2
- 單片機(jī)多功能秒表課程設(shè)計(jì)--89c51單片機(jī)秒表的設(shè)計(jì)
- 基于89c51單片機(jī)的秒表課程設(shè)計(jì) (2)
- 基于89c51單片機(jī)的秒表設(shè)計(jì)
- 89c51單片機(jī)課程設(shè)計(jì)
- 基于89c51單片機(jī)的秒表課程設(shè)計(jì)說明書
- 89c51單片機(jī)課程設(shè)計(jì)之秒表設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- 基于89c51單片機(jī)交通燈課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于89c51的電纜定長控制設(shè)計(jì)
- 89c51單片機(jī)數(shù)字電壓表課程設(shè)計(jì)
- 基于89c51單片機(jī)的數(shù)字搶答器課程設(shè)計(jì)
- 課程設(shè)計(jì)-基于89c51單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
- 基于89c51單片機(jī)的智能小車設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)_基于89c51的數(shù)字電子時(shí)鐘的設(shè)計(jì)
- 基于89c51單片機(jī)電子時(shí)鐘課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)基于89c51的倒計(jì)時(shí)牌設(shè)計(jì)
- 課程設(shè)計(jì)論文-基于89c51單片機(jī)的數(shù)字電子鐘設(shè)計(jì)
- 89c51單片機(jī)中文資料
- 基于89c51單片機(jī)的智能窗簾
評(píng)論
0/150
提交評(píng)論