版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、PAGE -PAGE . z.課 程 設(shè) 計(jì)題 目8086按鍵控制流水燈設(shè)計(jì)學(xué) 院機(jī)電工程學(xué)院專 業(yè)自動(dòng)化班 級自動(dòng)化姓 名指導(dǎo)教師2016年6月30日-. z.引 言微型計(jì)算機(jī)簡稱微機(jī),由于具備人腦*些功能,所有又叫做微機(jī)。是由大規(guī)模集成電路組成的、體積較小的電子計(jì)算機(jī)。它是以微處理器為根底,配以內(nèi)存儲(chǔ)器及輸入輸出接口電路和相應(yīng)的輔助電路構(gòu)成的裸機(jī)。把微型計(jì)算機(jī)集成在一個(gè)芯片上即構(gòu)成單片微型計(jì)算機(jī)。學(xué)習(xí)微機(jī)原理與接口技術(shù),主要內(nèi)容包括微型計(jì)算機(jī)體系構(gòu)造、8086微處理器和指令系統(tǒng)、匯編語言、設(shè)計(jì)以及微型計(jì)算機(jī)各個(gè)組成局部,而其中很大一塊就是匯編語言的學(xué)習(xí)。匯編語言是面向機(jī)器的程序設(shè)計(jì)語言,也
2、是利用計(jì)算機(jī)所有硬件特性并能直接控制硬件的語言。用匯編語言編寫的程序由于目標(biāo)程序占用內(nèi)存少,運(yùn)行速度快,它有著高級語言不可替代的用途。因此,學(xué)習(xí)匯編語言是很必要的,通過學(xué)習(xí)匯編語言可以體會(huì)它的作用。通過本次課程設(shè)計(jì)讓我們進(jìn)一步深入?yún)R編語言的學(xué)習(xí),掌握簡單的接口設(shè)計(jì)技術(shù),將理論知識(shí)聯(lián)系實(shí)際,進(jìn)一步學(xué)習(xí)微機(jī)原理與接口技術(shù)的相關(guān)知識(shí),為以后深入學(xué)習(xí)打下良好的根底。1總體方案論證1.1功能分析此次課程設(shè)計(jì)的要求為,設(shè)計(jì)微型計(jì)算機(jī)最小系統(tǒng),實(shí)現(xiàn)跑馬燈的模擬顯示功能。具體要求為:1、輸入設(shè)備三個(gè)啟動(dòng)按鈕、一個(gè)停頓按鈕,輸出設(shè)備為八個(gè)跑馬燈;2、三個(gè)啟動(dòng)按鈕對應(yīng)三種跑馬燈顯示效果,按下任意一個(gè)啟動(dòng)按鈕,跑馬
3、燈顯示對應(yīng)的效果,按下停頓按鈕則跑馬燈全部熄滅。由上分析可知,我們的硬件的電路需要另行搭建,電路中需包含四個(gè)按鈕和八個(gè)跑馬燈以及相關(guān)芯片,既有輸入設(shè)備又有輸出設(shè)備,經(jīng)過分析可以使用芯片8255A來實(shí)現(xiàn)輸入與輸出,再加上鎖存地址芯片74LS273、譯碼芯片74LS154以及相關(guān)門電路即可構(gòu)本錢設(shè)計(jì)的硬件電路根底。進(jìn)一步分析最終決定用8255A的A口作為輸出去控制跑馬燈,B口作為按鈕信號(hào)輸入,CPU通過接收輸入信號(hào)從而發(fā)出對應(yīng)命令去控制8255A芯片A口輸出,從而A口輸出相應(yīng)電平控制跑馬燈有規(guī)律的亮滅。連接好硬件電路后的主要任務(wù)就是編寫相應(yīng)程序,通過程序去控制和調(diào)度硬件電路的輸入與輸出。1.2系統(tǒng)
4、連接圖設(shè)計(jì)8255A是一種通過可編程并行I/O接口芯片。廣泛用于幾乎所有系列的微機(jī)系統(tǒng)中,8255A具有三個(gè)帶鎖存或緩沖的數(shù)據(jù)端口,可與外設(shè)并行進(jìn)展數(shù)據(jù)交換,8255A有多種操作方式,通用性較強(qiáng),可為CPU與外設(shè)之間提供輸入/輸出通道。8255A和各端口內(nèi)具有中斷控制邏輯,在外設(shè)與CPU之間可用中斷方式進(jìn)展信息交換,使用條件傳輸方式時(shí)可用聯(lián)絡(luò)線進(jìn)展控制。在本次課程設(shè)計(jì)中,我們運(yùn)用8255A為CPU與外設(shè)之間提供輸入輸出輸出通道來實(shí)現(xiàn)對跑馬燈把戲變換的控制。8086微處理器,選擇最小工作模式,所有的總線控制信號(hào)均由8086產(chǎn)生;8086CPU的地址數(shù)據(jù)總線AD15-AD0和地址狀態(tài)總線A16/S
5、3-A19/S6是復(fù)用的,必須通過地址鎖存器把地址總線和數(shù)據(jù)總線別離。跑馬燈硬件電路如圖1所示。電路包括8個(gè)LED彩燈、三片74LS273、一片74LS154、一片8086CPU、一片8255A以及假設(shè)干導(dǎo)線和電阻。用LED可以觀測在不同按鍵輸入下,跑馬燈把戲的變化效果。如圖1所示我們利用啟動(dòng)按鈕作為輸入信號(hào),通過8255A端口擴(kuò)展芯片,調(diào)節(jié)輸出端口的電平變化,來控制共陽極的LED燈的亮與滅,實(shí)現(xiàn)跑馬燈不同的把戲變化。圖1 跑馬燈硬件電路圖鎖存控制電路鎖存控制電路電路如圖2所示,在微控制器單元MCU中,存放器是十分重要的資源。存放器的主要作用是快速存放算術(shù)邏輯運(yùn)算單元ALU運(yùn)算過程中的數(shù)據(jù),其
6、鎖存功能利用74LS273來實(shí)現(xiàn),74LS273是一種帶去除功能的8D觸發(fā)器, 1D8D為數(shù)據(jù)輸入端,1Q8Q為數(shù)據(jù)輸出端,正脈沖觸發(fā),低電平去除,常用作數(shù)據(jù)鎖存器,地址鎖存器。D0D7:輸入,Q0Q7:輸出;第一腳WR:主去除端,低電平觸發(fā),即當(dāng)為低電平時(shí),芯片被去除,輸出全為0低電平;CPCLK:觸發(fā)端,上升沿觸發(fā),即當(dāng)CP從低到高電平時(shí),D0D7的數(shù)據(jù)通過芯片,為0時(shí)將數(shù)據(jù)鎖存,D0D7的數(shù)據(jù)不變。CPU向外部發(fā)出地址鎖存允許信號(hào),從而使74LS273鎖存地址信號(hào),在通過譯碼芯片74LS154控制接口芯片8255A,在此系統(tǒng)中充當(dāng)一個(gè)橋梁的作用。這局部電路將相應(yīng)信號(hào)傳送給8255A的A0
7、、A1和CS片選,進(jìn)而CPU開場控制8255A從而驅(qū)動(dòng)發(fā)光二極管顯示不同的樣式。圖2 鎖存控制電路可編程并行通信接口芯片8255A芯片8255A有三種工作方式,他們分別是方式0、方式1、方式2,電路如圖3所示。方式0為簡單I/O,查詢方式,端口A、端口B、端口C均可使用;方式1為選通I/O,中斷方式,端口A、端口B可以使用,選通的輸入/輸出方式;方式2為雙向I/O,中斷方式,只有端口A可以使用,雙向的傳輸方式。方式0也叫根本輸入/輸出方式。一種方式,不需要應(yīng)答聯(lián)絡(luò)信號(hào),端口A、端口B和端口C的高4位及低4位都可以作為輸入或輸出端口。方式0的應(yīng)用場合有無條件傳送和查詢傳送2種; 故根據(jù)我們系統(tǒng)設(shè)
8、計(jì)的要求,綜上可知,選擇8255A為工作方式0,A口作為輸出、B口作為輸入。8255A的3種根本工作方式由方式控制字來決定,D71特征位說明是設(shè)定方式選擇控制字;D7=0,則表示是端口C按位置位/復(fù)位控制字。端口C分成高4位(PC7PC4)和低4位(PC3PC0),可分別設(shè)置成輸入端口或輸出端口;端口C的高4位與端口A配合組成A組,端口C的低4位與端口B配合組成B組。綜上可得此系統(tǒng)需要滿足A端口為輸出,輸出數(shù)據(jù)給到8個(gè)LED彩燈;端口B為輸入,需要檢測按鍵的輸入情況。圖3 芯片8255A接口電路1.3算法說明本程序涉及芯片8255A的初始化,因此首先需要確定端口地址,CPU向8255A送出方式
9、控制字,進(jìn)而8255A的A口作為輸出、B口作為輸入;定義控制LED燈的相應(yīng)數(shù)據(jù)段,由于需要LED亮后持續(xù)一段時(shí)間這就需要一個(gè)相應(yīng)的延時(shí)程序片段,需要確定B口那個(gè)按鈕開關(guān)按下,這就需要一個(gè)掃描B口開關(guān)按下的子程序,從而CPU發(fā)出相應(yīng)控制等操作給A口送出相應(yīng)電平,LED顯示相應(yīng)的亮滅。因此,主要要點(diǎn)就是找對端口地址,這個(gè)是程序能夠運(yùn)行的必需品,通過分析硬件線路可以正確找到A口、B口以及控制口的地址。2程序流程圖設(shè)計(jì)及其說明主程序流程圖如圖4所示:初始化程序開場送控制字通過A口輸出使燈全滅調(diào)用ledflash子程序圖4 主程序流程圖檢測按鍵延時(shí)控制LED子程序流程圖如圖5所示:開場檢測B口信號(hào)輸入是
10、否為按鍵1是否為按鍵2是否為按鍵3將1型走馬燈的偏移地址送給SI將2型走馬燈的偏移地址送給SI將3型走馬燈的偏移地址送給SI是否終止開關(guān)Num是否為0延時(shí)YYYYYNNNNN完畢圖5 子程序流程圖3關(guān)鍵程序段落說明3.1數(shù)據(jù)段定義dseg segmentnum dw 0 data1 db 0FEh,0FCh,0F8h,0F0h,0E0h,0C0h,80h,00h,00hdata2 db 00h,00h,0FFh,00h,0FFh,00h,0FFh,00h,80h,0C0h,0E0h,0F0h,0F8h,0FCh,0FEh,0FFhdata3 db7Eh,3Ch,18h,00h,0FFh,00h
11、,0FFh,00h,0FFh,00h,18h,3Ch,7Eh,0FFhdseg ends三種燈光變幻組合為:第一種為每隔1s依次亮起8個(gè)燈后保持2s然后全部熄滅第二種為8個(gè)燈全亮2s后閃爍3次,然后依次熄滅第三種為每個(gè)1s從兩頭同時(shí)依次亮起即先亮1、8,然后2、7,然后3、6,然后4、5,8個(gè)燈全部亮起后閃爍3次,然后向兩頭依次熄滅dw為燈光循環(huán)的控制次數(shù)。3.2程序初始化cseg segment para public codeassume ss:sseg,cs:cseg,ds:dseg start: mov a*,dseg mov ds,a*初始化程序。3.3芯片初始化mov d*,020
12、6h ;取8255A的控制端口的地址mov al,82h ;初始化8255A的A口為輸出模式,B口為輸入模式out d*,al 82h即為10000010b,也就是說將A口定義在方式0下并且作為輸出,B口定義在方式0下并且作為輸入,因此這個(gè)方式控制字不是唯一的,其通用形式為1000*01*,C口沒有定義故可以為任意二進(jìn)制數(shù)。mov d*,0200h ;取8255的端口A的地址mov al,0FFh ;使8255的PA0-PA7全為1out d*,al 上邊這個(gè)程序段是往外送數(shù)據(jù)置LED亮滅的。mov d*,0202h ;取8255的端口B的地址in al,d* ;檢測B口輸入信號(hào)這個(gè)是將B口開
13、關(guān)閉合信息讀回來的,從而發(fā)出相應(yīng)控制命令。3.4初始LED亮滅狀態(tài)mov d*,0200h ;取8255的端口A的地址mov al,0FFh ;使8255的PA0-PA7全為1out d*,al ;使所有的燈LED全滅電路上電工作后首先要使所有的LED燈全滅,防止對后面的顯示造成影響。3.5檢測按鍵開關(guān)子程序ledflash proc ;檢測開關(guān)閉合,以便確定哪種閃爍方式mov d*,0202h ;取8255A的端口B的地址in al,d* ;檢測B口輸入信號(hào)choice1: cmp al,0feh jne choice2 mov si,offset data1 ;置第一種燈光變幻組合jmp
14、herechoice2: cmp al,0fdh jne choice3 mov si,offset data2 ;置第二種燈光變幻組合 jmp herechoice3: cmp al,0fbh jne choice4 mov si,offset data3 ;置第三種燈光變幻組合 jmp here choice4: ;每盞燈亮完檢測開關(guān),如果停頓開關(guān)沒有按下跳到choice5,如果停頓開關(guān)按下燈全滅 cmp al,0f7h jne choice5 jmp e*utchoice5: cmp num,0h;檢測num是否為0,假設(shè)為0掃描開關(guān),假設(shè)不為0繼續(xù)執(zhí)行 jne here jmp led
15、flash here: mov b*,num mov al,si+b* mov d*,0200h ;取8255的端口A的地址out d*,al ;輸出加電數(shù)據(jù)到端口A inc num ;改變數(shù)字變量的值cmp num,09h je e*it mov c*,005fh dl4: mov b*,00ffhdl3: dec b*jnz dl3 dec c* jnz dl4jmp ledflashe*it: mov num,0 retledflash endp檢測到開關(guān)閉合置相應(yīng)燈光變換。3.6延時(shí)程序片段mov c*,04c9h dl4: mov b*,04c9hdl3: dec b* jnz dl
16、3 dec c* jnz dl4通過雙層循環(huán)從而實(shí)現(xiàn)軟件延時(shí),延時(shí)計(jì)算公式為(c*)*(b*)/f,f為CPU的頻率,CPU頻率為1500kHz,可以計(jì)算得到程序大致延時(shí)為1s。3.7燈光變換控制here: mov b*,num mov al,si+b* mov d*,0200h ;取8255的端口A的地址 out d*,al ;輸出加電數(shù)據(jù)到端口A inc num ;改變數(shù)字變量的值 cmp num,09h je e*it通過指針移動(dòng),逐個(gè)選中相應(yīng)的數(shù)據(jù)置相應(yīng)的燈光變換,共八種即一輪LED顯示完成。4程序調(diào)試說明1、內(nèi)存空間分配,匯編語言的重要特點(diǎn)之一是能夠直接利用機(jī)器指令或者偽指令為數(shù)據(jù)或
17、者代碼程序分配內(nèi)存空間,86系列如8086微處理器的存儲(chǔ)器構(gòu)造是分段的,有代碼段,數(shù)據(jù)段,堆棧段或附加段,在程序設(shè)計(jì)時(shí)要充分考慮分段構(gòu)造,要執(zhí)行的程序段應(yīng)設(shè)在當(dāng)前段活動(dòng)段中;分配內(nèi)存空間:直接在proteus里面將8086CPU的internal memory size設(shè)置成一個(gè)足夠用的空間大小,如0*1000,默認(rèn)的空間大小是0*00000,如不改則仿真不成功。程序在運(yùn)行時(shí)所需要的工作單元應(yīng)盡可能的設(shè)在CPU存放器中,這樣存取速度快,而且操作方便;在此系統(tǒng)源程序中都采用8086CPU的全部通用存放器:累加器A*,基數(shù)存放器B*,基數(shù)存放器C*,數(shù)據(jù)存放器D*;和堆棧指針存放器SI。2、調(diào)試過
18、程中出現(xiàn)了問題,UNKOWN 2-BYTE OPCODE AT 1010:0192(E*TRA PART IS DEPOSED)!FE07.檢查了無數(shù)次后無果,憑我目前的能力并無法解決。3、8255A隱藏引腳問題,需要設(shè)置芯片Hidden Pins里的GND改為VSS,4、程序一開場是將延時(shí)環(huán)節(jié)作為一個(gè)獨(dú)立子程序,運(yùn)行過程中由于局部情況下不滿足題設(shè),故將延時(shí)子程序改為程序段落寫到檢測按鍵的子程序中問題得以解決。5結(jié)果記錄及分析無數(shù)次的失敗之后我并沒有得到想要的結(jié)果,為此我請教了已經(jīng)就業(yè)的親戚,也沒能徹底解決問題。最終我選擇將我的所有目前成果上交,雖然沒能運(yùn)行到最后一步,但我確實(shí)沒有更多的時(shí)間去
19、改變。希望教師看到我的作業(yè)能夠給我提出建議并改正我的錯(cuò)誤,在此感謝!-. z.附 錄程序清單sseg segment dw 200 dup ()sseg endsdseg segmentnum dw 0 ;初始化數(shù)字變量為0;3種不同的燈光變幻組合data1 db 0FEh,0FCh,0F8h,0F0h,0E0h,0C0h,80h,00h,00hdata2 db 00h,00h,0FFh,00h,0FFh,00h,0FFh,00h,80h,0C0h,0E0h,0F0h,0F8h,0FCh,0FEh,0FFhdata3 db7Eh,3Ch,18h,00h,0FFh,00h,0FFh,00h,0F
20、Fh,00h,18h,3Ch,7Eh,0FFhdseg endscseg segment para public code assume ss:sseg,cs:cseg,ds:dseg start: mov a*,dseg mov ds,a* mov d*,0206h ;取8255的控制端口的地址 mov al,82h ;初始化8255的A口為輸出模式,B口為輸入模式 out d*,al e*ut: mov num,0h mov d*,0200h ;取8255的端口A的地址 mov al,0FFh ;使8255的PA0-PA7全為1 out d*,al ;使所有的燈LED全滅begin: call ledflash ;調(diào)用燈光變幻過程 jmp e*it ledflash proc ;檢測開關(guān)閉合
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度環(huán)保技術(shù)研發(fā)采購追加合同3篇
- 2025年度新型農(nóng)業(yè)科技場咨詢服務(wù)合同范本4篇
- 2025年度住宅窗戶安全性能提升改造合同4篇
- 2024渣土運(yùn)輸車加盟合同規(guī)范樣本3篇
- 2025年度智能汽車生產(chǎn)線廠房租賃合同3篇
- 2025年度市政綠化帶除草承包服務(wù)協(xié)議4篇
- 2025年度智能安防產(chǎn)品全國代理權(quán)授權(quán)合同范本4篇
- 2025年度水電工程合同履約保證金管理協(xié)議書范本4篇
- 2025年度智能凈水系統(tǒng)安裝與維護(hù)服務(wù)合同范本4篇
- 2025年度智能家居系統(tǒng)安裝與售后服務(wù)合同6篇
- 醫(yī)療糾紛預(yù)防和處理?xiàng)l例通用課件
- 廚邦醬油推廣方案
- 乳腺癌診療指南(2024年版)
- 高三數(shù)學(xué)寒假作業(yè)1
- 保險(xiǎn)產(chǎn)品創(chuàng)新與市場定位培訓(xùn)課件
- (完整文本版)體檢報(bào)告單模版
- 1例左舌鱗癌手術(shù)患者的圍手術(shù)期護(hù)理體會(huì)
- (完整)100道兩位數(shù)加減兩位數(shù)口算題(難)
- 鋼結(jié)構(gòu)牛腿計(jì)算
- 2023-2024學(xué)年重慶市兩江新區(qū)四上數(shù)學(xué)期末質(zhì)量檢測試題含答案
- 體外診斷試劑工作校準(zhǔn)品產(chǎn)品校準(zhǔn)品互換性(基質(zhì)效應(yīng))Excel計(jì)算模板
評論
0/150
提交評論