基于單片機的秒秒的秒表設(shè)計_第1頁
基于單片機的秒秒的秒表設(shè)計_第2頁
基于單片機的秒秒的秒表設(shè)計_第3頁
基于單片機的秒秒的秒表設(shè)計_第4頁
基于單片機的秒秒的秒表設(shè)計_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 工程技術(shù)學(xué)院 課程設(shè)計題 目:用單片機AT89C51設(shè)計一個2位的LED數(shù)碼顯示作為“秒表”專 業(yè): 電氣工程及其自動化 年 級: 2009級 學(xué) 號: 20091447 20091414 20091444 姓 名: 付忠林 梁宗林 李 座 指導(dǎo)教師: 楊 彥 鑫 日 期: 2012年12月12日 云南農(nóng)業(yè)大學(xué)工程技術(shù)學(xué)院 目 錄一、設(shè)計題目和要求:2二、設(shè)計目的:3三、設(shè)計內(nèi)容:4四、課程設(shè)計心得體會21五、參考文獻22六、課程設(shè)計指導(dǎo)教師評審標(biāo)準(zhǔn)及成績評定23附件1:秒表原理圖(實際接線圖)24附件2:仿真圖125附件3:仿真圖226 一、設(shè)計題目和要求:題目三:秒表 應(yīng)用AT89C51

2、的定時器設(shè)計一個2位的LED數(shù)碼顯示作為“秒表”:顯示時間為0099s,每秒自動加1,設(shè)計一個“開始”鍵,按下“開始”鍵秒表開始計時。設(shè)計一個“復(fù)位”鍵,按下“復(fù)位” 鍵后,秒表從0開始計時。 二、設(shè)計目的:1.進一步掌握AT89C51單片機的結(jié)構(gòu)和工作原理;2.掌握單片機的接口技術(shù)及外圍芯片的工作原理及控制方法;3.進一步掌握單片機程序編寫及程序調(diào)試過程,掌握模塊化程序設(shè)計方法;4.掌握PROTEUS仿真軟件的使用方法;5.掌握LED數(shù)碼管原理及使用方法。6.掌握定時器、外部中斷的設(shè)置和編程原理。7.通過此次課程設(shè)計能夠?qū)纹瑱C軟硬件結(jié)合起來,對程序進行編輯,校驗。8.該課程設(shè)計通過單片機的

3、定時器/計數(shù)器定時和計數(shù)原理,設(shè)計簡單的計時器系統(tǒng),擁有正確的計時、暫停、清零、復(fù)位功能,并同時可以用數(shù)碼管顯示。三、設(shè)計內(nèi)容:了解8051芯片的的工作原理和工作方式 ,使用該芯片對LED數(shù)碼管進行顯示控制,實現(xiàn)用單片機的端口控制數(shù)碼管,顯示分、秒,并能用按鈕實現(xiàn)秒表起動、停止、清零功能,精確到1秒。 AT89C51單片機的主要工作特性:·內(nèi)含4KB的FLASH存儲器,擦寫次數(shù)1000次;·內(nèi)含28字節(jié)的RAM;·具有32根可編程I/O線;·具有2個16位可編程定時器;·具有6個中斷源、5個中斷矢量、2級優(yōu)先權(quán)的中斷結(jié)構(gòu);·具有1個全

4、雙工的可編程串行通信接口;·具有一個數(shù)據(jù)指針DPTR;·兩種低功耗工作模式,即空閑模式和掉電模式;·具有可編程的3級程序鎖定定位; AT89C51的工作電源電壓為5(1±0.2)V且典型值為5V,最高工作頻率為24MHz. AT89C51各部分的組成及功能:外部中斷TXDRXDP0 P1 P2 P3擴展控制振蕩器和時鐘電路數(shù)據(jù)存儲器128字節(jié)程序存儲器14KBCPU兩個16位定時器計數(shù)器中斷控制總線擴展控制器并行可編程I/O口可編程串行口內(nèi)部總線1.單片機的中央處理器(CPU)是單片機的核心,完成運算和操作控制,主要包括運算器和控制器兩部分。地址寄存器片

5、內(nèi)ROMPSENALEEARSTXTAL1XTAL2振蕩器 定時及控制邏輯指令譯碼器指令寄存器程序計數(shù)器 PCPC增量器暫存器1B寄存器ACCC暫存器2PSW ALU(1) 運算器運算器主要用來實現(xiàn)算術(shù)、邏輯運算和位操作。其中包括算術(shù)和邏輯運算單元ALU、2.累加器ACC、B寄存器、程序狀態(tài)字PSW和兩個暫存器等。(1) ALU是運算電路的核心,實質(zhì)上是一個全加器,完成基本的算術(shù)和邏輯運算。算術(shù)運算包括加、減、乘、除、增量、減量、BCD碼運算;邏輯運算包括“與”、“或”、“異或”、左移位、右移位和半字節(jié)交換,以及位操作中的位置位、位復(fù)位等。暫存器1和暫存器2是ALU的兩個輸入,用于暫存參與運算

6、的數(shù)據(jù)。ALU的輸出也是兩個:一個是累加器,數(shù)據(jù)經(jīng)運算后,其結(jié)果又通過內(nèi)部總線返回到累加器;另一個是程序狀態(tài)字PSW,用于存儲運算和操作結(jié)果的狀態(tài)。累加器是CPU使用最頻繁的一個寄存器。ACC既是ALU處理數(shù)據(jù)的來源,又是ALU運算結(jié)果的存放單元。單片機與片外RAM或I/O擴展口進行數(shù)據(jù)交換必須通過ACC來進行。 B寄存器在乘法和除法指令中作為ALU的輸入之一,另一個輸入來自ACC。運算結(jié)果存于AB寄存器中。(2)控制器 控制器是識別指令并根據(jù)指令性質(zhì)協(xié)調(diào)計算機內(nèi)各組成單元進行工作的部件,主要包括程序計數(shù)器PC、PC增量器、指令寄存器、指令譯碼器、定時及控制邏輯電路等,其功能是控制指令的讀入、

7、譯碼和執(zhí)行,并對指令執(zhí)行過程進行定時和邏輯控制。AT89C51單片機中,PC是一個16位的計數(shù)器,可對64KB程序存儲器進行尋址。復(fù)位時PC的內(nèi)容是0000H.(3)存儲器 單片機內(nèi)部的存儲器分為程序存儲器和數(shù)據(jù)存儲器。AT89C51單片機的程序存儲器采用4KB的快速擦寫存儲器Flash Memory,編程和擦除完全是電器實現(xiàn)。(4)外圍接口電路 AT89C51單片機的外圍接口電路主要包括:4個可編程并行I/O口,1個可編程串行口,2個16位的可編程定時器以及中斷系統(tǒng)等。AT89C51的工作原理:3.引腳排列及功能AT89C51的封裝形式有PDIP,TQFP,PLCC等,現(xiàn)以PDIP為例。 (

8、1)I/O口線 ·P0口 8位、漏極開路的雙向I/O口。 當(dāng)使用片外存儲器及外擴I/O口時,P0口作為低字節(jié)地址/數(shù)據(jù)復(fù)用線。在編程時,P0口可用于接收指令代碼字節(jié);程序校驗時,可輸出指令字節(jié)。P0口也可做通用I/O口使用,但需加上拉電阻。作為普通輸入時,應(yīng)輸出鎖存器配置1。P0口可驅(qū)動8個TTL負載。·P1口 8位、準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。 P1口是為用戶準(zhǔn)備的I/O雙向口。在編程和校驗時,可用作輸入低8位地址。用作輸入時,應(yīng)先將輸出鎖存器置1。P1口可驅(qū)動4個TTL負載。·P2 8位、準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。 當(dāng)使用外存儲器或外擴I/O口時

9、,P2口輸出高8位地址。在編程和校驗時,P2口接收高字節(jié)地址和某些控制信號。·P3 8位、準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。 P3口可作為普通I/O口。用作輸入時,應(yīng)先將輸出鎖存器置1。在編程/校驗時,P3口接收某些控制信號。它可驅(qū)動4個TTL負載。(2)控制信號線 ·RST 復(fù)位輸入信號,高電平有效。在振蕩器穩(wěn)定工作時,在RST腳施加兩個機器周期以上的高電平,將器件復(fù)位。 ·EA/VPP 外部程序存儲器訪問允許信號EA.當(dāng)EA信號接地時,對ROM的讀操作限定在外部程序存儲器,地址為0000H-FFFFH;當(dāng)EA接VCC時,對ROM的讀操作從內(nèi)部程序存儲器開始,并

10、可延續(xù)至外部程序存儲器。在編程時,該引腳可接編程電壓5V或12V。在編程校驗時,該引腳可接VCC。 ·PSEN 片外程序存儲器讀選通信號PSEN,低電平有效。在片外程序存儲器取指期間,當(dāng)PSEN有效時,程序存儲器的內(nèi)容被送至P0口;在訪問外部RAM時,PSEN 無效。 ·ALE/PROG 低字節(jié)鎖存信號ALE.在系統(tǒng)擴展時,ALE的下降沿將P0口輸出的低8位地址鎖存在外接的地址鎖存器中,以實現(xiàn)低字節(jié)地址和數(shù)據(jù)的分時傳送。此外,ALE端連續(xù)輸出正脈沖,頻率為晶振頻率的1/6,可做外部定時脈沖使用。 (3)外部晶振引線 ·XTAL1 片內(nèi)振蕩器反向放大器和時鐘發(fā)生線路

11、的輸入端。使用片內(nèi)振蕩器時,連接外部石英晶體和微調(diào)電容。·XTAL2 片內(nèi)振蕩器反相放大器的輸出端。當(dāng)使用片內(nèi)振蕩器時,外接石英晶體和微調(diào)電容。4.存儲器組織和特殊功能寄存器AT89C51的存儲器將程序存儲器和數(shù)據(jù)存儲器分開,并有各自的存儲空間和訪問指令。它有4個存儲空間:片內(nèi)存儲器、片外存儲器、片內(nèi)數(shù)據(jù)存儲器及片外存儲器。4.1 時鐘電路和工作時序振蕩器(1) 振蕩器電路原理RfXTAL1PD&÷6÷3 Q÷2 Q (2)振蕩電路的接法外部振蕩器信號NCXTAL2XTAL1GNDC1C2XTAL2XTAL1CND4.2 LED數(shù)碼管的結(jié)構(gòu)和工作

12、原理 LED數(shù)碼管(LED Segment Displays)是由多個發(fā)光二極管封裝在一起組成“8”字型的器件,引線已在內(nèi)部連接完成,只需引出它們的各個筆劃,公共電極。LED數(shù)碼管常用段數(shù)一般為7段有的另加一個小數(shù)點,還有一種是類似于3位“+1”型。位數(shù)有半位,1,2,3,4,5,6,8,10位等等.,LED數(shù)碼管根據(jù)LED的接法不同分為共陰和共陽兩類,了解LED的這些特性,對編程是很重要的,因為不同類型的數(shù)碼管,除了它們的硬件電路有差異外,編程方法也是不同的。圖2是共陰和共陽極數(shù)碼管的內(nèi)部電路,它們的發(fā)光原理是一樣的,只是它們的電源極性不同而已。顏色有紅,綠,藍,黃等幾種。LED數(shù)碼管廣泛用

13、于儀表,時鐘,車站,家電等場合。選用時要注意產(chǎn)品尺寸顏色,功耗,亮度,波長等。下面將介紹常用LED數(shù)碼管內(nèi)部引腳圖。圖1 這是一個7段兩位帶小數(shù)點 10引腳的LED數(shù)碼管 圖2 引腳定義   每一筆劃都是對應(yīng)一個字母表示 DP是小數(shù)點.   數(shù)碼管分為共陽極的LED數(shù)碼管、共陰極的LED數(shù)碼管兩種。下圖例舉的是共陽極的LED數(shù)碼管,共陽就是7段的顯示字碼共用一個電源的正。led數(shù)碼管原理圖示意:  圖3 引腳示意圖  從上圖可以看出,要是數(shù)碼管顯示數(shù)字,有兩個條件:1、是要在VT端(3/8腳)加

14、正電源;2、要使(a,b,c,d,e,f,g,dp)端接低電平或“0”電平。這樣才能顯示的。 共陽極LED數(shù)碼管的內(nèi)部結(jié)構(gòu)原理圖圖4:   圖4 共陽極LED數(shù)碼管的內(nèi)部結(jié)構(gòu)原理圖共陰極LED數(shù)碼管的內(nèi)部結(jié)構(gòu)原理圖:   圖5 共陰極LED數(shù)碼管的內(nèi)部結(jié)構(gòu)原理圖 表1.1 顯示數(shù)字對應(yīng)的二進制電平信號 LED數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出我們要的數(shù)位,因此根據(jù)LED數(shù)碼管的驅(qū)動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類。 A、靜態(tài)顯示驅(qū)動: 靜態(tài)驅(qū)動也稱直流驅(qū)動。靜態(tài)驅(qū)動是

15、指每個數(shù)碼管的每一個段碼都由一個單片機的I/O口進行驅(qū)動,或者使用如BCD碼二-十進位轉(zhuǎn)換器進行驅(qū)動。靜態(tài)驅(qū)動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用I/O口多,如驅(qū)動5個數(shù)碼管靜態(tài)顯示則需要5×840根I/O口來驅(qū)動,要知道一個89S51單片機可用的I/O口才32個呢。故實際應(yīng)用時必須增加驅(qū)動器進行驅(qū)動,增加了硬體電路的復(fù)雜性。 B、動態(tài)顯示驅(qū)動: 數(shù)碼管動態(tài)顯示介面是單片機中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp "的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選

16、通由各自獨立的I/O線控制,當(dāng)單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位元選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。4.3設(shè)計思路(方案)該實驗要求進行計時并在數(shù)碼管上顯示時間,則可利用DVCC系列單片機微機仿真實驗系統(tǒng)中的芯片8032(芯片的功能類似于芯片AT89C51,其管腳功能也和AT89C51的管腳功能類似)中的P3.2管腳做為外部中斷0的入口地址,并實現(xiàn)“開始”按鍵的功能;將P3.3做為外部中斷1的入口地址,并實現(xiàn)“清零”按鍵的功能;將P3.0做為數(shù)據(jù)信號

17、DATA輸入的入口地址;將P3.1做為時鐘信號CLK輸入的入口地址。定時器T0作為每秒加一的定時器;定時器T1作為“快加”鍵的定時器。其中“開始”按鍵當(dāng)開關(guān)由1撥向0(由上向下?lián)埽r開始計時;“清零”按鍵當(dāng)開關(guān)由1撥向0(由上向下?lián)埽r數(shù)碼管清零,此時若再撥“開始”按鍵則又可重新開始計時。4.4系統(tǒng)總體方案及硬件設(shè)計(方案論證、設(shè)計、調(diào)試及儀器說明)系統(tǒng)總體方案本系統(tǒng)采用AT89C51單片機為中心器件,利用其定時器/計數(shù)器定時計數(shù)的原理,結(jié)合硬件電路如電源電路,晶振電路,復(fù)位電路和顯示電路,以及一些按鍵電路等來設(shè)計計數(shù)器,將軟硬件有機結(jié)合起來,其中軟件系統(tǒng)采用匯編語言編寫程序,包括顯示程序,計

18、數(shù)程序,中斷,硬件系統(tǒng)利用Protues強大的功能來實現(xiàn),簡單易于觀察,在仿真中就可以觀察到實際的工作狀態(tài)。硬件電路設(shè)計 1)晶振電路 MCS-51單片機內(nèi)部的晶振電路是一個高增益反相放大器,引用XTAL1和XTAL2分別為反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入和來自反向振蕩器的輸出,該反向放大器可以配置為片內(nèi)振蕩器。這里,我們選用51單片機12MHZ的內(nèi)部振蕩方式,電路如下:電容器C1、C2起穩(wěn)定振蕩頻率,快速起振的作用,C1和C2可以在20-100PF之間取值,這里取20PF,接線時要使晶體振蕩器X1盡可能接近單片機。2)按鍵部分電路接線在按鍵電路中,我們可以在I/O口上直接按鍵,或

19、者通過I/O口設(shè)計一個鍵盤,然后通過鍵盤掃描程序判斷是否有按鍵按下等。此系統(tǒng)是一個小系統(tǒng),有足夠的I/O口可以使用,為了使程序簡化,我們采用按鍵電路,用部分P1口做開關(guān),P1.0開始,P1.1暫停,P1.2清零,P1.3復(fù)位。3)顯示電路顯示電路我們采用的是數(shù)碼管顯示電路。用2個共陰極LED顯示,LED是七段式顯示器,內(nèi)部有7個條形發(fā)光二極管和1個小圓點發(fā)光二極管組成,根據(jù)各二極管的亮滅組合成字符。在用數(shù)碼管顯示時,我們有靜態(tài)和動態(tài)兩種選擇,靜態(tài)顯示程序簡單,顯示溫度,但是占用端口比較多;動態(tài)顯示所使用的端口比較少,可以節(jié)省單片機的I/O口。在設(shè)計中,我們采用LED動態(tài)顯示,用P0口驅(qū)動顯示。

20、由于P0口的輸出極是開漏電路,用它驅(qū)動時需要外接上拉電阻才能輸出高電平。4.5 軟件設(shè)計軟件設(shè)計概述 在軟件設(shè)計中,一般采用模塊化的程序設(shè)計方法,它具有明顯的優(yōu)點,把一個多功能的復(fù)雜的程序劃分成多個簡單的、單一的程序模塊,有利于程序的測試和調(diào)試,有利于程序的優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結(jié)構(gòu)一目了然。程序流程圖 開始顯示單元清零T0設(shè)為16位計時器模式允許T0中斷調(diào)用顯示子程序按鍵按下?進入功能程序NYT0中斷保護現(xiàn)場秒表加1s處理恢復(fù),中斷返回 1)系統(tǒng)主程序流程圖 2)定時器中斷T0流程圖 子程序模塊設(shè)計1)顯示精度為1秒程序MAIN: MOV R0,#20 MOV TM

21、OD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV DPTR,#TABLE SETB EA SETB ET02)延時程序DELAY: MOV R6,#01HDL0: MOV R5,#61H4.6秒表匯編程序;*;本程序?qū)崿F(xiàn)秒表從0s計到99sK_S BITP1.0;秒表開始控制位Z_T BIT P1.1 ;秒表暫??刂莆籕_L BIT P1.2 ;秒表清零控制位F_W BIT P1.3 ;秒表復(fù)位控制位SECOND EQU 30HTCNT EQU 34H ORG 0000H SJMP START ORG 000BH LJMP INT_T0START: MOVDPTR,

22、#TABLE MOVSECOND,#00H MOVTCNT,#00H MOVTMOD,#01H SETB P1.0 SETB P1.1 SETB P1.2 SETB P1.3 JB K_S,$ ;秒表開始控制位 MOVTH0,#3CH;fosc=12MHz,定時50毫秒 MOVTL0,#0B0H MOVIE,#82H SETBTR0;*;對秒表的兩位顯示進行控制A1:LCALLDISPLAY MOVA,SECONDCJNEA,#99,A1 ;判斷是否加到99秒CLEAR: MOVSECOND,#0;*;定時器中斷服務(wù)程序,對秒計數(shù)INT_T0:JNB Z_T,ZT ;秒表暫??刂莆籒EXT:

23、MOVTH0,#3CHMOVTL0,#0BHINCTCNTMOVA,TCNTCJNEA,#20,RETUNE ;計時1秒用#20 INCSECOND MOVTCNT,#0 MOVA,SECONDCJNEA,#99,RETUNEMOVSECOND,#0RETUNE:RETI;*;顯示控制子程序DISPLAY: JNB Q_L,CLEAR ;秒表清零控制位JNB F_W,START ;秒表復(fù)位控制位 MOVA,SECOND ;顯示秒表的兩位MOVB,#10DIVABCLRP3.6MOVCA,A+DPTRMOVP0,ALCALLDELAYSETBP3.6MOVA,BCLRP3.7 MOVCA,A+D

24、PTR MOVP2,A ;片選信號LCALLDELAYSETBP3.7ZT: JNB K_S,NEXT ;秒表暫??刂莆?RET TABLE: DB 3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FHDELAY:MOVR6,#10D1:MOVR7,#250DJNZR7,$DJNZR6,D1RETEND4.7 Protues軟件仿真 Protus仿真軟件可以看做是構(gòu)建了一個特殊的單片機系統(tǒng),只要將所寫程序的HEX文件導(dǎo)入該單片機系統(tǒng),就可以它他一句句的執(zhí)行所寫的指令,也可以讓它與Keil實現(xiàn)聯(lián)調(diào),程序有問題可以隨時改,幫助快速調(diào)試程序。四、課程設(shè)計心得體會本文主要從軟硬件兩方面說明設(shè)計的總體思路和設(shè)計的實現(xiàn)過程,預(yù)期的設(shè)計目的是:能夠?qū)崿F(xiàn)時鐘的基本功能,正常顯示分秒.在設(shè)計過程中,曾經(jīng)遇到很多的障礙,設(shè)計圖經(jīng)過許多次的修改最后才定下來,但在調(diào)試的過程中又出現(xiàn)了問題,需要修改原理圖;比如硬件的布局,要作到使連接的線路最短,并不沒有想象中的那么容易;并且對匯編語言有了更深刻的了解。設(shè)計過程中遇到程序設(shè)計問題,網(wǎng)上找到視頻教程學(xué)習(xí)中斷程序的編寫,以及查閱C語言課本得以解決。通過網(wǎng)上視頻學(xué)習(xí)了Proteus,對Proteus的運用有了一

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論