用匯編編寫的基于單片機的秒表_第1頁
用匯編編寫的基于單片機的秒表_第2頁
用匯編編寫的基于單片機的秒表_第3頁
用匯編編寫的基于單片機的秒表_第4頁
用匯編編寫的基于單片機的秒表_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、摘摘 要要 本設(shè)計是設(shè)計一個單片機控制的多功能秒表系統(tǒng)。 近年來隨著科技的飛速發(fā)展,單片機的應(yīng)用正在不斷的走向深入,同時帶動著 傳統(tǒng)控制檢測日新月異更新。在實時檢測和自動控制的單片機應(yīng)用系統(tǒng)中,單片機 往往是作為一個核心部件來使用,僅單片機方面的知識是不夠的,還要根據(jù)具體的 硬件結(jié)構(gòu),以及針對具體的應(yīng)用對象的軟件結(jié)合,加以完善。秒表的出現(xiàn),解決了 傳統(tǒng)的由于人為因素造成的誤差和不公平性。 本設(shè)計的多功能秒表系統(tǒng)采用at89c51單片機為中心器件,利用其定時器/ 計數(shù)器定時和記數(shù)的原理,結(jié)合顯示電路、電源電路、led數(shù)碼管以及鍵盤電路來 設(shè)計計時器。將軟、硬件有機地結(jié)合起來,使得系統(tǒng)能夠?qū)崿F(xiàn)兩位

2、led顯示,顯 示時間為0099秒,每秒自動加1,能正確地進行加、減(倒)計時,快加,快 減,可以同時記錄4個相對獨立的時間,通過上翻下翻來查看這4個不同的計時值, 可謂功能強大。其中軟件系統(tǒng)采用匯編語言編寫程序,包括顯示程序,加減計數(shù)程 序,快加快減程序,中斷,延時程序,按鍵消抖程序等,并在wave中調(diào)試運行, 硬件系統(tǒng)利用proteus強大的功能來實現(xiàn),簡單切易于觀察,在仿真中就可以 觀察到實際的工作狀態(tài)。 關(guān)鍵字:單片機;多功能秒表;設(shè)計 abstractabstract the present design is to design a single chip multifunctio

3、nal stopwatch control system. in recent years, along with the rapid development of science and technology, single-chip applications are the trend at the same time, promote the traditional control testing with each passing day update. in the real-time detection and automatic control of the single-chi

4、p applications, often single-chip, as a core component to the use of only single-chip knowledge is not enough, but also based on specific hardware structure, as well as for specific applications object software, to be improved. the emergence of a stopwatch to solve the traditional man-made because o

5、f errors and unfairness. the design of this multi-functional stopwatch at89c51 single-chip system- centric device, using its timer / counter timing and number of principles in mind, combining show circuit, power circuit, led digital control circuit, as well as keyboard designed timer. the software a

6、nd hardware combined, making the system able to achieve two led display, showed 00 to 99 seconds, plus 1 per second automatically, to correctly add, subtract (down) time, plus fast, fast cut, at the same time, records can be relatively independent of 4 hours, turn on the next turn to see the four ti

7、me value can be described as powerful. one system uses software assembly language programming, including shows that the procedures, addition and subtraction counting procedures, faster by speeding up procedures, interruption, delay procedures, eliminate key procedures, such as shaking and debug wave

8、 in the operation of the system hardware proteus use of powerful features to achieve a simple easy-to-cut observed in the simulation can be observed in actual working condition. keywords: single-chip; multi-function stopwatch;design 目 錄 摘摘 要要.4 abstractabstract.5 1 1 概概 述述.7 1.1 設(shè)計任務(wù)設(shè)計任務(wù).7 1.2 設(shè)計要求設(shè)

9、計要求.7 2 系統(tǒng)總體方案及硬件設(shè)計系統(tǒng)總體方案及硬件設(shè)計.7 2.1 系統(tǒng)總體方案系統(tǒng)總體方案.7 2.2 硬件電路設(shè)計硬件電路設(shè)計.8 3 3 軟件設(shè)計軟件設(shè)計.11 4.1 軟件設(shè)計概述軟件設(shè)計概述.11 4.2 程序流程圖程序流程圖.12 4.3 子程序模塊設(shè)計子程序模塊設(shè)計.14 4 proteus 軟件仿真軟件仿真 .17 4.1 功能簡介功能簡介.17 4.24.2 wavewave 編譯編譯.17 4.3 proteusproteus 仿真仿真.18 5 課程設(shè)計體會課程設(shè)計體會.19 參考文獻參考文獻.20 附附 1.1.源程序代碼源程序代碼.21 附附 2.2.程序原理圖

10、程序原理圖.27 1 1 概概 述述 1.1 設(shè)計任務(wù) 設(shè)計一個單片機控制的秒表系統(tǒng)。利用單片機的定時器/計數(shù)器定時和記數(shù)的原 理,結(jié)合顯示電路、led 數(shù)碼管以及按鍵來設(shè)計計時器。將軟、硬件有機地結(jié)合起 來,使得系統(tǒng)能夠正確地進行加、減(倒)計時,數(shù)碼管能夠正確地顯示時間。 1.2 設(shè)計要求 1.能同時記錄四個相對獨立的時間并分別顯示。 2.兩位led顯示,顯示時間為0099秒。 3.每秒自動加1。 4.一個開始按鍵、一個復(fù)位按鍵、一個暫停按鈕和一個快加按鈕(每10ms快 速加一)。 5.用上翻頁按鈕查看四個不同的計時值。 6.添加下翻頁按鈕,并實現(xiàn)快減功能。 2 系統(tǒng)總體方案及硬件設(shè)計系統(tǒng)

11、總體方案及硬件設(shè)計 2.1 系統(tǒng)總體方案 本系統(tǒng)采用at89c51單片機為中心器件,利用其定時器/計數(shù)器定時和記數(shù) 的原理,結(jié)合硬件電路如電源電路,晶振電路,復(fù)位電路,顯示電路,以及一些按 鍵電路等來設(shè)計計時器,將軟、硬件有機地結(jié)合起來。其中軟件系統(tǒng)采用匯編語言 編寫程序,包括顯示程序,加減計數(shù)程序,快加快減程序,中斷,延時程序,按鍵 消抖程序等,并在wave中調(diào)試運行,硬件系統(tǒng)利用proteus強大的功能來 實現(xiàn),簡單切易于觀察,在仿真中就可以觀察到實際的工作狀態(tài)。 單片機單片機 外圍外圍 電路電路 電源電源 電路電路 顯示電路顯示電路 鍵盤電路鍵盤電路 圖 1 系統(tǒng)電路原理 2.2 硬件電

12、路設(shè)計 本系統(tǒng)中,硬件電路主要有電源電路,晶振電路,復(fù)位電路,顯示電路,以及 一些按鍵電路等 (1)單片機簡介 本系統(tǒng)設(shè)計采用at89c51單片機。 at89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能 cmos8位微處理器。該器件采用atmel高密度非易失存儲器制造技術(shù)制造, 與工業(yè)標(biāo)準(zhǔn)的mcs-51指令集和輸出管腳相兼容(由于在微機原理中學(xué)過c-51的 具體知識,這里不再詳細(xì)說明) 。由于將多功能8位cpu和閃爍存儲器組合在單個 芯片中,atmel的at89c51是一種高效的微控制器。 (2)電源電路 電源電路是系統(tǒng)最基本的部分,任何電路都離不開電源部分,由于三端集成穩(wěn)

13、 壓器件所組成的穩(wěn)壓電源線路簡單,性能穩(wěn)定,工作可靠,調(diào)整方便,已逐漸取代 分立元件,在生產(chǎn)中被廣泛采用,由于是小系統(tǒng),我們采用7809電源提供+5v穩(wěn) 壓電壓。 (3)晶體振蕩電路 mcs-51單片機內(nèi)部的振蕩電路是一個高增益反相放大器,引線 xtal1 和xtal2分別為反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入和來自反向振 蕩器的輸出,該反向放大器可以配置為片內(nèi)振蕩器。 這里,我們選用51單片機12mhz的內(nèi)部振蕩方式,電路如下:電容器 c1,c2起穩(wěn)定振蕩頻率,快速起振的作用,c1和c2可在20-100pf之間取,這 里取30p,接線時要使晶體振蕩器x1盡可能接近單片機。 圖 2 晶

14、體振蕩電路 (4)復(fù)位電路 采用上電+按鍵復(fù)位電路,上電后,由于電容充電,使rst持續(xù)一段高電平時 間。當(dāng)單片機已在運行之中時,按下復(fù)位鍵也能使用使rst持續(xù)一段時間的高電 平,從而實現(xiàn)上電加開關(guān)復(fù)位的操作。這不僅能使單片機復(fù)位,而且還能使 單片機的外圍芯片也同時復(fù)位。當(dāng)程序出現(xiàn)錯誤時,可以隨時使電路復(fù)位。 電路圖如下: 圖 3 復(fù)位電路 (5)顯示電路 顯示電路既可以選用液晶顯示器,也可以選用數(shù)碼管顯示。我們采用的是數(shù)碼 管顯示電路。用2個共陽極led顯示,led是七段式顯示器,內(nèi)部有7個條形 發(fā)光二極管和1個小圓點發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。 在用數(shù)碼管顯示時,我們有靜態(tài)和動

15、態(tài)兩種選擇,靜態(tài)顯示程序簡單,顯示穩(wěn) 定,但是占用端口比較多;動態(tài)顯示所使用的端口比較少,可以節(jié)省單片機的i/o 口。 在設(shè)計中,我們采用led動態(tài)顯示,用p0口驅(qū)動顯示。由于p0口的輸出級 是開漏電路,用它驅(qū)動時需要外接上拉電阻才能輸出高電平。 電路圖如下所示: 圖 4 顯示電路 (6)鍵盤電路 在按鍵電路中,我們可以在i/o口上直接接按鍵,或者通過i/o口設(shè)計一個鍵 盤,然后通過鍵盤掃描程序判斷是否有鍵按下等。鍵盤掃描電路節(jié)省i/o口,但編 程有些復(fù)雜,在這里,由于我們所用的按鍵較少,且系統(tǒng)是一個小系統(tǒng),有足夠的 i/o口可以使用,為了使程序簡化,我們采用按鍵電路,用部分p1口做開關(guān), p

16、1.0停止,p1.1快減,p1.2快加,p1.3暫停記錄,p1.4下翻,p1.5上翻,用外 中斷 int0開始,另外用軟件法消除抖動。電路圖如下所示: 圖 5 鍵盤電路 3 3 軟件設(shè)計軟件設(shè)計 4.1 軟件設(shè)計概述 在軟件設(shè)計中,一般采用模塊化的程序設(shè)計方法,它具有明顯的優(yōu)點。把一個 多功能的復(fù)雜的程序劃分為若干個簡單的、功能單一的程序模塊,有利于程序的設(shè) 計和調(diào)試,有利于程序的優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結(jié) 構(gòu)層次一目了然。 應(yīng)用系統(tǒng)的程序由包含多個模塊的主程序和各種子程序組成。各程序模塊都要 完成一個明確的任務(wù),實現(xiàn)某個具體的功能,如:加計數(shù)、減計數(shù)、延時、快加、 快

17、減,計數(shù)和顯示等,在具體需要時調(diào)用相應(yīng)的模塊即可。 開始 初始化 p1.0=0? p1.1=0? p1.2=0? p1.3=0? p1.4=0? p1.5=0? 停止 快減 快加 下翻 上翻 夠 4 個? p1.0=0? n 暫停記錄 n n n n n n p1.0=0? n n 功能描述:用2位led數(shù)碼顯示秒表,顯示時間為0099秒,每秒自動加 1;一個開始鍵,一個復(fù)位鍵,一個暫停鍵,一個“快減”鍵,一個“快加”鍵; 一個“記錄”鍵,可同時記錄四個相對獨立的時間;一個“上翻”鍵,一個“下翻” 鍵,查看四個不同的計時值。 4.2 程序流程圖 (1)主程序: 這里采用分支結(jié)構(gòu),通過對按鍵的掃

18、描,判斷要實現(xiàn)什么功能。如下所示: (2)加 1 程序 (20h) a 進位清零 做加法 到 100? (20h)清零 個位十位分開 返回 y (3)定時器 1 程序 用定時器 0 實現(xiàn)定時 1 秒,定時器 1 實現(xiàn)定時 10 毫秒,定時初值都是 0d8f0h, 這里只寫定時 1 秒的流程圖,如下所示: 壓棧保護 賦定時初值 到 1 秒? 調(diào)用加 1 程序 調(diào)用顯示程序 中斷返回 y 4.3 子程序模塊設(shè)計 (1)停止子程序 按鍵后,使秒表停止,即關(guān)閉定時器0,1,程序如下: stop: clr tr0 clr tr1;關(guān)閉定時器0,1 acall disp;顯示 (2)暫停記錄子程序 按鍵結(jié)

19、束后,將此時顯示內(nèi)存中的數(shù)送寄存器中保存,并通過條件轉(zhuǎn)移指令判 斷是否存夠4個數(shù),若存夠則停止,否則繼續(xù)。 jilu : mov a,20h mov r1, a inc r1 djnz 50h, here;是否夠四個數(shù)? mov r1, #71h mov 50h, #04h mov 51h, #04h sjmp stop;夠4個數(shù)停止 (3)加1子程序 此程序只為簡單的加1,并判斷是否到100?到則從0開始,否則繼續(xù),另外 將顯示內(nèi)存中的數(shù)個位十位分開,以便于動態(tài)顯示。 jia1: mov a,20h ; clr c inc a cjne a, #100, go1;是否加到100? mov 2

20、0h, #00h ret go1: mov 20h, a;將個位十位分開顯示 mov b, #0ah div ab mov 31h, a mov 30h, b ret (4)顯示子程序,采用動態(tài)顯示 disp: movr0,#30h movr3, #0feh mova, r3 play: mov p2, a mov a,r0 mov dptr, #dseg1 movc a,a+dptr mov p0, a lcall dl1 mov p2, #0ffh mov a, r3 rl a jnb acc.2, ld1 inc r0 mov r3, a ljmp play ld1: ret dl1:

21、movr7, #05h dl: movr6, #0ffh dl6: djnzr6, $ djnzr7, dl ret (5)延時子程序 例如延時10ms程序: delay10:mov r4,#14h dl00: mov r5, #0ffh dl11: djnz r5, dl11 djnz r4, dl00 ret (6)按鍵消抖程序 延時10ms再次判斷該位的狀態(tài),若仍是0則說明該鍵被按下,彈起后去執(zhí)行 該按鍵功能;若為1,則說明是抖動則繼續(xù)向下判斷。 l1: jb p1.1,l2 ; p1.1=0,快減 acall delay10 jb p1.1, l2 jnb p1.1, $ ljmp k

22、jian (5)中斷服務(wù)程序 用外部中斷1實現(xiàn)開始,定時器0定時1s,定時器1定時10ms 。 4 proteus 軟件仿真軟件仿真 4.1 功能簡介 功能描述如下:連通電源后,按開始鍵,秒表正常運行;按暫停記錄鍵,記錄 4個數(shù),上翻下翻鍵可以查看記錄的4個數(shù);停止鍵可使暫停;快加快減鍵可以實 現(xiàn)快加快減功能,至停止鍵被按下;復(fù)位鍵可使系統(tǒng)復(fù)位。 4.2 wave 編譯 將所編寫的匯編語言程序另存為 秒表.asm 文件,并在wave中運行,顯 示結(jié)果如下: 圖 6 運行結(jié)果 4.3 proteus 仿真 用 proteus 將編譯生成的 秒表.hex 文件下到單片機中,點擊運行按相應(yīng)的操 作鍵

23、即可看到下圖的效果: 圖 7 部分仿真結(jié)果 a 圖 7 部分仿真結(jié)果 b 5 課程設(shè)計體會課程設(shè)計體會 經(jīng)過一個星期的課程設(shè)計,過程曲折可謂一語難盡。在此期間我也失落過,也曾一 度熱情高漲。從開始時激情高漲到最后汗水背后的復(fù)雜心情,點點滴滴無不令我回味無 長。在老師的指導(dǎo)下,我順利完成了課程設(shè)計。心得體會如下: 1、將學(xué)習(xí)的理論知識通過實驗融會貫通,讓我對它的理解更加深刻。對程序的編譯 過程了解透徹。 2、本次課程設(shè)計以自己設(shè)計為主,因此培養(yǎng)了學(xué)習(xí)的積極性,讓我能夠獨立去分析 問題、發(fā)現(xiàn)問題、解決問題,更增強我與老師同學(xué)交流溝通和合作完成任務(wù)的能力。 3、由于這次課程設(shè)計不僅設(shè)計編程方面的知識

24、,還涉及了其它學(xué)科的知識,例如 proteus 和 wave 等的基本知識。程序是用匯編語言來編寫的,這次課程設(shè)計讓我在編 程能力方面得到了提高。 4、由于水平有限,實驗程序運行有一定的限制,望見諒。 總之,通過這次課程設(shè)計,不僅加深了我對單片機理論方面的理解,將理論更好的 運用的實踐方面,而且鍛煉了我們各方面的能力,培養(yǎng)了堅強的毅力和做事的耐心和細(xì) 心,認(rèn)識合作的重要性,雖然程序可能有一定的浪費資源,且較羅嗦,但這需要在實踐 中慢慢提高,還希望老師能夠多多指導(dǎo),促進我不斷的進步。 參考文獻參考文獻 1 余發(fā)山主編.單片機原理及應(yīng)用技術(shù).徐州:中國礦業(yè)大學(xué)出版社.2003 2 楊凌霄編著.微型

25、計算機原理及應(yīng)用.徐州:中國礦業(yè)大學(xué)出版社,2004 3 李群芳主編.單片機原理、接口及應(yīng)用.北京:清華大學(xué)出版社,2005 附附 1.1.源程序代碼源程序代碼 org0000h ljmp main org000bh ljmp time1 org 0013h ljmp zhduan org001bh ljmp time10 org0100h main: mov sp, #50h mov tmod, #11h movth1,#0d8h ;定時10ms mov tl1, #0f0h movth0,#0d8h ;定時10ms mov tl0, #0f0h mov 20h, #00h ; bin se

26、cond mov30h, #00h ; second mov31h, #00h mov 40h, #100 mov 71h,#00h ;記錄暫存區(qū) mov 72h, #00h mov 73h, #00h mov 74h, #00h mov 50h, #04h mov 51h, #04h mov r1, #71h setb ea setb ex1 setb et1 setb et0 clr pt0 clr pt1 setb px1 setb it1 movp0, #0ffh clrtr0 clrtr1 clr 7fh ml1: acalldisp start: jb p1.0,l1 ; p1.0

27、=0,停止 acall delay10 jb p1.0, l1 jnb p1.0, $ ljmp stop l1: jb p1.1,l2 ; p1.1=0,快減 acall delay10 jb p1.1, l2 jnb p1.1, $ ljmp kjian l2: jb p1.2,l3 ; p1.2=0,快加 acall delay10 jb p1.2, l3 jnb p1.2, $ ljmp kjia l3: jb p1.3,l4 ; p1.3=0,暫停記錄 acall delay10 jb p1.3, l4 jnb p1.3, $ ljmp jilu l4: jb p1.4,l5 ; p

28、1.4=0,下翻 acall delay10 jb p1.4, l5 jnb p1.4, $ ljmp xfan l5: jb p1.5,l ; p1.5=0,上翻 acall delay10 jb p1.5, l jnb p1.5, $ ljmp shfan l: sjmp here stop: clr tr0 ;停止程序 clr tr1 acall disp sjmp here jilu : mov a,20h ;暫停記錄程序 mov r1, a inc r1 djnz 50h, here mov r1, #71h mov 50h, #04h mov 51h, #04h sjmp stop

29、 xfan: mov a,r1 ;下翻程序 mov 20h, a mov b, #0ah div ab mov 31h, a mov 30h, b lcall disp inc r1 djnz 50h, here mov r1, #71h mov 50h, #04h sjmp here shfan: mov a,r1 ;下翻程序 mov 20h, a mov b, #0ah div ab mov 31h, a mov 30h, b lcall disp dec r1 djnz 50h, here mov r1, #74h mov 50h, #04h sjmp here kjian: setb tr1 ;快減程序 clr tr0 hee1: jnb tf1, hee1 clr tf1 acall jian1 acall disp jnb p1.0, stop sjmp hee1 kjia: setb tr1 ;快加程序 clr tr0 hee: jnb tf1, hee clr tf1 acall jia1 acall disp jnb p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論