word中有詳細(xì)的4路競(jìng)賽搶答器的具體實(shí)驗(yàn)流程圖,關(guān)于8086詳細(xì)解釋,8255等
微機(jī)原理與接口技術(shù)硬件實(shí)習(xí)報(bào)告
題 目: 競(jìng)賽搶答器設(shè)計(jì) 學(xué) 生 姓 名:卓*強(qiáng) 學(xué) 院(系):信息數(shù)理學(xué)院專 業(yè) 班 級(jí):計(jì)算機(jī)141 校內(nèi)指導(dǎo)教師: 潘* 專業(yè)技術(shù)職務(wù):副教授 實(shí) 習(xí) 時(shí) 間:2017年6月19日 2017年7月7日 硬件實(shí)習(xí)任務(wù)書 一、設(shè)計(jì)題目 4路競(jìng)賽搶答器設(shè)計(jì) | 二、設(shè)計(jì)背景 隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,基于微處理器的控制系統(tǒng)應(yīng)用非常廣泛,通過自己動(dòng)手設(shè)計(jì)一個(gè)基于8086CPU的競(jìng)賽搶答器,進(jìn)一步了解計(jì)算機(jī)的工作原理,接口技術(shù),提高軟硬件綜合應(yīng)用能力,即對(duì)微機(jī)原理,接口技術(shù),匯編語(yǔ)言程序設(shè)計(jì)進(jìn)行綜合訓(xùn)練。 | 三、設(shè)計(jì)內(nèi)容及目標(biāo) 設(shè)計(jì)內(nèi)容: 設(shè)計(jì)一個(gè)4路競(jìng)賽搶答器,綜合應(yīng)用8255并行接口、8259中斷和8253定時(shí)器等知識(shí)。邏輯開關(guān)K0---K3代表?yè)尨鸢粹o,當(dāng)某個(gè)邏輯開關(guān)閉合時(shí),相當(dāng)于搶答按鈕按下,此時(shí)在七段數(shù)碼管上將其號(hào)碼顯示出來(lái),并使喇叭響一聲(或者以發(fā)光二極管代替),包括開始搶答信號(hào)的接收;計(jì)時(shí)器的倒計(jì)時(shí);檢查搶答按鈕并顯示在數(shù)碼管上;任意鍵退出程序。 設(shè)計(jì)目標(biāo): 1、綜合運(yùn)用相關(guān)課程中所學(xué)到的理論知識(shí)去獨(dú)立完成某一設(shè)計(jì)課題; 2、通過查閱手冊(cè)和相關(guān)文獻(xiàn)資料,培養(yǎng)學(xué)生獨(dú)立分析和解決問題的能力; 3、進(jìn)一步熟悉8086CPU和常用接口電路,加深對(duì)專業(yè)知識(shí)和理論知識(shí)學(xué)習(xí)的認(rèn)識(shí)和理解 4、學(xué)會(huì)撰寫硬件實(shí)習(xí)的總結(jié)報(bào)告; 5、培養(yǎng)嚴(yán)肅認(rèn)真的工作作風(fēng)和嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度。 | | | | | | | | | 系統(tǒng)硬件設(shè)計(jì)及軟件設(shè)計(jì) | 實(shí)現(xiàn)系統(tǒng)硬件和軟件設(shè)計(jì) | | | | | 完善硬件及軟件設(shè)計(jì);開始準(zhǔn)備實(shí)習(xí)報(bào)告初稿。 | | | 學(xué)習(xí)Proteus仿真軟件,并仿真系統(tǒng) | 熟悉Proteus仿真軟件,并成功仿真系統(tǒng) | | 完成實(shí)習(xí)任務(wù);完善實(shí)習(xí)報(bào)告。 | 寫好硬件實(shí)習(xí)報(bào)告,調(diào)試好系統(tǒng) | | 答辯并且驗(yàn)收實(shí)習(xí)報(bào)告 | 答辯并且驗(yàn)收實(shí)習(xí)報(bào)告 | 五、設(shè)計(jì)時(shí)間:2017年6月19日到 2017年7月7日 |
計(jì)算機(jī)科學(xué)與技術(shù) 系 指導(dǎo)教師 潘 操
微機(jī)原理與接口技術(shù)硬件實(shí)習(xí)報(bào)告
目 錄 1 實(shí)習(xí)目的 2 課題方案原理 2.1 主要工程問題 2.2 解決方案 2.2.1提出方案 2.2.2方案選擇 2.3 相關(guān)核心模塊(技術(shù))介紹 2.3.1并行接口芯片8255A 2.3.2中斷控制芯片8259A 2.3.3可編程定時(shí)芯片8253 3 課題設(shè)計(jì)及實(shí)現(xiàn) 3.1硬件設(shè)計(jì) 3.1.1硬件設(shè)計(jì)原理 3.1.2顯示選手電路設(shè)計(jì) 3.1.3計(jì)時(shí)電路設(shè)計(jì) 3.1.4中斷電路設(shè)計(jì) 3.2 軟件設(shè)計(jì) 3.2.1 軟件設(shè)計(jì)程序流程圖 3.2.2 軟件設(shè)計(jì)程序代碼及分析 4 實(shí)習(xí)結(jié)果分析 5 實(shí)習(xí)心得 5.1 實(shí)習(xí)日記 5.2 心得體會(huì) 參 考 文 獻(xiàn)
微機(jī)原理與接口技術(shù)硬件實(shí)習(xí)報(bào)告
1 實(shí)習(xí)目的(1)進(jìn)一步掌握8255、8253以及8259顯示電路的編程方法。 (2)進(jìn)一步掌握定時(shí)器的使用和編程以及中斷處理程序的編程方法。 (3)進(jìn)一步熟悉8086CPU和常用接口電路,加深對(duì)專業(yè)知識(shí)和理論知識(shí)學(xué)習(xí)的認(rèn)識(shí)和理解。 (4)程序功能按照要求實(shí)現(xiàn),程序能夠自由開始競(jìng)賽,競(jìng)賽開始后選手進(jìn)行搶答,搶答選手號(hào)碼通過數(shù)碼管顯示出來(lái),選手回答時(shí)間進(jìn)行計(jì)時(shí),選手回答完畢重新開始下一輪搶答。 2 課題方案原理2.1 主要工程問題此次實(shí)習(xí)利用8086芯片、并行接口芯片8255A、中斷接口芯片8259和定時(shí)芯片8253,設(shè)計(jì)一個(gè)4人競(jìng)賽搶答器。通過8255A芯片要實(shí)現(xiàn)主持人的競(jìng)賽控制、選手的搶答按鈕、選手號(hào)碼的顯示和倒計(jì)時(shí)顯示,顯然這通過一個(gè)8255A芯片是行不通的,所以本次實(shí)驗(yàn)用到了2個(gè)8255A芯片分別來(lái)實(shí)現(xiàn)功能。 主持人能夠中斷計(jì)時(shí),需要用8259芯片來(lái)實(shí)現(xiàn)比賽的中斷,這加大了程序的復(fù)雜度,需要用到不同的中斷類型去響應(yīng)中斷。比賽要能夠計(jì)時(shí),這需要將8255A芯片與8253芯片結(jié)合在一起。 2.2 解決方案2.2.1提出方案方案一 選用8255A,8253,8259,數(shù)碼管 1.8253作為定時(shí)器使用。 2.8259利用IR0端作為計(jì)時(shí)暫停的中斷引入端。 3. 8255 作為并行輸入輸出,A口接4個(gè)搶答開關(guān),B口接準(zhǔn)備鍵、開始計(jì)時(shí)鍵、暫停鍵和關(guān)閉鍵,C口數(shù)碼管顯示。 - 顯示區(qū)由3個(gè)LED數(shù)碼管和8個(gè)按鈕組成。
方案二 自鎖開關(guān)、NE555定時(shí)器、共陽(yáng)極數(shù)碼管 - 鎖存器鎖存號(hào)碼。
- NE555定時(shí)器作為定時(shí)器使用。
- 共陽(yáng)極數(shù)碼管作為顯示數(shù)字使用。
方案三 采用AT89C51作為系統(tǒng)控制器的方案。單片機(jī)可以通過編程實(shí)現(xiàn)各種不同的功能,同時(shí)經(jīng)過多年發(fā)展越來(lái)越多的型號(hào)被制造出來(lái)滿足大多數(shù)使用需求。在方案中用模塊化設(shè)計(jì)思想,設(shè)計(jì)出各種所需要的模塊,再通過單片機(jī)聯(lián)系起來(lái),從而形成一個(gè)整體,實(shí)現(xiàn)所需要的功能。 方案四 獨(dú)立式鍵盤、單片機(jī)、數(shù)碼管、蜂鳴器 系統(tǒng)采用6個(gè)獨(dú)立式鍵盤作為按鍵,通過單片機(jī)不停地掃描按鍵來(lái)控制LED數(shù)碼管的顯示以及蜂鳴器,當(dāng)按下啟動(dòng)按鍵后,經(jīng)單片機(jī)處理,輸出控制信號(hào),數(shù)碼管從30開始進(jìn)入減計(jì)時(shí)并在數(shù)碼管上顯示剩余時(shí)間,在有選手按下按鍵時(shí),就會(huì)有對(duì)應(yīng)于這個(gè)按鍵的編碼在數(shù)碼管上顯示,同時(shí)蜂鳴器給出聲響來(lái)提示主持人和選手,如果在30秒內(nèi)沒有選手搶答,則本次搶答無(wú)效,系統(tǒng)封鎖輸 入電路,禁止選手超時(shí)搶答,定時(shí)器上顯示00。 用一片四D觸發(fā)器74LS175和四輸入2或非門CD4002實(shí)現(xiàn)。四D觸發(fā)器輸出經(jīng)四輸入或非門到四路搶答按鍵開關(guān),加到觸發(fā)器的四個(gè)輸入端,同時(shí)經(jīng)四輸入或非門和反相器作為四D觸發(fā)器的時(shí)鐘信號(hào),四D觸發(fā)器清零端經(jīng)上拉電阻接電源,同時(shí)經(jīng)過清零控制開關(guān)到地。電路簡(jiǎn)單成本低,稍加擴(kuò)展就能達(dá)到實(shí)用化。 2.2.2方案選擇方案一采用中斷,程序結(jié)構(gòu)化更為清晰,且cpu少了循環(huán)掃描的時(shí)間,效率較高。而且多用了一個(gè)8259中斷控制芯片,一個(gè)8253定時(shí)/計(jì)時(shí)芯片,程序編制上涉及到中斷服務(wù)子程序的編寫,雖然稍顯復(fù)雜,但是能夠很好的實(shí)現(xiàn)實(shí)驗(yàn)要求。電路所需的器件較少,電路連接簡(jiǎn)單化,調(diào)試更方便,布局美觀。 方案二采用74LS375、74LS148、CD4511分別作為搶答信號(hào)的鎖存、編碼和譯碼輸出,來(lái)完成搶答部分,所需的元件較多且實(shí)際中實(shí)現(xiàn)鎖存功能時(shí)也比較繁瑣難實(shí)現(xiàn),所需器件都是純電子器件,沒有軟件的參與,不易擴(kuò)展和修改而且電路結(jié)構(gòu)復(fù)雜、調(diào)試?yán)щy,電子器件管腳很多,實(shí)際搭建起來(lái)費(fèi)時(shí)費(fèi)力,連電路容易出錯(cuò),再就是學(xué)院器材庫(kù)中并沒有NE555定時(shí)器、74LS375鎖存器以及自鎖開關(guān),找別的器材替換會(huì)導(dǎo)致電路連接更復(fù)雜。 方案三是選用了單片機(jī),該方案不需要軟件編程,只需要硬件電路不出錯(cuò)就可以實(shí)現(xiàn)需要的功能。但是電路結(jié)構(gòu)復(fù)雜,不利于調(diào)試,成本較高,實(shí)際接線的時(shí)候會(huì)因?qū)Ь連接混亂造成干擾和短路等故障,而且我們根本毫無(wú)頭緒。 方案四采用單片機(jī),體積小、價(jià)格低、應(yīng)用方便、穩(wěn)定可靠、單片機(jī)將很多任務(wù)交給軟件編程去實(shí)現(xiàn),大大簡(jiǎn)化了外圍硬件電路,使外圍電路的實(shí)現(xiàn)簡(jiǎn)單方便,電路所需的器件較少,電路連接簡(jiǎn)單化,調(diào)試更方便,布局美觀。然而目前對(duì)于單片機(jī)的編程還不熟悉,無(wú)法單獨(dú)實(shí)現(xiàn)。 經(jīng)過我們深思熟慮討論,決定采用效率更高、程序結(jié)構(gòu)化更清晰的方案一,完成基本和擴(kuò)展功能。用Proteus畫電路來(lái)進(jìn)行仿真調(diào)試,再進(jìn)行逐步改進(jìn)、調(diào)試好后連接電路。 2.3 相關(guān)核心模塊(技術(shù))介紹2.3.1并行接口芯片8255A8255A芯片具有24條輸入/輸出引腳、可編程的通用并行輸入/輸出接口電路。它是一片使用單一+5V電源的40腳雙列直插式大規(guī)模集成電路。8255A的通用性強(qiáng),使用靈活,通過它CPU可直接與外設(shè)相連接。 8255A在使用前要寫入一個(gè)方式控制字,選擇A、B、C三個(gè)端口各自的工作方式,共有三種; 方式0 :基本的輸入輸出方式,即無(wú)須聯(lián)絡(luò)就可以直接進(jìn)行的 I/O方式。其中A、B、C口的高四位或低四位可分別設(shè)置成輸入或輸出。 方式1 :選通I/O,此時(shí)接口和外圍設(shè)備需聯(lián)絡(luò)信號(hào)進(jìn)行協(xié)調(diào),只有A口和B口可以工作在方式1,此時(shí)C口的某些線被規(guī)定為A口或B口與外圍設(shè)備的聯(lián)絡(luò)信號(hào),余下的線只有基本的I/O功能,即只工作在方式0. 方式2: 雙向I/O方式,只有A口可以工作在這種方式,該I/O線即可輸入又可輸出,此時(shí)C口有5條線被規(guī)定為A口和外圍設(shè)備的雙向聯(lián)絡(luò)線,C口剩下的三條線可作為B口方式1的聯(lián)絡(luò)線,也可以和B口一起方式0的I/O線。 8255A是一個(gè)并行輸入、輸出器件,具有24個(gè)可編程設(shè)置的I/O口,包括3組8位的I/O為PA口、PB口、PC口,又可分為2組12位的I/O口:A組包括A口及C口高4位,B組包括B口及C組的低4位。8255A引腳圖如下所示:
圖1 8255A引腳圖 2.3.2中斷控制芯片8259A8259A是專門為了對(duì)8085A和8086/8088進(jìn)行中斷控制而設(shè)計(jì)的芯片,它是可以用程序控制的中斷控制器。單個(gè)的8259A能管理8級(jí)向量?jī)?yōu)先級(jí)中斷。在不增加其他電路的情況下,最多可以級(jí)聯(lián)成64級(jí)的向量?jī)?yōu)級(jí)中斷系統(tǒng)。8259A有多種工作方式,能用于各種系統(tǒng)。各種工作方式的設(shè)定是在初始化時(shí)通過軟件進(jìn)行的。 在總線控制器的控制下,8259A芯片可以處于編程狀態(tài)和操作狀態(tài),編程狀態(tài)是CPU使用IN或OUT指令對(duì)8259A芯片進(jìn)行初始化編程的狀態(tài)。 功能:就是在有多個(gè)中斷源的系統(tǒng)中,接受外部的中斷請(qǐng)求,并進(jìn)行判斷,選中當(dāng)前優(yōu)先級(jí)最高的中斷請(qǐng)求,再將此請(qǐng)求送到cpu的INTR端;當(dāng)cpu響應(yīng)中斷并進(jìn)入中斷子程序的處理過程后,中斷控制器仍負(fù)責(zé)對(duì)外部中斷請(qǐng)求的管理。 8259A的主要功能如下: ①一片8259A可以接受并管理8級(jí)可屏蔽中斷請(qǐng)求,通過8片8259A級(jí)聯(lián)可擴(kuò)展至63級(jí)可屏蔽中斷優(yōu)先控制。 ②對(duì)每一級(jí)中斷都可以通過程序來(lái)屏蔽或允許。 ③在中斷響應(yīng)周期,8259A可為CPU提供相應(yīng)的中斷類型碼。 ④具有多種工作方式,并可通過編程來(lái)加以選擇。 8259A引腳圖如下所示:
圖2 8259A引腳圖 2.3.3可編程定時(shí)芯片82538253芯片是可編程計(jì)數(shù)器/定時(shí)器。8253內(nèi)部有三個(gè)計(jì)數(shù)器,分別稱為計(jì)數(shù)器0、計(jì)數(shù)器1和計(jì)數(shù)器2,他們的機(jī)構(gòu)完全相同。每個(gè)計(jì)數(shù)器的輸入和輸出都決定于設(shè)置在控制寄存器中的控制字,互相之間工作完全獨(dú)立。每個(gè)計(jì)數(shù)器通過三個(gè)引腳和外部聯(lián)系,一個(gè)為時(shí)鐘輸入端CLK,一個(gè)為門控信號(hào)輸入端GATE,另一個(gè)為輸出端OUT。每個(gè)計(jì)數(shù)器內(nèi)部有一個(gè)8位的控制寄存器,還有一個(gè)16位的計(jì)數(shù)初值寄存器CR、一個(gè)計(jì)數(shù)執(zhí)行部件CE和一個(gè)輸出鎖存器OL。 本次實(shí)驗(yàn)8253作為定時(shí)器,作定時(shí)器時(shí), 計(jì)數(shù)器的初值即定時(shí)系數(shù)應(yīng)根據(jù)要求定時(shí)的時(shí)間進(jìn)行如下運(yùn)算才能得到: 定時(shí)系數(shù)=需要定時(shí)的時(shí)間/時(shí)鐘脈沖周期 ①設(shè)置通道:向方式控制字寄存器端口寫入方式選擇控制字,用于確定要設(shè)置的通道及工作方式; ②計(jì)數(shù)/定時(shí):向通道寫入計(jì)數(shù)值,啟動(dòng)計(jì)數(shù)操作; ③讀取當(dāng)前的計(jì)數(shù)值:向指定通道讀取當(dāng)前計(jì)數(shù)器值時(shí),8253將計(jì)數(shù)器值存入鎖存器,從鎖存器向外提供當(dāng)前的計(jì)數(shù)器值,計(jì)數(shù)器則繼續(xù)作計(jì)數(shù)操作。 ④計(jì)數(shù)到:當(dāng)計(jì)數(shù)器減1為0時(shí),通過引腳OUTi向外輸出“到”的脈沖信號(hào)。 計(jì)數(shù)初值輸入存放在初值寄存器中,計(jì)數(shù)開始或重裝入時(shí)被復(fù)制到計(jì)數(shù)器中。 鎖存器在非鎖存狀態(tài),其值隨計(jì)數(shù)器的變化而變化;一旦鎖存了計(jì)數(shù)器的當(dāng)前值,直到鎖存器值被讀取后才能解除鎖存狀態(tài)。
圖3 8253引腳圖
3 課題設(shè)計(jì)及實(shí)現(xiàn)3.1硬件設(shè)計(jì)3.1.1硬件設(shè)計(jì)原理本實(shí)驗(yàn)用到了兩個(gè)8255芯片,第一個(gè)8255芯片的PC0至PC7分別與數(shù)碼管的八個(gè)引腳相連,將8255芯片中需要顯示的信息通過C口送入數(shù)碼顯示區(qū),由顯示電路設(shè)計(jì)數(shù)碼管的亮滅顯示出來(lái)。8255芯片的PA0至PA7分別與4個(gè)撥碼開關(guān)相連,將四位選手的搶答信號(hào)(由撥碼開關(guān)控制)通過A口送入8255芯片。8255芯片的PB0口對(duì)應(yīng)準(zhǔn)備按鍵,PB3口對(duì)應(yīng)結(jié)束按鍵,PB5口對(duì)應(yīng)著開始計(jì)時(shí)按鍵,PB7口對(duì)應(yīng)著重置系統(tǒng)按鍵。將搶答開始和結(jié)束等信號(hào)(由開始按鍵和結(jié)束按鍵控制)通過B口送入8255芯片。第二個(gè)8255芯片的PB0至PB7通過74L373譯碼電路分別與兩個(gè)數(shù)碼管的八個(gè)引腳相連,將8253芯片中的計(jì)時(shí)方式通過芯片的B口入數(shù)碼顯示區(qū),由顯示電路設(shè)計(jì)數(shù)碼管的亮滅顯示出來(lái)。系統(tǒng)硬件原理圖如下圖所示:
圖4 系統(tǒng)硬件原理圖
3.1.2顯示選手電路設(shè)計(jì)本實(shí)驗(yàn)的其中一個(gè)8255芯片實(shí)現(xiàn)了數(shù)碼管的顯示、選手的搶答功能和主持人對(duì)本次搶答的控制。8255芯片工作在方式0,A端口與B端口輸入,C端口輸出。 8255芯片的A口與8個(gè)選手按鍵相連接,當(dāng)選手搶答成功時(shí),將選手號(hào)碼傳遞給芯片。而8255芯片的C口分別與數(shù)碼管的八個(gè)引腳相連,將A口傳遞過來(lái)的信息通過C口送入數(shù)碼顯示區(qū),由數(shù)碼管的亮滅顯示出來(lái)。顯示選手電路原理圖如下圖所示:
圖5 顯示選手電路原理圖
3.1.3計(jì)時(shí)電路設(shè)計(jì)本次試驗(yàn)的匯編程序中設(shè)立了一個(gè)flag變量(初始值為0H),當(dāng)程序掃描到有選手搶答后,flag加1,其他選手不能進(jìn)行搶答。此時(shí)等待主持人按下第一個(gè)8255芯片上的開始計(jì)時(shí)按鍵,若按下計(jì)時(shí)鍵,程序?qū)⑼ㄟ^8253芯片的計(jì)時(shí)功能將片選信號(hào)由第二個(gè)8255芯片的B口送入數(shù)碼顯示區(qū),可以從數(shù)碼管的亮滅顯示出來(lái)。計(jì)時(shí)電路原理圖如下圖所示:
圖6計(jì)時(shí)電路原理圖
3.1.4中斷電路設(shè)計(jì)當(dāng)主持人按下8255芯片上的結(jié)束按鍵或重置系統(tǒng)按鍵時(shí),8255芯片將中斷信號(hào)傳遞給8259芯片,搶答結(jié)束。中斷電路原理圖如下圖所示:
圖7 中斷電路原理圖
3.2 軟件設(shè)計(jì) 3.2.1 軟件設(shè)計(jì)程序流程圖
圖8 系統(tǒng)主程序流程圖 3.2.2 軟件設(shè)計(jì)程序代碼及分析
4 實(shí)習(xí)結(jié)果分析本次實(shí)習(xí)我們組是設(shè)計(jì)一個(gè)競(jìng)賽搶答器,能夠?qū)崿F(xiàn)搶答、計(jì)時(shí)以及顯示的功能。我們運(yùn)用兩個(gè)8255A芯片、一個(gè)8253芯片以及一個(gè)8259芯片來(lái)控制搶答過程的各項(xiàng)功能的實(shí)現(xiàn)。第一個(gè)8255A芯片A口控制搶答器的按鈕,B口控制準(zhǔn)備、關(guān)閉、暫停以及計(jì)時(shí)按鈕,C口控制一個(gè)7段數(shù)碼管,用來(lái)顯示搶答的號(hào)碼。第二個(gè)8255A芯片A口控制片選信號(hào),B口控制兩個(gè)7段數(shù)碼管用來(lái)顯示倒計(jì)時(shí)的時(shí)間,C口控制倒計(jì)時(shí)的開始和終止。8259芯片控制搶答器系統(tǒng)的中斷。 我們這個(gè)搶答器操作簡(jiǎn)單,用戶能夠很快的了解其功能,使用方便。仿真效果如下圖所示,開始仿真后如圖9所示。開始使用時(shí)只要按下準(zhǔn)備鍵,數(shù)碼管亮起“0”,如圖10所示,此時(shí)如果沒人搶答可按關(guān)閉鍵終止搶答回到如圖9時(shí)的狀態(tài),如果有人搶答就會(huì)在數(shù)碼管顯示所搶答選手的號(hào)碼,如圖11所示。有人搶答成功后便可以按下計(jì)時(shí)按鈕開始進(jìn)行30秒倒計(jì)時(shí),如圖12所示。在倒計(jì)時(shí)期間內(nèi),按下暫停按鈕可以終止倒計(jì)時(shí),之后重新按下準(zhǔn)備鍵就可以開始新一輪的搶答。
圖 9
圖 10
圖11
圖12
5 實(shí)習(xí)心得5.1 實(shí)習(xí)日記2017年6月19日-22日 十七周星期一至十七周星期四
| 卓長(zhǎng)強(qiáng)(組長(zhǎng)) | | | | | | | 網(wǎng)上查閱資料,構(gòu)思電路和主程序流程圖 | | | | | | |
2017年6月23日-30日 十七周星期五至十八周星期五
| | | | | | | | | | | | | 合并代碼段,運(yùn)行、仿真、調(diào)試及連線 | | | |
2017年7月3日-4日 十八周星期五至十九周星期二
5.2 心得體會(huì)本次實(shí)習(xí)是針對(duì)我們所學(xué)的知識(shí)完成一個(gè)搶答器的設(shè)計(jì),綜合應(yīng)用8255并行接口、8259中斷和8253定時(shí)器等學(xué)過的知識(shí)進(jìn)行設(shè)計(jì),在我們組員的共同努力下最終完成了這次實(shí)習(xí)任務(wù),搶答器能夠正常工作,實(shí)現(xiàn)了搶答、計(jì)時(shí)、重置等功能。 通過這次實(shí)習(xí),我對(duì)所學(xué)的知識(shí)掌握的更加透徹了,讓我更好的掌握了8259A、8255A、8253芯片的工作原理、方式及其應(yīng)用。在這次實(shí)習(xí)中我們也遇到了很多困難,但是在我們組員的互相協(xié)助下克服了一個(gè)個(gè)難題,這讓我們意識(shí)到了團(tuán)隊(duì)的重要性,在組員的團(tuán)結(jié)合作下,工作效率越來(lái)越高,很多問題都能迎刃而解,最終完成了搶答器的設(shè)計(jì)。此次設(shè)計(jì)中,我深刻的體會(huì)到了知識(shí)的重要性,還要求我們要善于思考。同時(shí)設(shè)計(jì)不能單純的考慮設(shè)計(jì)本身,要想到它是否切合實(shí)際,能否適用,我們的這個(gè)搶答器功能還不是很完善,但是也能很好實(shí)現(xiàn)搶答的功能,希望經(jīng)過進(jìn)一步的努力讓這個(gè)作品更加完美。 參 考 文 獻(xiàn)[1]仁向民·《微機(jī)接口技術(shù)實(shí)用教程》[M].北京:清華大學(xué)出版社 [2]周荷琴,吳秀清.微型計(jì)算機(jī)原理與接口技術(shù)[M].合肥:中國(guó)科學(xué)技術(shù)大學(xué)出版社,2008年6月. [3]張雪蘭、譚毓安·《匯編語(yǔ)言程序設(shè)計(jì)》[M].北京:清華大學(xué)出版社 [4]寧飛,王維華,孔宇.微型計(jì)算機(jī)原于是與接口實(shí)踐[M].北京:清華大學(xué)出版社,2006. [5]裘雪紅,李伯成,劉凱.微型計(jì)算機(jī)原理及接口技術(shù)[M].西安:西安電子科技大學(xué)出版社.2007年3月. [6]劉紅玲、邵曉根·《微機(jī)原理與接口技術(shù)》[M].北京:中國(guó)電力出版社
單片機(jī)源程序如下:
- ;...............................................設(shè)置各個(gè)芯片的端口
- C8255 EQU 306H ;0011 0000 0110b
- IPA EQU 300H ;0011 0000 0000b
- IPB EQU 302H ;0011 0000 0010b
- IPC EQU 304H ;0011 0000 0100b
-
- A8255 EQU 206H ;0010 0000 0110b
- APA EQU 200H ;0010 0000 0000b
- APB EQU 202H ;0010 0000 0010b
- APC EQU 204H ;0010 0000 0100b
-
- C8253 EQU 106H ;0001 0000 0110b
- CPA EQU 100H ;0001 0000 0000b
- CPB EQU 102H ;0001 0000 0010b
- CPC EQU 104H ;0001 0000 0100b
-
-
- code segment 'code' ;定義代碼段
- assume cs:code,ds:code
- ;.............................................偽指令(DB定義字節(jié),DW定義字)
- TEMP DB 100 DUP(11)
- LED DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
- HH DB 00H
- HL DB 00H
- LP DB 0H
- MS DW 0H
-
- main proc far
- start:
- mov ax,code ;建立DS段地址
- mov ds,ax
-
- ;寫中斷***************************************************
- cli;關(guān)中斷,防止有些硬件中斷對(duì)程序的干擾
- mov cx,100h
- ini:
- mov ax,0
- mov es,ax ; 附加段寄存器置0
- mov dx,cx
- dec dx
- shl dx,1
- shl dx,1
- mov si,dx ;設(shè)置中斷向量 源變址寄存器,用于存放源操作數(shù)的偏移地址
- mov ax,offset int0 ;取中斷號(hào)0的偏移地址
- ;stosw ;存入串指令的字操作
- mov es:[si],ax
- mov ax,cs ;seg int0
- ;stosw ;
- mov es:[si+2],ax
- loop ini
-
- ;初始化8259
- mov al,00010011b ;000 1 0 0 1 1 8086不用,標(biāo)志位,邊沿觸發(fā),8086不用,單級(jí)使用,需要設(shè)置ICW4
- mov dx,400H
- out dx,al
-
- mov al,060h ;01100 000 中斷類型號(hào)n的高5位 IR0
- mov dx,402h
- out dx,al
-
- mov al,1bh ;000 1 10 1 1 標(biāo)志位,特殊全嵌套方式,8259A為從片,AEOI自動(dòng)結(jié)束中斷,8086配置
- out dx,al
-
- MOV DX,402h
- MOV AL,00H ;OCW1,八個(gè)中斷全部開放
- OUT DX,AL
-
- MOV DX,400h
- MOV AL,60H ;OCW2,非特殊EOI結(jié)束中斷
- OUT DX,AL
- ;完成8259初始化
-
- mov al,cnt;控制操作次數(shù)
- mov dx,0600h
- out dx,al
- sti;開中斷,允許硬件中斷
- ;*********************************************************
-
-
- xor ax,ax
- mov es,ax
-
- mov ax,offset IT
- mov es:[8H],ax
-
- mov ax,seg IT
- mov es:[0AH],ax
-
- ;**********************************初始化C8255
- LL:
- cli
- mov dx,306H ;指向控制寄存器
- mov al,92h ;A口方式0輸入,B口方式0輸入,C口輸出
- out dx,al
- mov dx,304h;指向C口
- mov al,0FFh
- out dx,al;數(shù)碼管不亮
- ;**********************************程序初始化
- L:
- mov dx,302h;指向B口
- in al,dx;獲取B口內(nèi)容
- cmp al,0ffh;判斷是否什么都沒按
- jz L
- call delay10
- cmp al,011111110b ;判斷是不是按下準(zhǔn)備鍵
- jz L1;跳轉(zhuǎn)到開始段代碼
- jmp L
- ;**********************************復(fù)位()
- L3:
- mov dx,IPC;指向A8255C口
- mov al,011000000b
- out dx,al ;數(shù)碼管復(fù)位為0
-
- ;***********************************開始 數(shù)碼管顯示為0
- L1:
- mov dx,304h;指向C口
- mov al,0c0h
- mov flag,0;無(wú)人搶答
- nop;產(chǎn)生微小延遲
-
-
- ;***********************************初始化A8255并進(jìn)行按鍵檢測(cè)
- AGAIN:
- mov dx,0206h;指向A8255寄存器端口
- mov al,92h ;A口方式0輸入,B口方式0輸入,C口輸出
- out dx,al
- mov dx,0204h;指向C口
- mov al,0c0h;不可計(jì)時(shí)
- out dx,al
- mov dx,0302h;指向C8255的B口
- in al,dx;獲取內(nèi)容
- cmp al,7fh;判斷是否按了重置系統(tǒng)按鍵
- jz L3;跳到復(fù)位段
- cmp al,0F7h;判斷是否按了結(jié)束按鍵
- jz LL
-
- mov dx,0300h;指向C8255A端口
- in al,dx
- cmp al,0FFh;判斷是否沒有人搶答
- jz AGAIN
-
-
- call delay10 ;延時(shí)防抖動(dòng)
- in al,dx;將選手號(hào)賦給al
- cmp flag,1 ;按下鍵后,判斷flag是否為1
- jz AGAIN
-
- inc flag;flag加1,其他選手不能再按
- mov bx,0
- ;**********************************根據(jù)按下的值查表
- GKEY:
- mov ah,keydata[bx];查0-7數(shù)據(jù)表
- cmp al,ah;比較是否與選手號(hào)相同
- jz DISP;相同跳轉(zhuǎn)到DISP
- inc bl;不相同加1繼續(xù)比較
- LOOP GKEY
- ;**********************************再查表并顯示搶答的一組
- DISP:
- inc bl
- mov al,segdata[bx]
- mov dx,IPC;指向C8255C口
- not al
- out dx,al;數(shù)碼管輸出選手號(hào)
- mov tmp,al;將選手號(hào)賦給tmp(3fh)
- mov dx,IPB;指向C8255B口
- ;*********************************延時(shí)等待計(jì)時(shí)
- waits:
- call delay10
- in al,dx;獲取B口內(nèi)容
- cmp al,11011111b ;判斷是不是按下計(jì)時(shí)鍵
- jz L4;若按下計(jì)時(shí)鍵跳轉(zhuǎn)到L4
- jmp waits;等待按下計(jì)時(shí)鍵
- ;*********************************開始計(jì)時(shí),計(jì)時(shí)完跳回程序最初位置
- L4:
- ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- mov sxh,0
- mov sss,1
- ;*********************************初始化
- mov dx,A8255 ;選中控制寄存器
- mov al,80H ;命令字 10000000(A、B、C口輸出)
- out dx,al ;初始化A8255
-
- mov dx,C8253 ;00010110
- mov al,00010100B;通道0、只讀低字節(jié)、方式2(二進(jìn)制)
- out dx,al ;初始化8253
-
- mov ax,03E8H ;十進(jìn)制為1000
-
- mov dx,CPA ;指向8253通道0
- mov al,0H
- out dx,al
-
- mov dx,C8253 ;001000 *****
- mov al,00100100B;通道0、只讀高字節(jié)、方式2
- out dx,al
-
- mov dx,CPA ;指向8253通道0
- mov al,ah
- out dx,al
-
- mov dx,APC ; 指向A8255C口
- mov al,00010000B;與8253的start連接,開始計(jì)時(shí)
- out dx,al
- mov HH,00H;第二位計(jì)時(shí)器初值
- mov HL,03H;第一位計(jì)時(shí)器初值
- sti;打開中斷
- ;********************************初始賦值
- LOP1:
- mov ah,00000010B;連接第二個(gè)計(jì)時(shí)器
- mov LP,0
- ;********************************數(shù)碼管計(jì)數(shù)的顯示
- LSP:
-
- mov bx,offset HH
- mov al,LP
- xlat
- mov bx,offset LED;數(shù)碼管數(shù)據(jù)表首地址
- xlat ;查表,AL<-(BX+AL)
-
- mov dx,APB ; 指向A8255B口
- out dx,al ;輸出數(shù)據(jù)
-
- mov dx,APA ; 指向A8255A口
- mov al,ah;(00000010B)與SB1數(shù)碼管相連
- out dx,al
-
- mov dx,APA ;指向A8255A口
- mov al,0H
- out dx,al
-
-
- shr ah,1;向右移1(00000001B)
- inc LP
-
- cmp ah,0H
- jz LOP1
- loop LSP
- ;.....................................結(jié)束計(jì)時(shí)
- ire:
- mov dx,APC;指向A8255C口
- mov al,0
- out dx,al;結(jié)束與8253的連接
-
- mov sss,0
- ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- jmp LL
- ;********************************延時(shí)循環(huán)
- ;loop1:
- ;loop $
- ;loop AGAIN
- ret
- main endp
-
-
- IT proc
- cli;關(guān)閉中斷
- ;********************************計(jì)時(shí)100ms
- inc MS;初始為0H
- cmp MS,200H;調(diào)節(jié)時(shí)間快慢
- jne re;相等跳轉(zhuǎn)(打開中斷)
- mov MS,0H
- jmp ad
- ;********************************秒的第二位減為0時(shí)重新賦值為9
- init:
- mov HH,0aH;第二位計(jì)時(shí)器變?yōu)?
- DEC HL;第一位計(jì)時(shí)器減1
- jmp ad
- ;*******************************倒計(jì)時(shí)計(jì)數(shù) C8255實(shí)時(shí)顯示搶答組號(hào)
- ad:
- push dx
- push ax
- push bx
- push cx
- mov dx,C8255 ;0111 0000 0000b,8255A控制端口地址
- mov al,92H ;10010010b,方式選擇字:PA,PB輸入、PC輸出
- out dx,al
-
- mov al,tmp
- mov dx,IPC;指向C8255C口
- out dx,al;輸出選手號(hào)
-
- pop cx
- pop bx
- pop ax
- pop dx
- out dx,al
- mov dx,IPB;指向C8255B口
- in al,dx;獲取內(nèi)容
- cmp al,7fh;判斷是否按重置系統(tǒng)鍵
- jz start;回到start
-
- cmp sxh,01h
- jnz FH
- RES:
- mov HH,0
- mov HL,0
- mov cx,0
-
- FH:
- cmp HL,0;比較第一位計(jì)時(shí)器是否為0(初始為3)
- JZ out1;若為0跳轉(zhuǎn)到out1
- cmp HH,0;比較第二位計(jì)時(shí)器是否為0
- jz init;第二位計(jì)時(shí)器變?yōu)?,第一位計(jì)時(shí)器減一(數(shù)碼管輸出)
- jmp oend
- ;******************************計(jì)數(shù)判斷以及跳轉(zhuǎn)
- oend:
- DEC HH ;第二位計(jì)時(shí)器減一
- cmp HH,00H
- jne re
- cmp HL,00H;判斷第一位計(jì)時(shí)器是否為0
- jz out2
- cmp HL,00H
- jz re
- jmp re
- out1:
- cmp HH,0;判斷第二位計(jì)時(shí)器是否為0
- jnz oend;不為0跳轉(zhuǎn)oend
- jmp ire;若為0結(jié)束計(jì)時(shí)
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
完整的word格式實(shí)驗(yàn)報(bào)告文檔51黑下載地址(內(nèi)含清晰圖片與完整程序):
競(jìng)賽搶答器設(shè)計(jì).doc
(1.67 MB, 下載次數(shù): 181)
2018-1-3 09:15 上傳
點(diǎn)擊文件名下載附件
|