微機原理基于PROTEUS的跑馬燈系統(tǒng)設(shè)計及仿真_第1頁
微機原理基于PROTEUS的跑馬燈系統(tǒng)設(shè)計及仿真_第2頁
微機原理基于PROTEUS的跑馬燈系統(tǒng)設(shè)計及仿真_第3頁
微機原理基于PROTEUS的跑馬燈系統(tǒng)設(shè)計及仿真_第4頁
微機原理基于PROTEUS的跑馬燈系統(tǒng)設(shè)計及仿真_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE.PAGE.學(xué)號:課程設(shè)計題目基于PROTEUS的跑馬燈系統(tǒng)設(shè)計及仿真學(xué)院自動化學(xué)院專業(yè)自動化班級姓名指導(dǎo)教師2012年1月12日任務(wù)書目錄引言11總體方案論證21.1功能分析21.2系統(tǒng)連接圖設(shè)計2鎖存控制電路5可編程并行通信接口芯片8255A62程序流程圖設(shè)計及其說明93關(guān)鍵程序段落說明113.1數(shù)據(jù)段定義113.2程序初始化113.3芯片初始化123.4初始LED亮滅狀態(tài)123.5檢測按鍵開關(guān)子程序123.6延時程序片段143.7燈光變換控制154程序調(diào)試說明165結(jié)果記錄及分析17心得體會19參考文獻20..引言微型計算機簡稱微機,由于具備人腦某些功能,所有又叫做微機。是由大規(guī)模集成電路組成的、體積較小的電子計算機。它是以微處理器為根底,配以存儲器及輸入輸出接口電路和相應(yīng)的輔助電路構(gòu)成的裸機。把微型計算機集成在一個芯片上即構(gòu)成單片微型計算機。學(xué)習微機原理與接口技術(shù),主要容包括微型計算機體系構(gòu)造、8086微處理器和指令系統(tǒng)、匯編語言、設(shè)計以及微型計算機各個組成局部,而其中很大一塊就是匯編語言的學(xué)習。匯編語言是面向機器的程序設(shè)計語言,也是利用計算機所有硬件特性并能直接控制硬件的語言。用匯編語言編寫的程序由于目標程序占用存少,運行速度快,它有著高級語言不可替代的用途。因此,學(xué)習匯編語言是很必要的,通過學(xué)習匯編語言可以體會它的作用。通過本次課程設(shè)計讓我們進一步深入?yún)R編語言的學(xué)習,掌握簡單的接口設(shè)計技術(shù),將理論知識聯(lián)系實際,進一步學(xué)習微機原理與接口技術(shù)的相關(guān)知識,為以后深入學(xué)習打下良好的根底。1總體方案論證1.1功能分析此次課程設(shè)計的要求為,設(shè)計微型計算機最小系統(tǒng),實現(xiàn)跑馬燈的模擬顯示功能。具體要求為:〔1〕、輸入設(shè)備三個啟動按鈕、一個停頓按鈕,輸出設(shè)備為八個跑馬燈;〔2〕、三個啟動按鈕對應(yīng)三種跑馬燈顯示效果,按下任意一個啟動按鈕,跑馬燈顯示對應(yīng)的效果,按下停頓按鈕那么跑馬燈全部熄滅。由上分析可知,我們的硬件的電路需要另行搭建,電路中需包含四個按鈕和八個跑馬燈以及相關(guān)芯片,既有輸入設(shè)備又有輸出設(shè)備,經(jīng)過分析可以使用芯片8255A來實現(xiàn)輸入與輸出,再加上鎖存地址芯片74LS273、譯碼芯片74LS154以及相關(guān)門電路即可構(gòu)本錢設(shè)計的硬件電路根底。進一步分析最終決定用8255A的A口作為輸出去控制跑馬燈,B口作為按鈕信號輸入,CPU通過接收輸入信號從而發(fā)出對應(yīng)命令去控制8255A芯片A口輸出,從而A口輸出相應(yīng)電平控制跑馬燈有規(guī)律的亮滅。連接好硬件電路后的主要任務(wù)就是編寫相應(yīng)程序,通過程序去控制和調(diào)度硬件電路的輸入與輸出。1.2系統(tǒng)連接圖設(shè)計8255A是一種通過可編程并行I/O接口芯片。廣泛用于幾乎所有系列的微機系統(tǒng)中,8255A具有三個帶鎖存或緩沖的數(shù)據(jù)端口,可與外設(shè)并行進展數(shù)據(jù)交換,8255A有多種操作方式,通用性較強,可為CPU與外設(shè)之間提供輸入/輸出通道。8255A和各端口具有中斷控制邏輯,在外設(shè)與CPU之間可用中斷方式進展信息交換,使用條件傳輸方式時可用"聯(lián)絡(luò)〞線進展控制。在本次課程設(shè)計中,我們運用8255A為CPU與外設(shè)之間提供輸入輸出輸出通道來實現(xiàn)對跑馬燈把戲變換的控制。8086微處理器,選擇最小工作模式,所有的總線控制信號均由8086產(chǎn)生;8086CPU的地址\數(shù)據(jù)總線AD15-AD0和地址\狀態(tài)總線A16/S3-A19/S6是復(fù)用的,必須通過地址鎖存器把地址總線和數(shù)據(jù)總線別離。跑馬燈硬件電路如圖1所示。電路包括8個LED彩燈、三片74LS273、一片74LS154、一片8086CPU、一片8255A以及假設(shè)干導(dǎo)線和電阻。用LED可以觀測在不同按鍵輸入下,跑馬燈把戲的變化效果。如圖1所示我們利用啟動按鈕作為輸入信號,通過8255A端口擴展芯片,調(diào)節(jié)輸出端口的電平變化,來控制共陽極的LED燈的亮與滅,實現(xiàn)跑馬燈不同的把戲變化。圖1跑馬燈硬件電路圖1.2.1鎖存控制電路鎖存控制電路電路如圖2所示,在微控制器單元〔MCU〕中,存放器是十分重要的資源。存放器的主要作用是快速存放算術(shù)邏輯運算單元〔ALU〕運算過程中的數(shù)據(jù),其鎖存功能利用74LS273來實現(xiàn),74LS273是一種帶去除功能的8D觸發(fā)器,1D~8D為數(shù)據(jù)輸入端,1Q~8Q為數(shù)據(jù)輸出端,正脈沖觸發(fā),低電平去除,常用作數(shù)據(jù)鎖存器,地址鎖存器。D0~D7:輸入,Q0~Q7:輸出;第一腳WR:主去除端,低電平觸發(fā),即當為低電平時,芯片被去除,輸出全為0〔低電平〕;CP〔CLK〕:觸發(fā)端,上升沿觸發(fā),即當CP從低到高電平時,D0~D7的數(shù)據(jù)通過芯片,為0時將數(shù)據(jù)鎖存,D0~D7的數(shù)據(jù)不變。CPU向外部發(fā)出地址鎖存允許信號,從而使74LS273鎖存地址信號,在通過譯碼芯片74LS154控制接口芯片8255A,在此系統(tǒng)中充當一個橋梁的作用。這局部電路將相應(yīng)信號傳送給8255A的A0、A1和CS片選,進而CPU開場控制8255A從而驅(qū)動發(fā)光二極管顯示不同的樣式。圖2鎖存控制電路1.2.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ò)信號,端口A、端口B和端口C的高4位及低4位都可以作為輸入或輸出端口。方式0的應(yīng)用場合有無條件傳送和查詢傳送2種;故根據(jù)我們系統(tǒng)設(shè)計的要求,綜上可知,選擇8255A為工作方式0,A口作為輸出、B口作為輸入。8255A的3種根本工作方式由方式控制字來決定,D7=1〔特征位〕說明是設(shè)定方式選擇控制字;D7=0,那么表示是端口C按位置位/復(fù)位控制字。端口C分成高4位(PC7~PC4)和低4位(PC3~PC0),可分別設(shè)置成輸入端口或輸出端口;端口C的高4位與端口A配合組成A組,端口C的低4位與端口B配合組成B組。綜上可得此系統(tǒng)需要滿足A端口為輸出,輸出數(shù)據(jù)給到8個LED彩燈;端口B為輸入,需要檢測按鍵的輸入情況。圖3芯片8255A接口電路1.3算法說明本程序涉及芯片8255A的初始化,因此首先需要確定端口地址,CPU向8255A送出方式控制字,進而8255A的A口作為輸出、B口作為輸入;定義控制LED燈的相應(yīng)數(shù)據(jù)段,由于需要LED亮后持續(xù)一段時間這就需要一個相應(yīng)的延時程序片段,需要確定B口那個按鈕開關(guān)按下,這就需要一個掃描B口開關(guān)按下的子程序,從而CPU發(fā)出相應(yīng)控制等操作給A口送出相應(yīng)電平,LED顯示相應(yīng)的亮滅。因此,主要要點就是找對端口地址,這個是程序能夠運行的必需品,通過分析硬件線路可以正確找到A口、B口以及控制口的地址。2程序流程圖設(shè)計及其說明主程序流程圖如圖4所示:初始化程序開場初始化程序開場送控制字通過A口輸出使燈全滅調(diào)用ledflash子程序檢測按鍵延時控制LED子程序流程圖如圖5所示:開場開場檢測B口信號輸入是否為按鍵1是否為按鍵2是否為按鍵3將1型走馬燈的偏移地址送給SI將2型走馬燈的偏移地址送給SI將3型走馬燈的偏移地址送給SI是否終止開關(guān)Num是否為0延時YYYYYNNNNN完畢圖5子程序流程圖3關(guān)鍵程序段落說明3.1數(shù)據(jù)段定義dsegsegmentnumdw0data1db0FEh,0FDh,0FBh,0F7h,0EFh,0DFh,0BFh,7Fhdata2db7Fh,0BFh,0DFh,0EFh,0F7h,0FBh,0FDh,0FEhdata3db7Eh,0BDh,0DBh,0E7h,0E7h,0DBh,0BDh,7Ehdsegends三種燈光變幻組合為:第一種為L1→L2→L3→L4→L5→L6→L7→L8;第二種為L8→L7→L6→L5→L4→L3→L2→L1;第三種為L1L8→L2L7→L3L6→L4L5→L3L6→L2L7→L1L8。dw為燈光循環(huán)的控制次數(shù)。3.2程序初始化csegsegmentparapublic'code'assumess:sseg,cs:cseg,ds:dsegstart: movax,dseg movds,ax初始化程序。3.3芯片初始化movdx,0206h;取8255A的控制端口的地址moval,82h;初始化8255A的A口為輸出模式,B口為輸入模式outdx,al82h即為10000010b,也就是說將A口定義在方式0下并且作為輸出,B口定義在方式0下并且作為輸入,因此這個方式控制字不是唯一的,其通用形式為1000X01X,C口沒有定義故可以為任意二進制數(shù)。movdx,0200h;取8255的端口A的地址moval,0FFh;使8255的PA0-PA7全為1outdx,al上邊這個程序段是往外送數(shù)據(jù)置LED亮滅的。movdx,0202h;取8255的端口B的地址inal,dx;檢測B口輸入信號這個是將B口開關(guān)閉合信息讀回來的,從而發(fā)出相應(yīng)控制命令。3.4初始LED亮滅狀態(tài)movdx,0200h;取8255的端口A的地址moval,0FFh;使8255的PA0-PA7全為1outdx,al;使所有的燈LED全滅電路上電工作后首先要使所有的LED燈全滅,防止對后面的顯示造成影響。3.5檢測按鍵開關(guān)子程序ledflashproc;檢測開關(guān)閉合,以便確定哪種閃爍方式movdx,0202h;取8255A的端口B的地址inal,dx;檢測B口輸入信號choice1:cmpal,0fehjnechoice2movsi,offsetdata1;置第一種燈光變幻組合jmpherechoice2:cmpal,0fdhjnechoice3movsi,offsetdata2;置第二種燈光變幻組合jmpherechoice3:cmpal,0fbhjnechoice4movsi,offsetdata3;置第三種燈光變幻組合jmpherechoice4:;每盞燈亮完檢測開關(guān),如果停頓開關(guān)沒有按下跳到choice5,如果停頓開關(guān)按下燈全滅cmpal,0f7hjnechoice5jmpexutchoice5:cmpnum,0h;檢測num是否為0,假設(shè)為0掃描開關(guān),假設(shè)不為0繼續(xù)執(zhí)行jneherejmpledflashhere:movbx,nummoval,[si+bx] movdx,0200h;取8255的端口A的地址outdx,al;輸出加電數(shù)據(jù)到端口Aincnum;改變數(shù)字變量的值cmpnum,09hjeexitmovcx,005fhdl4: movbx,00ffhdl3:decbx jnzdl3deccx jnzdl4 jmpledflashexit:movnum,0 retledflashendp檢測到開關(guān)閉合置相應(yīng)燈光變換。3.6延時程序片段movcx,04c9hdl4: movbx,04c9hdl3:decbx jnzdl3deccx jnzdl4通過雙層循環(huán)從而實現(xiàn)軟件延時,延時計算公式為((cx)*(bx))/f,f為CPU的頻率,CPU頻率為1500kHz,可以計算得到程序大致延時為1s。3.7燈光變換控制here:movbx,nummoval,[si+bx] movdx,0200h;取8255的端口A的地址outdx,al;輸出加電數(shù)據(jù)到端口Aincnum;改變數(shù)字變量的值cmpnum,09hjeexit通過指針移動,逐個選中相應(yīng)的數(shù)據(jù)置相應(yīng)的燈光變換,共八種即一輪LED顯示完成。4程序調(diào)試說明〔1〕、存空間分配,匯編語言的重要特點之一是能夠直接利用機器指令或者偽指令為數(shù)據(jù)或者代碼程序分配存空間,86系列〔如8086微處理器〕的存儲器構(gòu)造是分段的,有代碼段,數(shù)據(jù)段,堆棧段或附加段,在程序設(shè)計時要充分考慮分段構(gòu)造,要執(zhí)行的程序段應(yīng)設(shè)在當前段〔活動段〕中;分配存空間:直接在proteus里面將8086CPU的internalmemorysize設(shè)置成一個足夠用的空間大小,如0x1000,默認的空間大小是0x00000,如不改那么仿真不成功。程序在運行時所需要的工作單元應(yīng)盡可能的設(shè)在CPU存放器中,這樣存取速度快,而且操作方便;在此系統(tǒng)源程序中都采用8086CPU的全部通用存放器:累加器AX,基數(shù)存放器BX,基數(shù)存放器CX,數(shù)據(jù)存放器DX;和堆棧指針存放器SI?!?〕、unknow1-byteopcodeatB900:7056!61[SPICE]errortoomanyiterationswithoutconvergence在仿真過程中,出現(xiàn)以上兩行的錯誤,太多的迭代沒有收斂性,和某個匯編語言在編碼過程中的地址不正確,經(jīng)過排查程序去除無用代碼,proteus不再報錯?!?〕、8255A隱藏引腳問題,需要設(shè)置芯片HiddenPins里的GND改為VSS,VCC改為VDD?!?〕、程序一開場是將延時環(huán)節(jié)作為一個獨立子程序,運行過程中由于局部情況下不滿足題設(shè),故將延時子程序改為程序段落寫到檢測按鍵的子程序中問題得以解決。5結(jié)果記錄及分析第一種燈光變換效果:L1→L2→L3→L4→L5→L6→L7→L8,如圖6所示。圖6LED第一種變換效果第二種燈光變換效果:L8→L7→L6→L5→L4→L3→L2→L1;第一種變換效果反向即為第二種效果。第三種燈光變換效果:L1L8→L2L7→L3L6→L4L5→L3L6→L2L7→L1L8,如圖7所示。圖7LED第三種變換效果心得體會通過本次課程設(shè)計,學(xué)到了很多使用的東西,使我受益匪淺,將課堂上所學(xué)的知識運用到實際,體會到了理論與實際聯(lián)系的重要性,同時進一步學(xué)習了PROTEUS這款軟件。第一,在做這次課程設(shè)計的一開場可以說是難度重重,接口電路設(shè)計出了問題,一開場由于電路沒有參加鎖存器,導(dǎo)致地址和數(shù)據(jù)沖突,從而電路不能正常工作,最后在電路里參加了鎖存器74LS273和譯碼器74LS154后解決了地址和數(shù)據(jù)沖突的問題。第二,由于對軟件PROTEUS運用不是很熟練,導(dǎo)致一些問題,比方說分配存空間:直接在proteus里面將8086CPU的internalmemorysize設(shè)置成一個足夠用的空間大小,如0x1000,默認的空間大小是0x00000,如不改那么仿真不能成功。還有在運行期間PROTEUS仿真報錯,由于不太懂報錯信息就一步加大了設(shè)計的難度,還有一些其他小細節(jié)上的問題,可以說是細節(jié)決定成敗。第三,由于匯編語言運用的不太熟練,對程序反復(fù)進展修改,發(fā)現(xiàn)匯編語言由于語句在程序中放置的位置不同也會是不同的效果,對匯編語言有了進一步的認識。綜上所述,這次微機原理與接口技術(shù)的課程設(shè)計讓我學(xué)到了很多東西,不是課堂上能夠?qū)W到的東西,通過仿真可以實實在在的看到成果,從而提高了對電子設(shè)計的興趣,我想這是一個很好的鍛煉時機,通過這樣的鍛煉不僅穩(wěn)固了課堂上學(xué)習的相關(guān)知識,而且學(xué)到了一些課外知識,比方說在網(wǎng)絡(luò)上怎樣去搜索你想要的信息等等,這些東西將使我終身獲益。附錄程序清單ssegsegmentdw200dup(")ssegendsdsegsegmentnumdw0;初始化數(shù)字變量為0;3種不同的燈光變幻組合data1db0FEh,0FDh,0FBh,0F7h,0EFh,0DFh,0BFh,7Fhdata2db7Fh,0BFh,0DFh,0EFh,0F7h,0FBh,0FDh,0FEhdata3db7Eh,0BDh,0DBh,0E7h,0E7h,0DBh,0BDh,7Ehdsegendscsegsegmentparapublic'code'assumess:sseg,cs:cseg,ds:dsegstart: movax,dseg movds,axmovdx,0206h;取8255的控制端口的地址moval,82h;初始化8255的A口為輸出模式,B口為輸入模式outdx,al exut: movnum,0hmovdx,0200h;取8255的端口A的地址moval,0FFh;使8255的PA0-PA7全為1outdx,al;使所有的燈LED全滅begin:callledflash;調(diào)用燈光變幻過程jmpexutledflashproc;檢測開關(guān)閉合,以便確定哪種閃爍方式movdx,0202h;取8255的端口B的地址inal,dx;檢測B口輸入信號choice1:cmpal,0fehjnechoice2movsi,offsetdata1;置第一種燈光變幻組合jmpherechoice2:cmpal,0fdhjnechoice3movsi,offsetdata2;置第二種燈光變幻組合jmpherechoice3:cmpal,0fbhjnechoice4movsi,offsetdata3;置第三種燈光變幻組合jmpherechoice4:;每盞燈亮完檢測開關(guān),如果停頓開關(guān)沒有按下跳到choice5,如果停頓開關(guān)按下燈全滅cmpal,0f7hjnechoice5jmpexutchoice5:;檢測num是否為0,假設(shè)為0掃描開關(guān),假設(shè)不為0繼續(xù)執(zhí)行cmpnum,0hjneherejmpledflashhere:movbx·,nummoval,[si+bx] movdx,0200h;取8255的端口A的地址outdx,al;輸出加電數(shù)據(jù)到端口Aincnum

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論