用單片機AT89C51設(shè)計一個2位的LED數(shù)碼顯示作為“秒表”—單片機課程設(shè)計_第1頁
用單片機AT89C51設(shè)計一個2位的LED數(shù)碼顯示作為“秒表”—單片機課程設(shè)計_第2頁
用單片機AT89C51設(shè)計一個2位的LED數(shù)碼顯示作為“秒表”—單片機課程設(shè)計_第3頁
用單片機AT89C51設(shè)計一個2位的LED數(shù)碼顯示作為“秒表”—單片機課程設(shè)計_第4頁
用單片機AT89C51設(shè)計一個2位的LED數(shù)碼顯示作為“秒表”—單片機課程設(shè)計_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機課程設(shè)計 目 錄一、設(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的定時器設(shè)計一個2位的led數(shù)碼顯示作為“秒表”:顯示時間為0099s,每秒自動加1,設(shè)計一個“開始”鍵,按下“開始”鍵秒表開始計時。設(shè)計一個“復(fù)位”鍵,按下“復(fù)位” 鍵后,秒表從0開始計時。 任務(wù)安排:李座負(fù)責(zé)繪制電路原理圖;梁宗林負(fù)責(zé)收集資料及電子版整理;付忠林負(fù)責(zé)程序和仿真。二、設(shè)計目的:1.進一步掌握a

2、t89c51單片機的結(jié)構(gòu)和工作原理;2.掌握單片機的接口技術(shù)及外圍芯片的工作原理及控制方法;3.進一步掌握單片機程序編寫及程序調(diào)試過程,掌握模塊化程序設(shè)計方法;4.掌握proteus仿真軟件的使用方法;5.掌握led數(shù)碼管原理及使用方法。6.掌握定時器、外部中斷的設(shè)置和編程原理。7.通過此次課程設(shè)計能夠?qū)纹瑱C軟硬件結(jié)合起來,對程序進行編輯,校驗。8.該課程設(shè)計通過單片機的定時器/計數(shù)器定時和計數(shù)原理,設(shè)計簡單的計時器系統(tǒng),擁有正確的計時、暫停、清零、復(fù)位功能,并同時可以用數(shù)碼管顯示。三、設(shè)計內(nèi)容:了解8051芯片的的工作原理和工作方式 ,使用該芯片對led數(shù)碼管進行顯示控制,實現(xiàn)用單片機的端

3、口控制數(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個全雙工的可編程串行通信接口;具有一個數(shù)據(jù)指針dptr;兩種低功耗工作模式,即空閑模式和掉電模式;具有可編程的3級程序鎖定定位; at89c51的工作電源電壓為5(10.2)v且典型值為5v,最高工作頻率為24mhz. at89c51各部分的組成及功能:外部中斷txdrxdp0 p1 p2 p3擴展

4、控制振蕩器和時鐘電路數(shù)據(jù)存儲器128字節(jié)程序存儲器14kbcpu兩個16位定時器計數(shù)器中斷控制總線擴展控制器并行可編程i/o口可編程串行口內(nèi)部總線1.單片機的中央處理器(cpu)是單片機的核心,完成運算和操作控制,主要包括運算器和控制器兩部分。地址寄存器片內(nèi)rompsenaleearstxtal1xtal2振蕩器 定時及控制邏輯指令譯碼器指令寄存器程序計數(shù)器 pcpc增量器暫存器1b寄存器accc暫存器2psw alu(1) 運算器運算器主要用來實現(xiàn)算術(shù)、邏輯運算和位操作。其中包括算術(shù)和邏輯運算單元alu、2.累加器acc、b寄存器、程序狀態(tài)字psw和兩個暫存器等。(1) alu是運算電路的核

5、心,實質(zhì)上是一個全加器,完成基本的算術(shù)和邏輯運算。算術(shù)運算包括加、減、乘、除、增量、減量、bcd碼運算;邏輯運算包括“與”、“或”、“異或”、左移位、右移位和半字節(jié)交換,以及位操作中的位置位、位復(fù)位等。暫存器1和暫存器2是alu的兩個輸入,用于暫存參與運算的數(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寄存器在乘法和除法指令中作

6、為alu的輸入之一,另一個輸入來自acc。運算結(jié)果存于ab寄存器中。(2)控制器 控制器是識別指令并根據(jù)指令性質(zhì)協(xié)調(diào)計算機內(nèi)各組成單元進行工作的部件,主要包括程序計數(shù)器pc、pc增量器、指令寄存器、指令譯碼器、定時及控制邏輯電路等,其功能是控制指令的讀入、譯碼和執(zhí)行,并對指令執(zhí)行過程進行定時和邏輯控制。at89c51單片機中,pc是一個16位的計數(shù)器,可對64kb程序存儲器進行尋址。復(fù)位時pc的內(nèi)容是0000h.(3)存儲器 單片機內(nèi)部的存儲器分為程序存儲器和數(shù)據(jù)存儲器。at89c51單片機的程序存儲器采用4kb的快速擦寫存儲器flash memory,編程和擦除完全是電器實現(xiàn)。(4)外圍接口

7、電路 at89c51單片機的外圍接口電路主要包括:4個可編程并行i/o口,1個可編程串行口,2個16位的可編程定時器以及中斷系統(tǒng)等。at89c51的工作原理:3.引腳排列及功能at89c51的封裝形式有pdip,tqfp,plcc等,現(xiàn)以pdip為例。 (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負(fù)載。p1口 8位、準(zhǔn)雙向i/o口,具有內(nèi)部上拉

8、電阻。 p1口是為用戶準(zhǔn)備的i/o雙向口。在編程和校驗時,可用作輸入低8位地址。用作輸入時,應(yīng)先將輸出鎖存器置1。p1口可驅(qū)動4個ttl負(fù)載。p2 8位、準(zhǔn)雙向i/o口,具有內(nèi)部上拉電阻。 當(dāng)使用外存儲器或外擴i/o口時,p2口輸出高8位地址。在編程和校驗時,p2口接收高字節(jié)地址和某些控制信號。p3 8位、準(zhǔn)雙向i/o口,具有內(nèi)部上拉電阻。 p3口可作為普通i/o口。用作輸入時,應(yīng)先將輸出鎖存器置1。在編程/校驗時,p3口接收某些控制信號。它可驅(qū)動4個ttl負(fù)載。(2)控制信號線 rst 復(fù)位輸入信號,高電平有效。在振蕩器穩(wěn)定工作時,在rst腳施加兩個機器周期以上的高電平,將器件復(fù)位。 ea/

9、vpp 外部程序存儲器訪問允許信號ea.當(dāng)ea信號接地時,對rom的讀操作限定在外部程序存儲器,地址為0000h-ffffh;當(dāng)ea接vcc時,對rom的讀操作從內(nèi)部程序存儲器開始,并可延續(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ù)的分時傳

10、送。此外,ale端連續(xù)輸出正脈沖,頻率為晶振頻率的1/6,可做外部定時脈沖使用。 (3)外部晶振引線 xtal1 片內(nèi)振蕩器反向放大器和時鐘發(fā)生線路的輸入端。使用片內(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&63 q2 q (2)振蕩電路的接法外部振蕩器信號nc

11、xtal2xtal1gndc1c2xtal2xtal1cnd4.2 led數(shù)碼管的結(jié)構(gòu)和工作原理 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)部電路,它們的

12、發(fā)光原理是一樣的,只是它們的電源極性不同而已。顏色有紅,綠,藍,黃等幾種。led數(shù)碼管廣泛用于儀表,時鐘,車站,家電等場合。選用時要注意產(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腳)加正電源;2、要使(a,b,c

13、,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ū)動是指每個數(shù)碼管的每一個段碼都由一個單片機的i/o口進行驅(qū)動,或者使用如bcd碼二-十進位轉(zhuǎn)換器進行驅(qū)動。靜態(tài)驅(qū)動的優(yōu)點是編程簡單,顯示亮度

14、高,缺點是占用i/o口多,如驅(qū)動5個數(shù)碼管靜態(tài)顯示則需要5840根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增加位選通控制電路,位選通由各自獨立的i/o線控制,當(dāng)單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位元選通com端電路的控制,所以我們只要將需要顯示的數(shù)碼

15、管的選通控制打開,該位就顯示出字形,沒有選通的數(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ù)信號data輸入的入口地址;將p3.1做為時鐘信號clk輸入的入口地址。定時器t0作為每秒加一的定時器;定時器t1作為“快加”鍵的定時器。其中“開始”按鍵當(dāng)開關(guān)由1撥向0(由上向下?lián)埽r開

16、始計時;“清零”按鍵當(dāng)開關(guān)由1撥向0(由上向下?lián)埽r數(shù)碼管清零,此時若再撥“開始”按鍵則又可重新開始計時。4.4系統(tǒng)總體方案及硬件設(shè)計(方案論證、設(shè)計、調(diào)試及儀器說明)4.4.1系統(tǒng)總體方案本系統(tǒng)采用at89c51單片機為中心器件,利用其定時器/計數(shù)器定時計數(shù)的原理,結(jié)合硬件電路如電源電路,晶振電路,復(fù)位電路和顯示電路,以及一些按鍵電路等來設(shè)計計數(shù)器,將軟硬件有機結(jié)合起來,其中軟件系統(tǒng)采用匯編語言編寫程序,包括顯示程序,計數(shù)程序,中斷,硬件系統(tǒng)利用protues強大的功能來實現(xiàn),簡單易于觀察,在仿真中就可以觀察到實際的工作狀態(tài)。4.4.2硬件電路設(shè)計 1)晶振電路 mcs-51單片機內(nèi)部的晶振

17、電路是一個高增益反相放大器,引用xtal1和xtal2分別為反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入和來自反向振蕩器的輸出,該反向放大器可以配置為片內(nèi)振蕩器。這里,我們選用51單片機12mhz的內(nèi)部振蕩方式,電路如下:電容器c1、c2起穩(wěn)定振蕩頻率,快速起振的作用,c1和c2可以在20-100pf之間取值,這里取20pf,接線時要使晶體振蕩器x1盡可能接近單片機。2)按鍵部分電路接線在按鍵電路中,我們可以在i/o口上直接按鍵,或者通過i/o口設(shè)計一個鍵盤,然后通過鍵盤掃描程序判斷是否有按鍵按下等。此系統(tǒng)是一個小系統(tǒng),有足夠的i/o口可以使用,為了使程序簡化,我們采用按鍵電路,用部分p1口做

18、開關(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ū)動顯示。由于p0口的輸出極是開漏電路,用它驅(qū)動時需要外接上拉電阻才能輸出高電平。4.5 軟件設(shè)計4.5.1軟件設(shè)計概述 在軟件設(shè)計中,一般采用模塊化的程序設(shè)計方法,它具

19、有明顯的優(yōu)點,把一個多功能的復(fù)雜的程序劃分成多個簡單的、單一的程序模塊,有利于程序的測試和調(diào)試,有利于程序的優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結(jié)構(gòu)一目了然。4.5.2程序流程圖 開始顯示單元清零t0設(shè)為16位計時器模式允許t0中斷調(diào)用顯示子程序按鍵按下?進入功能程序nyt0中斷保護現(xiàn)場秒表加1s處理恢復(fù),中斷返回 1)系統(tǒng)主程序流程圖 2)定時器中斷t0流程圖 4.5.3子程序模塊設(shè)計1)顯示精度為1秒程序main: mov r0,#20 mov tmod,#01h mov th0,#3ch mov tl0,#0b0h mov dptr,#table setb ea setb e

20、t02)延時程序delay: ;誤差 0us mov r6,#01hdl0:mov r5,#61h4.6秒表匯編程序;*;本程序?qū)崿F(xiàn)秒表從0s計到99sk_sbit p1.0;秒表開始控制位z_tbit p1.1 ;秒表暫??刂莆籷_lbit p1.2 ;秒表清零控制位f_wbit p1.3 ;秒表復(fù)位控制位secondequ30htcntequ34horg00h sjmpstartorg0bhljmpint_t0start:movdptr,#tablemovsecond,#0movtcnt,#0movtmod,#01hsetb p1.0setb p1.1setb p1.2setb p1.3j

21、b k_s,$ ;秒表開始控制位 movth0,#3ch;fosc=12mhz,定時50毫秒movtl0,#0b0hmovie,#82hsetbtr0;*;對秒表的兩位顯示進行控制a1:lcalldisplay mova,secondcjnea,#99,a1 ;判斷是否加到99秒clear: movsecond,#0;*;定時器中斷服務(wù)程序,對 秒 計數(shù)int_t0:jnb z_t,zt ;秒表暫??刂莆籲ext: movth0,#3chmovtl0,#0b0hinctcntmova,tcntcjnea,#20,retune ;計時1秒 用#20 incsecond movtcnt,#0 mo

22、va,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+dptr movp2,a ;片選信號lcalldelaysetbp3.7zt: jnb k_s,next ;秒表暫??刂莆?ret table: db 3fh,06h,5bh,4

23、fh,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的運用有了一定的了解,通過編程對c語言也學(xué)到了不少,更重要的是,更進一步理解了單片機的功能與用

溫馨提示

  • 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

提交評論