微機原理課程設(shè)計-電子鐘_第1頁
微機原理課程設(shè)計-電子鐘_第2頁
微機原理課程設(shè)計-電子鐘_第3頁
微機原理課程設(shè)計-電子鐘_第4頁
微機原理課程設(shè)計-電子鐘_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE4PAGE3摘要微機控制即微型計算機原理控制。是集CPU,RAM,ROM,定時,計數(shù)和多種接口于一體的微控制器。它體積小,成本低,功能強,廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動化上。微型計算機原理控制應(yīng)用技術(shù)飛速發(fā)展,縱觀我們現(xiàn)在生活的各個領(lǐng)域,從導(dǎo)彈的導(dǎo)航裝置,到飛機上各種儀表的控制,從計算機的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,到工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,以及我們生活中廣泛使用的各種智能IC卡,電子寵物等,這些都離不開微型計算機原理控制。我們組本次設(shè)計的題目是簡單電子鐘程序設(shè)計,用到了定時芯片8254,中斷控制器8259和可編程并行芯片8255。在編輯1毫秒定時程序時,用到了中斷控制器8259。此程序主要由四部分組成:第一部分為最主要的部分定義顯示界面;第二部分為利用延時程序,并將調(diào)用的二進制表示的時間數(shù)轉(zhuǎn)換成ASCII碼,并將時間數(shù)存入內(nèi)存區(qū);第三部分將存在系統(tǒng)內(nèi)存區(qū)的時間數(shù)用七段數(shù)碼管顯示出來;第四部分利用循環(huán)程序分別對秒個位、秒十位、分個位、分十位與相應(yīng)的規(guī)定值進行比較,結(jié)合延時程序來實現(xiàn)電子鐘數(shù)字的跳變,從而形成走時準(zhǔn)確的電子鐘。該程序?qū)崿F(xiàn)了準(zhǔn)確顯示秒和分,讀數(shù)準(zhǔn)確,走時精準(zhǔn)。此電子鐘能準(zhǔn)確的從0分0秒走時到59分59秒,然后能自動回復(fù)到0分0秒循環(huán)走時。關(guān)鍵詞:可編程并行芯片8255定時芯片8254中斷控制器8259七段數(shù)碼顯示管延時計數(shù)比較定時中斷1設(shè)計任務(wù)描述1.1設(shè)計題目簡單電子鐘設(shè)計1.2設(shè)計內(nèi)容利用微機原理試驗箱的發(fā)光數(shù)碼管顯示單元,把時間顯示在LED數(shù)碼管上。1.2.1通過課程設(shè)計使學(xué)生更進一步掌握微機原理及應(yīng)用課程的有關(guān)知識,提高應(yīng)用微機解決問題的能力,加深對微機應(yīng)用的理解。通過查閱資料,結(jié)合所學(xué)知識進行軟、硬件的設(shè)計,使學(xué)生初步掌握應(yīng)用微機解決問題的步驟及方法。為以后學(xué)生結(jié)合專業(yè)從事微機應(yīng)用設(shè)計奠定基礎(chǔ)1.2.2設(shè)計要求利用8254定時器設(shè)計一個具有分、秒顯示的電子時鐘,并定義一個啟動鍵,當(dāng)按下該鍵時時鐘從當(dāng)前設(shè)定值(可在顯示,緩沖區(qū)中予置)開始走時。利用微機原理試驗箱的發(fā)光數(shù)碼管顯示單元,把時間顯示在LED數(shù)碼管上?;疽螅?1)走時準(zhǔn)確。(2)顯示無誤。1.2.3設(shè)計發(fā)揮(1)延時(2)顯示小時1.3設(shè)計環(huán)境與器材(1)PC微機一臺用于對程序的編譯測試等,同時還需要對實驗設(shè)備進行控制,提供整個程序的運行平臺,并且收集和釋放硬件信號,實現(xiàn)程序功能。(2)微機原理實驗箱一臺此設(shè)備必須能提供8254、8255、8259和數(shù)碼管等必要芯片。并且能通過接受PC機傳來的信息,顯示出相應(yīng)的功能。以支持電子時鐘的實現(xiàn)。(3)導(dǎo)線若干條用于電路和芯片之間的連接。2設(shè)計思路電子鐘的總體設(shè)計原理是:首先利用定時芯片8254的定時作用定時計數(shù),在給定的時間內(nèi)逐漸變?yōu)?時,就會發(fā)出一個中斷信號,8259中斷器接到此中斷信號就會調(diào)用MIR7時間顯示程序,執(zhí)行此程序后8255就會工作,把接到的二進制時間碼轉(zhuǎn)換成ASCII碼在四個碼管上顯示時間。具體做法是為了實現(xiàn)精確走時,顯示分秒。我們先在數(shù)據(jù)段開辟一顯示緩沖區(qū),用來存儲系統(tǒng)時間,初始化我們所要應(yīng)用的芯片8254,8255,8259后,允許中斷信號輸入,主程序開始。為了顯示分秒,并被我們識別,先調(diào)用DIS程序,實現(xiàn)片選的功能。為了得到良好的顯示效果,本程序調(diào)用了一段精確的延時程序沒,使各位在時間顯示上有短暫的間隔,延時程序要盡量接近1秒,但又不能超過一秒。為了實現(xiàn)會跳動的電子鐘,我們調(diào)用了子程序clear的清屏功能,不斷以刷新的方式來獲取時間,形成會跳動的電子鐘。同時,由于8254定時器的分頻功能,產(chǎn)生中斷信號,8259中斷器就會調(diào)用MIR7時間顯示程序,實現(xiàn)位選,最后通過LED數(shù)碼管顯示出來,時間刷新,再顯示,如此循環(huán),就形成了精確走時的電子鐘。3主要元器件介紹3.18254簡介8254具有3個獨立的16位計數(shù)器,6種不同的工作方式。計數(shù)寄存器用來寄存計數(shù)初值,計數(shù)工作單元為16位減1計數(shù)器,它的初值便是計數(shù)寄存器內(nèi)容,計數(shù)單元對CLK脈沖計數(shù),每出現(xiàn)一個CLK脈沖,計數(shù)器減1,當(dāng)減為零時,通過OUT輸出指示信號表明計數(shù)單元已為零。當(dāng)作為定時器工作時,每當(dāng)計數(shù)單元為零時,計數(shù)寄存器內(nèi)容會自動重新裝入計數(shù)單元,而且CLK輸入是均勻的脈沖序列,于是OUT輸出頻率是降低了的(相對于CLK信號頻率)脈沖序列。當(dāng)作為計數(shù)器工作時,表明只關(guān)心在CLK端出現(xiàn)(代表事件)的脈沖個數(shù),當(dāng)CLK端出現(xiàn)了規(guī)定個數(shù)的脈沖時,OUT輸出一個脈沖。3.1.18254引腳功能圖3.3.1內(nèi)部結(jié)構(gòu)框圖和引腳圖上圖是8254的內(nèi)部結(jié)構(gòu)框圖和引腳圖,它是由與CPU的接口、內(nèi)部控制電路和三個計數(shù)器組成。本次設(shè)計主要利用8254產(chǎn)生1ms的方波,其與總線相連接的引線主要是:D0~D7雙向數(shù)據(jù)線,用以傳送數(shù)據(jù)和控制字。這里分別與XD0~XD7相連接。CS輸入信號,低電平有效,當(dāng)它有效時才能選中該定時器芯片,實現(xiàn)對它的讀或?qū)?,這里與系統(tǒng)IOY3相連接。RD讀控制信號,低電平有效,與系統(tǒng)總線IOR#相連接。WR寫控制信號,低電平有效,與系統(tǒng)總線IOW#相連接。A0、A1為8254的內(nèi)部計數(shù)器和一個控制寄存器的編碼選擇信號,其功能如下:A1A0選擇00計數(shù)器001計數(shù)器110計數(shù)器211控制寄存器CLK0是計數(shù)器的時鐘輸入端。本次設(shè)計的時鐘為1MHZ,計數(shù)器對此時鐘信號進行計數(shù)。GATE0門控信號,即計數(shù)器的控制輸入信號,用來控制計數(shù)器的工作,這里使其為高電平,直接接系統(tǒng)5V。OUT計數(shù)器輸出信號,用來產(chǎn)生不同方式工作時的輸出波形,本次設(shè)計的1ms方波由此輸出。3.1.28254的工作方式8254有6種方式工作,由于只用來產(chǎn)生方波,所以使其工作在方式3(方波發(fā)生器),在此方式下,GATA信號為低電平時,強迫OUT輸出高電平,當(dāng)GATA主高電平時,OUT輸出時稱方波。(1)方式0:計數(shù)到0結(jié)束輸出正躍變信號方式。(2)方式1:硬件可重觸發(fā)單穩(wěn)方式。(3)方式2:頻率發(fā)生器方式。(4)方式3:方波發(fā)生器。(5)方式4:軟件觸發(fā)選通方式。(6)方式5:硬件觸發(fā)選通方式。3.1.38354內(nèi)部控制字8254的控制字有兩個:一個用來設(shè)置計數(shù)器的工作方式,稱為方式控制字;另一個用來設(shè)置讀回命令,稱為讀回控制字。這兩個控制字共用一個地址,由標(biāo)識位來區(qū)分。當(dāng)讀回控制字的D4位為0時,由該讀回控制字D1~D2位指定的計數(shù)器的狀態(tài)寄存器內(nèi)容將被鎖存到狀態(tài)寄存器中。狀態(tài)字格式如圖6.3.2所示:圖3.3.28254狀態(tài)字格式4源程序清單及注釋MY8255_AEQU0600HMY8255_BEQU0602HMY8255_CEQU0604HMY8255_MODEEQU0606HA8254EQU06C0H;宏定義B8254EQU06C2HC8254EQU06C4HCON8254EQU06C6HSSTACKSEGMENTSTACK DW32DUP(?);設(shè)置段,開辟一個內(nèi)存空間SSTACKENDSDATASEGMENTDTABLE DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB7FH,6FH,77H,7CH,39H,5EH,79H,71HMSEC DW0;定義數(shù)據(jù)段SEC DB0MIN DB0DATAENDSCODE SEGMENT;定義代碼段 ASSUMECS:CODE,DS:DATA,SS:SSTACKSTART:PUSHDS;入棧代碼段 MOVAX,0000H MOVDS,AX MOVAX,OFFSETMIR7 ;取中斷入口地址 MOVSI,003CH ;中斷矢量地址 MOV[SI],AX ;填I(lǐng)RQ7的偏移矢量確定地址 MOVAX,CS ;段地址 MOVSI,003EH MOV[SI],AX ;填I(lǐng)RQ7的段地址矢量 CLI;清除中斷標(biāo)志 POPDS;出棧 ;初始化主片8255 MOVDX,MY8255_MODEMOVAL,80HOUTDX ;初始化主片8254 MOVDX,CON8254MOVAL,36HOUTDXMOVDX,A8254MOVAL,0E8HOUTDXMOVAL,03HOUTDX ;初始化主片8259 MOVAL,11H OUT20H,AL ;ICW1 MOVAL,08H OUT21H,AL ;ICW2 MOVAL,04H OUT21H,AL ;ICW3 MOVAL,01H OUT21H,AL ;ICW4 MOVAL,6FH ;OCW1 OUT21H,AL STI;置中斷標(biāo)志位IF MOVAX,DATA;數(shù)據(jù)傳給AXMOVDS,AX;再把AX中心數(shù)據(jù)送入段DS中 MOVSI,3000H;SI中的值設(shè)為3000H MOVAL,00H;把AL清0 MOV[SI],AL;把地址為3000H的空間清0給DEL初始化 MOV[SI+1],AL;把地址為3001H的空間清0 MOV[SI+2],AL;把地址為3002H的空間清0 MOV[SI+3],AL;把地址為3003H的空間清0 MOVDI,3003HBEGIN::CALLDIS;調(diào)用子程序DIS CALLCLEAR;調(diào)子程序CLEAR JMPBEGIN;無條件跳到BEGINMIR7:STI;置中斷標(biāo)志位IF PUSHAX PUSHSI MOVAX,MSEC;毫秒內(nèi)容0給AX,并讓其在AX中自增, INCAX然后再傳回到毫秒中 MOVMSEC,AXCMPAX,2000AX中的數(shù)經(jīng)過自增后變化了,用這個 JBMRET數(shù)與2000比較,如果低于2000跳到MRETMOVAX,0 MOVMSEC,AX MOVAL,SEC ADDAL,1 DAA MOVSEC,AL CMPAL,60H JBMTODIS MOVAL,0 MOVSEC,AL MOVAL,MIN ADDAL,1 DAA MOVMIN,ALCMPAL,60HJNZMTODISMOVAL,0MOVMIN,ALMTODIS:MOVAL,SEC MOVAH,AL MOVSI,3000H ANDAL,0FH MOV[SI],AL RORAH,1 RORAH,1 RORAH,1 RORAH,1 ANDAH,0FH MOV[SI+1],AH MOVAL,MIN MOVAL,MIN MOVAH,AL ANDAL,0FH MOV[SI+2],AL RORAH,1 RORAH,1 RORAH,1 RORAH,1 ANDAH,0FH MOV[SI+3],AH MRET:MOVAL,20H OUT20H,AL ;中斷結(jié)束命令 POPSI POPAX IRETCLEAR::MOVDX,MY8255_BMOVAL,00H把00H寫入8255的B口,使B口停止工作OUTDX,RETDIS:PUSHAX;AX內(nèi)容存在棧中 MOVSI,3000H MOVDL,0F7H MOVAL,DLAGAIN:PUSHDX;內(nèi)容入棧保存MOVDX,MY8255_A把AL內(nèi)容OF7H寫入A口中OUTDXMOVAL,[SI]MOVBX,OFFSETDTABLEANDAX,00FFHADDBX,AX MOVAL,[BX]MOVDX,MY8255_B把數(shù)據(jù)傳到A口,再經(jīng)過B口傳出接DELOUTDX,AL段顯示器CALLDALLY INCSIPOPDXMOVAL,DLTESTAL,01HJZOUT1 RORAL,1;循環(huán)右移MOVDL,AL JMPAGAINOUT1::POPAX RETDALLY:PUSHCX;延時過程MOVCX,000FHT1: MOVAX,009FHT2: DECAXJNZT2LOOPT1POPCXRETCODEENDS;程序結(jié)束ENDSTART5設(shè)計原理流程圖6實際硬件電路接線圖系統(tǒng)的連線圖主要由五個部分構(gòu)成。8259中斷控制器、8254可編程時間間隔定時器、8255并口控制器、鍵盤及數(shù)碼管顯示單元、開關(guān)及LED顯示單元構(gòu)成。如下圖所示:芯片8254系統(tǒng)總線芯片8255DEL數(shù)碼管D0PB0D1PB1D2PB2D3PB3D4PB4D5PB5D6PB6D7PB7WRRDPA3CSPA2A0PA1A1PA0ABCDEFGHX1X2X3X4XD0XD1XD2XD3XD4XD5XD6XD7IOW#WOR#IOY3IOY0XA1XA2PCLKMIR7+5VD0D1D2D3D4D5D6D7WRRDCSA0A1CLK0OUT0GATE0設(shè)計總結(jié)為期一周的微機原理課程設(shè)計在緊張的期末復(fù)習(xí)期間匆忙的結(jié)束了,時間雖然很短暫,但是我卻收獲了不少。之前大半個學(xué)期的學(xué)習(xí)都是些理論知識,這次的課程設(shè)計才使我對微機原理的應(yīng)用有了一次真正的感悟。在本次設(shè)計的時候,我們已經(jīng)學(xué)完了《微型計算機原理及應(yīng)用》這本教材,所以對于微機原理的一些基礎(chǔ)知識也有所掌握,但這離一個完整設(shè)計的距離還有很大的一步。這次課設(shè)的題目是簡單電子鐘課程設(shè)計,為了更好的完成這次課程設(shè)計,我去圖書館查閱了很多相關(guān)資料,并對課本進行了一次重新的學(xué)習(xí),這一切讓我對微機原理知識有了進一步的認識,并豐富了我的相關(guān)知識。我真的很慶幸我有機會著手設(shè)計這么一個題目,它所應(yīng)用到的知識覆蓋面很廣,所以本次課程設(shè)計讓我學(xué)習(xí)到了很多新的微機知識,并從中獲益良多。在剛開始設(shè)計的時候,我真的是一頭霧水,不知道從何下手,于是就借來了以前學(xué)長的程序設(shè)計作個參考,我先將他們的程序設(shè)計看懂,然后再自己嘗試著去設(shè)計。首先應(yīng)該畫出硬件設(shè)計圖,這個過程是基礎(chǔ),然后是流程圖,這個是重點,流程圖的完

溫馨提示

  • 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

提交評論