可任意啟動停止的電子秒表的設(shè)計_第1頁
可任意啟動停止的電子秒表的設(shè)計_第2頁
可任意啟動停止的電子秒表的設(shè)計_第3頁
可任意啟動停止的電子秒表的設(shè)計_第4頁
可任意啟動停止的電子秒表的設(shè)計_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流可任意啟動停止的電子秒表的設(shè)計.精品文檔.可任意啟動/停止的電子秒表的設(shè)計一、課程設(shè)計目的和任務(wù)<<微機(jī)原理與接口技術(shù)>>是一門實踐性很強(qiáng)的電子信息工程專業(yè)的技術(shù)基礎(chǔ)課程。因此,微機(jī)接口課程設(shè)計是一項實踐性很強(qiáng)的實訓(xùn)環(huán)節(jié),結(jié)合運(yùn)用所學(xué)的匯編語言及8086微處理芯片設(shè)計一個電子秒表,通過實踐能夠加深對匯編語言的理解以及對8086微處理器、8253可編程定時器、8259A可編程中斷控制器、8255A可編程并行I/O接口芯片等的基本功能的認(rèn)識。從而在設(shè)計過程中,提高學(xué)生的實踐編程能力和硬件設(shè)計能力。也可以進(jìn)一步鞏固和融會貫通

2、所學(xué)的匯編語言,并且可以培養(yǎng)學(xué)生查找資料的能力和自己分析問題解決問題的能力。本實驗利用8253可編程定時器等芯片的定時和記數(shù)的原理,結(jié)合實驗箱上的集成電路芯片8086、LED數(shù)碼管以及實驗箱上的按鍵來設(shè)計秒表。將軟、硬件有機(jī)地結(jié)合起來,要求實現(xiàn)計時單位為1/100秒,利用功能鍵進(jìn)行啟/??刂?,上電后計時器清0,當(dāng)?shù)谝淮伟聪翶EY1啟/停鍵時開始計數(shù),按一下KEY2鍵清零,重新開始計時,在系統(tǒng)能夠正確地進(jìn)行計時,使6位LED數(shù)碼管能夠正確地顯示時間。二、分析與設(shè)計1設(shè)計任務(wù)分析:可任意啟動/停止的電子秒表的實現(xiàn)用按鍵中斷來控制整個程序,當(dāng)按一下KEY1啟動電子秒表,再按一下暫停,按一下KEY2鍵

3、清零,用六個七段數(shù)碼管顯示時間。整個程序涉及到8255、8253和8259三個芯片。給8253的CLK0提供一個頻率為10KHZ的時鐘信號, 8253的OUT0連接8259的IRQ7,8253的GATE2連接正5伏電壓,采用計數(shù)器0每隔0.01秒產(chǎn)生一次中斷并且計數(shù),寫入以偏移地址4000H開始的6個內(nèi)存單元,然后利用8255將內(nèi)存單元的數(shù)據(jù)輸出到七段數(shù)碼管。由于按鍵中斷優(yōu)先于8259的7號中斷,所以程序只有在按一下KEY1才啟動電子秒表,再按一下暫停,按一下KEY2鍵清零,如果超出了60分,整個程序自動重新開始。2設(shè)計方案論證:根據(jù)課程設(shè)計的要求和我們所要增加的功能寫好程序流程圖,在程序流程

4、圖的基礎(chǔ)上,結(jié)合芯片的功能寫出相應(yīng)的程序。然后再進(jìn)行程序調(diào)試和相應(yīng)的修改,以達(dá)到能夠?qū)崿F(xiàn)所要求實現(xiàn)的功能的目的。在微機(jī)原理定匯編調(diào)試軟件上編輯源程序,并進(jìn)行匯編,在匯編成功無誤后,選擇端口進(jìn)行調(diào)試,然后裝入程序,至此,本次設(shè)計的軟件工作準(zhǔn)備完畢。再根據(jù)硬件原理設(shè)計圖完成各芯片之間的連接,打開實驗箱電源開關(guān)總體進(jìn)行調(diào)試。在整個實驗過程中,在8253可編程定時器CLK端輸出管腳處接上一個計數(shù)的頻率為10KHZ的時鐘信號,由8253定時/計數(shù)器產(chǎn)生0.01秒的中斷并進(jìn)行計數(shù),可編程并行I/O接口芯片8255A將偏移地址寫入內(nèi)存單元,進(jìn)中斷更新數(shù)據(jù),然后將內(nèi)存數(shù)據(jù)送給LED數(shù)碼管顯示。定時器中斷就是定

5、義初值,然后開中斷,剩下的就在中斷里寫了。保存數(shù)據(jù)段后,取中斷程序入口地址,定義可編程中斷控制器8259中斷7中斷矢量,讀8259中斷屏蔽字,開8259中斷7,六位數(shù)碼管用動態(tài)顯示,挨個點(diǎn)亮,六個I/O控制位,十二個I/O控制段碼,將8259的定時器設(shè)置在0.01秒進(jìn)入一次中斷,交替輸出高低電平(形成時鐘頻率),在計數(shù)器輸出使用組合邏輯電路連接LED燈的各個控制輸入端。3硬件設(shè)計:(1)8086(16位微處理器) 8086CPU的工作電源為單一5V, 它的外部數(shù)據(jù)總線為16位,地址線為20根,故尋址的地址空間為1MB。8086具有一個功能相對完善的指令系統(tǒng),能對各種類型的數(shù)據(jù)進(jìn)行處理。它可以在

6、兩種不同的模式下工作,即最大工作模式和最小工作模式。所謂最小模式,就是微型計算機(jī)系統(tǒng)中只有8086或8088一個微處理器,在這個系統(tǒng),所有的總線控制信號直接由CPU提供。最大模式就是微型計算機(jī)系統(tǒng)中包含有兩個或多個微處理器,其中一個主處理器是8086或8088微處理器,其他處理器稱為協(xié)處理器,它們協(xié)助主處理器工作。(2)8253(可編程定時器/計數(shù)器)首先此設(shè)計中選用工作方式2,用輸出指令向控制寄存器寫入一個控制字,用輸出指令向選中的計數(shù)器端口地址寫入一個計數(shù)初值,然后, 定時/計數(shù)器按控制字要求計數(shù)。計數(shù)從“計數(shù)初始值”開始,每當(dāng)CLK信號出現(xiàn)一次,計數(shù)值減1,當(dāng)計數(shù)值減為0時,從OUT端輸

7、出一個低電平(具體形式與工作模式有關(guān))。當(dāng)CLK信號出現(xiàn)時,計數(shù)值是否減1(即是否計數(shù)),一般,僅當(dāng)GATE有效時,才減1.門控信號GATE如何影響計數(shù)操作,以及輸出端OUT在各種情況下輸出的信號形式與定時/計數(shù)器的工作模式有關(guān)。 (3)8255A(可編程并行I/O接口芯片)8255A可為86系列CPU與外部設(shè)備之間提供并行輸入/輸出的通道。由于它是可編程的,可以通過軟件來設(shè)置芯片的工作方式。在輸入過程中,輸入設(shè)備把數(shù)據(jù)送給接口,并且使?fàn)顟B(tài)線“輸入準(zhǔn)備好”有效。接口把數(shù)據(jù)存放在“輸入緩沖寄存器”中,同時使“輸入回答”線有效,作為對外設(shè)的響應(yīng)。外設(shè)在收到這個回答信號后,就撤消數(shù)據(jù)和“輸入準(zhǔn)備好”

8、信號。數(shù)據(jù)到達(dá)接口中后,接口會在“狀態(tài)寄存器”中設(shè)置輸入準(zhǔn)備好標(biāo)志,或者向CPU發(fā)一個中斷請求。CPU可用查詢方式或中斷方式從接口中讀取數(shù)據(jù)。接口中的數(shù)據(jù)被讀取后,接口會自動清除狀態(tài)寄存器中的標(biāo)志,且撤消對CPU的中斷請求。在輸出過程中,每當(dāng)輸出寄存器可以接收數(shù)據(jù),接口就會將狀態(tài)寄存器中“輸出準(zhǔn)備好”狀態(tài)置1或向CPU發(fā)一個中斷請求,CPU可用查詢或中斷方式向接口輸出數(shù)據(jù)。當(dāng)CPU輸出的數(shù)據(jù)到達(dá)接口后,接口會清除“輸出準(zhǔn)備好”狀態(tài),把數(shù)據(jù)送往外設(shè),并向外設(shè)發(fā)一個“數(shù)據(jù)輸出準(zhǔn)備好”信號。外設(shè)受到驅(qū)動后,便接收數(shù)據(jù),并向接口電路發(fā)一個“輸出回答”信號,接口收到該回答信號后,又將狀態(tài)寄存器中“輸出準(zhǔn)

9、備好”置位,以便CPU輸出下一個數(shù)據(jù)。(4)8259A(可編程中斷控制器) IR(外設(shè)中斷請求線)線上提出了中斷請求的中斷源, IRR中斷請求寄存器(共有8位D7D0)對應(yīng)于連接在IR0IR7線上的外設(shè)的中斷請求,輸入線有請求的置1。 若OCW1(IMR中斷屏蔽寄存器)未使該中斷請求屏蔽,該請求被送入PR(優(yōu)先權(quán)分析器)比較。否則,不送入PR比較。PR把新進(jìn)入的請求與ISR(服務(wù)中寄存器)中正在被處理的中斷進(jìn)行比較。如果新進(jìn)入的請求優(yōu)先級較低,則8259不向CPU提出請求。如果新進(jìn)入的請求優(yōu)先級較高,則8259使INT引腳輸出高電平,向CPU提出請求。(5)LED(數(shù)碼管)LED為發(fā)光二極管構(gòu)

10、成的顯示器件,由7個字符段和一個小數(shù)點(diǎn)段組成,每段對應(yīng)一個發(fā)光二極管,當(dāng)發(fā)光二極管點(diǎn)亮?xí)r,相應(yīng)的字符段點(diǎn)亮。LED有共陰極和共陽極兩種供應(yīng)狀態(tài)。共陰極顯示時,將LED顯示的COM接地,將八個字符段端a、b、c、d、e、f、g、dp依次與一個8位I/O口的最低到最高位連接,當(dāng)I/O給LED的字符段送入一個高電平時,該段就被點(diǎn)亮,從而從這7個被點(diǎn)亮的字符段中構(gòu)成相應(yīng)的字符顯示出來。同理,COM陽極即將COM端接Vcc,其顯示原理與COM陰極的基本相同,但I(xiàn)/O口送入低電平是相應(yīng)的段才被點(diǎn)亮。硬件設(shè)計原理圖如下:4程序流程圖和源代碼清單:(1)程序流程圖:開始初始化KEY1是否按下賦值子程序開中斷D

11、ELAY子函數(shù)KEY2是否按下顯示子函數(shù)結(jié)束NYKEY2按下偶數(shù)次或沒按下KEY1被按下奇數(shù)次 (2)源代碼清單: 主程序: PUSH DS ;保存數(shù)據(jù)段 MOV AX,0000H MOV DS,AX ;數(shù)據(jù)段清零 MOV AX,OFFSET IRQ7 ;取中斷程序入口地址 ADD AX,2000H ;加裝時IP2000地址MOV SI,003C ;填8259中斷7中斷矢量MOV WSI,AX ;填偏移量矢量MOV AX,0000H ;段地址CS0000HMOC SI,003EHMOV WSI,AX ;填段地址矢量POP DS ;彈棧IN AL,21H ;讀8259中斷屏蔽字AND AL,7F

12、H ;開8259中斷7OUT 21H,ALMOV AL,39H ;8253的計數(shù)器0為方式2,采用BCD碼計數(shù),先寫低8位,后寫高8位。方式控制字為00110101OUT 43H,AL ;寫入方式控制字到控制字寄存器MOV AL,00H ;計數(shù)初值低8位OUT 42H,AL ;寫入計數(shù)初值低8位到通道0MOV AL,10H ;計數(shù)初值高8位OUT 42H,AL ;寫入計數(shù)初值高8位到通道0MOV AL,81H ;8255的A口位方式0輸出,B口為方式0輸出,C口下部輸入1000 0001OUT 63H,AL ;寫方式控制字CALL FIRST ;調(diào)用first子程序,賦計數(shù)初值BEGI: HL

13、T ; 延時等待STI ;開中斷MOV AH,01HINT 16H ;檢測是否按了鍵JZ BEJIMOV AH,00H ;讀鍵值INT 16HCMP AL,0DH ;是否按了KEY2JNZ A1MOV SI,4000H NOT SI+04H ;偏移地址為4004H的內(nèi)存單元內(nèi)容取反JMP BEGIA1:CMP AL,1BH ;是否按了KEY1鍵JNZ A2CALL FIRST ;重新賦初值,相當(dāng)于清零A2: JMP BEGI中斷程序:IRQ7:CAKK DIS ;調(diào)用DISP子程序,用來在數(shù)碼管顯示數(shù)據(jù)MOV SI 4000HCMP SI+04H,00H ;判斷是否按了第2次回車鍵JE A4C

14、ALL ADDN ;調(diào)用ADDN子程序,用來計數(shù)A4:MOV AL,20HOUT 20H,ALCLI ;關(guān)中斷IRET ;返回ADDN程序:ADDN:MOV SI,4000HADD SI+05H,01H ;百分之一秒加1CMP SI+05H,0AH ;判斷是否大于10JZ A5JMP A11A5:MOV SI+05H,00HADD SI+04H,01H ;十分之一秒加1CMP SI+04H,0AH ;判斷是否大于10JZ A6JMP A11A6:MOV SI+04H,00HADD SI+03H,01H ;秒位加1CMP SI+03H,0AH ;判斷是否大于10JZ A7JMP A11A7:MO

15、V SI+03H,00HADD SI,01H ;十秒位加1A8:MOV SI+02H,00HADD SI+01H,01H ;分位加1CMP SI+01H,0AH ;判斷是否大于10JZ A7JMP A9A9:MOV SI+01H,00HADD SI,01H ;十分位加1CMP SI,06H ;判斷是否大于6JZ A8JMP A9A10:MOV SI,00 ;大于60:00重新開始A11: RET顯示程序:DSP: PUSH AX;保存AXMOV SI,4000H;指向數(shù)據(jù)緩沖區(qū)MOV DL,F7H;1111 0111 指向數(shù)碼管MOV AL,DL ;AL=1111 0111AGAIN:OUT

16、60H,AL;寫端口AMOV AL,SIMOV BX,4100H ;指向數(shù)碼緩沖區(qū) BX=0100 0001 0000 0000AND AX,00FFH ; BX=0000 0000 alADD BX,AX;得到顯示代碼 BX=0100 0001 alMOV AL,BX OUT 61H,AL ;寫端口BCALL DELAY:調(diào)用延時程序DELAYINC SIMOV AL,DL TEST AL,01HJZ OUT ROR AL,1;指向下一個數(shù)碼管MOV DL,ALJMP AGAINOUT: POP AX;彈出AXRETLEDMAP: ;數(shù)碼管顯示代碼:DB 3FH,06H,5BH,4FH,66

17、HDB 6DH,7DH.07H,7FH,6FHDELAY: PUSH CX;延時程序 PUSH AX MOV CX,0010HT1:MOV AX, 0010HT2 :DEC AXJNZ T2 LOOP T1POP AXPOP CX RET三、系統(tǒng)方案實施 1我們小組剛開始由于程序本身的一些問題和對微機(jī)原理知識的掌握不夠全面,導(dǎo)致無法對程序的有效匯編,如將程序多次匯編均顯示“Out of memory”,后來在其他組同學(xué)的幫助下,我們將源代碼重新組合修改后成功運(yùn)行,其中,曾多次出現(xiàn)代碼段等未定義的錯誤警示,如后來通過逐步分解測試的方法進(jìn)行了解決。 2. 在基本確定了程序的框架和初步寫出了源程序代

18、碼的情況下, 我們按如上方式連線進(jìn)行了硬件調(diào)試,最終當(dāng)按下“KEY1”鍵,開始計數(shù),但數(shù)碼管顯示從0000.00開始不能準(zhǔn)確按每微秒自動加0.01,只能無準(zhǔn)確規(guī)律變化;再按下“KEY1”鍵,系統(tǒng)暫停計數(shù),數(shù)碼管顯示當(dāng)時的數(shù)值;按“KEY2”鍵,系統(tǒng)復(fù)位清零,數(shù)碼管可再次顯示0000.00;但是當(dāng)再次按下任何鍵,系統(tǒng)不能重新啟動,必須重新裝入程序。3. 本次實驗通過微型計算機(jī)的定時和計數(shù)原理,設(shè)計了簡單的計時器系統(tǒng),擁有正確的開始計時、暫停、清零的功能,并同時可以用數(shù)碼管顯示,但不夠準(zhǔn)確實現(xiàn)增加功能,在后續(xù)的設(shè)計工作中需進(jìn)一步改正。四、總結(jié)與體會首先,要認(rèn)真閱讀老師下發(fā)的微機(jī)接口課程設(shè)計任務(wù)書,仔細(xì)審題,看懂題目的要求,根據(jù)小組成員的興趣愛好和能力,選擇適當(dāng)?shù)恼n題,不益太簡單或者太難,能夠做到既能把課題完成又能鍛煉自己的能力。本次設(shè)計我們經(jīng)過小組討論,最終選擇了“可任意啟動/停止的電子秒表的設(shè)計”這一課題,難易適中,并能夠充分運(yùn)用到上學(xué)期我們所學(xué)的微型計算機(jī)原理與接口技術(shù)的相關(guān)內(nèi)容。然后,我們根據(jù)課題要求和實驗室硬件條件,選擇了適合的方案,確定所需要的元器件及工具,復(fù)習(xí)相關(guān)的知識

溫馨提示

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

評論

0/150

提交評論