版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計</p><p> 課程設(shè)計題目:簡單字幕機</p><p><b> 一、設(shè)計目的</b></p><p> 通過課程設(shè)計使學生更進一步掌握微機原理與應用課程的有關(guān)知識,提高用匯編語言編程的能力,加深對匯編語言的理解。通過查閱資料,閱讀程序,提高設(shè)計程序的能力及動手能力,使編程水平有一定的提高,
2、同時也使學生通過動手進行硬件設(shè)計及程序設(shè)計從而提高解決實際問題的能力。</p><p> 二、設(shè)計的原始資料及依據(jù)</p><p> 查閱可編程并行芯片8255或其他相關(guān)資料。</p><p> 文字顯示是通過把該文字的圖形信息用輸出到顯示器件(),配合軟件不同的刷新方式即可實現(xiàn)文字的移動。</p><p> 三、設(shè)計的主要內(nèi)容及要求
3、</p><p> 內(nèi)容:利用微機原理試驗箱的8255單元和8X8發(fā)光二極管矩陣,動態(tài)顯示漢字及字符。</p><p> 要求:實現(xiàn)多種方式的字幕移動。</p><p> 四、對設(shè)計說明書撰寫內(nèi)容、格式、字數(shù)的要求 </p><p> 1.課程設(shè)計說明書(論文)是體現(xiàn)和總結(jié)課程設(shè)計成果的載體,一般不應少于3000字。</p&g
4、t;<p> 2.學生應撰寫的內(nèi)容為:中文摘要和關(guān)鍵詞、目錄、正文、參考文獻等。課程設(shè)計說明書(論文)的結(jié)構(gòu)及各部分內(nèi)容要求可參照《沈陽工程學院畢業(yè)設(shè)計(論文)撰寫規(guī)范》執(zhí)行。應做到文理通順,內(nèi)容正確完整,書寫工整,裝訂整齊。</p><p> 3.說明書(論文)手寫或打印均可。手寫要用學校統(tǒng)一的課程設(shè)計用紙,用黑或藍黑墨水工整書寫;打印時按《沈陽工程學院畢業(yè)設(shè)計(論文)撰寫規(guī)范》的要求進行打印
5、。</p><p> 4. 課程設(shè)計說明書(論文)裝訂順序為:封面、任務書、成績評審意見表、中文摘要和關(guān)鍵詞、目錄、正文、參考文獻</p><p> 五、 設(shè)計完成后應提交成果的種類、數(shù)量、質(zhì)量等方面的要求;</p><p> 提交完善的軟硬件實驗電路一套和課程設(shè)計說明書一份,組內(nèi)每人應有自己的創(chuàng)新內(nèi)容,不得雷同。</p><p>&l
6、t;b> 六、時間進度安排;</b></p><p> 七、主要參考資料(文獻)。</p><p> ?。薄ⅰ段C原理與應用》大連理工大學出版社</p><p> ?。病ⅰ段C原理與接口技術(shù)》北京航空航天大學出版社</p><p> ?。?、《微型計算機原理與匯編語言》電子工業(yè)出版社</p><p>
7、; ?。?、《8088/8086匯編語言程序設(shè)計》中央廣播電視大學出版社</p><p><b> 摘要:</b></p><p> 本次設(shè)計的簡單字幕機可以實現(xiàn)時間的左移滾動顯示。以I386EX CPU為核心,再經(jīng)8259中斷控制器即可進行時、分、秒的計時。并采用可編程并行接口芯片8255,利用其A口和B口,連接到8*8 LED點陣,便可編程顯示任意圖形與符號,即
8、實現(xiàn)滾動樣式的電子鐘。</p><p><b> 關(guān)鍵詞:</b></p><p> 字幕機、滾動、時間、可編程并行接口8255、8*8 LED點陣、中斷控制器8259、定時器8254</p><p><b> 目錄</b></p><p><b> 第1章 緒論1</b&
9、gt;</p><p> 第2章 實驗原理2</p><p><b> 2.1主要原理2</b></p><p><b> 2.2硬件設(shè)計2</b></p><p> 2.2.1 8*8 LED點陣2</p><p> 2.2.2可編程并行接口82553&
10、lt;/p><p> 2.2.3中斷控制器82595</p><p><b> 2.3軟件設(shè)計6</b></p><p> 第3章 程序設(shè)計8</p><p><b> 3.1 源程序8</b></p><p> 3.2程序調(diào)試15</p>&
11、lt;p> 第4章 總 結(jié)17</p><p><b> 參考文獻18</b></p><p><b> 第1章 緒論</b></p><p> 隨著視頻及多媒體技術(shù)的不斷發(fā)展,字幕機用途越來越廣泛,不僅僅應用于電視臺的節(jié)目字幕播出、電影電視劇的制作,在視頻監(jiān)控、民用廣告、婚慶錄像等活動中也大量的使用,同
12、時操作字幕機也變得簡單易用,就連很多沒有多少計算機專業(yè)知識的人也能夠輕松上手??梢钥闯觯帜粰C對于當前很多的影視行為都是不可缺少的</p><p> 字幕機是由計算機、字幕卡和字幕制作軟件三部分組成的。現(xiàn)在計算機很普及,相信大家不用多說,對它也很熟悉;字幕制作軟件就是控制字幕以何種方式疊加到背景畫面上,與使用者交互的工具,沒有字幕軟件,使用者就沒辦法控制計算機,就沒辦法制作字幕;在有了計算機和字幕軟件后,必須要
13、有一個能夠允許背景畫面輸入,并且在疊加字幕以后,最終輸出帶有字幕視頻的設(shè)備。大家都知道,計算機在一般情況下,只有鍵盤、手寫筆等輸入設(shè)備,顯示器、打印機等輸出設(shè)備,要想接收視頻進入,而后把視頻輸出,是另外需要其他附加設(shè)備的,字幕卡就是這樣的設(shè)備。</p><p> 在將系統(tǒng)設(shè)置設(shè)為編碼方式后,接下來有三個選項,一是字幕疊加、二是背景直通、三是字幕幀存;字幕卡分為兩層,一層是背景視頻,一層是字幕。當選中字幕疊加時,
14、字幕軟件就會控制字幕卡中的混疊器,把制作好的字幕混疊到背景畫面上,這時輸出的視頻就已經(jīng)是疊好字幕的視頻了;當選中背景直通時,混疊器不工作,字幕層與背景層互不干涉,背景視頻只作簡單的模數(shù)、數(shù)模轉(zhuǎn)換,然后輸出,輸出的為沒有疊加字幕的視頻;當選中字幕幀存時,混疊器也不工作,字幕卡對接收到的背景視頻不予輸出,只輸出字幕層,所以最終輸出的只有字幕,沒有背景視頻。</p><p><b> 第2章 實驗原理<
15、;/b></p><p><b> 2.1主要原理</b></p><p> 簡單字幕機動態(tài)顯示字幕移動是由可編程的并行接口器件8255的四個口來實現(xiàn)的,包括8255的A口、B口、C口和一個控制寄存器。通過對其控制端口賦予一定的控制字,來設(shè)定8255的工作方式,在本設(shè)計中,使8255功能控制為方式選擇1,工作于方式0,即基本輸入輸出方式,并將A口、B口和C口
16、都設(shè)置成輸出,所以控制字為80H。整個設(shè)計程序是這樣實現(xiàn)的:首先,是定義公共變量L_CON,包括定義8255端口A、B、C口地址和控制口地址,定義堆棧段,定義一個32位的字型存儲空間。然后輸入組成“電子”二字的筆畫代碼數(shù)據(jù),共由15行、8列組成,這個數(shù)字矩陣可根據(jù)不同的數(shù)字而改變,這也是程序編寫的關(guān)鍵之一。然后,編寫程序初始化語句。把上述數(shù)據(jù)全部數(shù)據(jù)寄存器DS中;把控制字80H該8255的控制端口輸出(使8255功能控制為方式選擇1,工
17、作于方式0,即基本輸入輸出方式,并將A口、B口和C口都設(shè)置成輸出,所以控制字為80H);因為滿足8X8發(fā)光二極管矩陣燈亮的條件是列為0且行為1,所以在此設(shè)定列的最高位L8列滿足全0,從列高位到列低位即為01111111。定義完成后,即為程序最關(guān)鍵的部分——循環(huán)顯示字幕移動。定義</p><p><b> 2.2硬件設(shè)計</b></p><p> 2.2.1 8*8
18、 LED點陣</p><p> 8*8 LED點是將8行8列個LED以矩陣方式排成為一個器件。本次設(shè)計所使用的LED點陣是使每行LED的陰極連接在一起,每列LED的陽極連接在一起,再經(jīng)過驅(qū)動電路分別引出8個行引角和8個列引角,若要點亮其中的LED,則需行為低電平0,列為高電平1。LED點陣的顯示采用掃描的方式,首先將所要顯示的字按每行拆解成多組顯示信號。若LED點陣的第一列為顯示數(shù)據(jù)的D0、第8列為D7,則可列
19、出數(shù)字“0”的顯示編碼,如表2.1所示:</p><p> 表_2.1 LED行顯示</p><p> 編碼方式必須與實際線路相符,苦第1列為MSB,第8列為LSB,則連接到接口時,也一定要按這樣的順序才行。當然,若要第1列為LSB,第8列為MSB,則線路連接也要跟著調(diào)整。</p><p> LED點陣的顯示方式就是按顯示數(shù)據(jù)編碼的順序,一行一行地顯示。若要
20、顯示數(shù)字“0”,先將“7FH”掃描信號送到至LED點陣的行引腳,再將第一行的顯示數(shù)據(jù)“00H”送到LED點陣的列引腳,即可顯示第一行,此時其它行并不顯示。接著顯示第二行,先將“BFH”掃描信號送至LED點陣的行引腳,再將第二行的顯示數(shù)據(jù)“4FH”送至LED點陣的列引腳,即可顯示第二行,此時其它行并不顯示……依此類推,直到最后一行。</p><p> 第行的顯示要有一定時間,若反復執(zhí)行從第一行到最后一行的掃描,由
21、于人類視覺瞬時現(xiàn)象,將會感覺到8行LED同時顯示的樣子。若顯示時間太短,則亮度不夠,若顯示時間太長,則會感覺閃爍。</p><p> 在以上基礎(chǔ)上,若間隔一定時間,再使每次顯示不同的字型,即可實現(xiàn)不同的動態(tài)顯示效果。</p><p> 根據(jù)以上分析,可使8*8 LED點陣的行引角與8255芯片的A口相連,列引角與B口相連,如“硬件電路接線圖”部分。</p><p&g
22、t; 2.2.2可編程并行接口8255</p><p> 8255工作在方式0時,A口和B口的輸出是可以獨立的,而且都具有鎖存能力,因此使用此芯片作為LED點陣字幕機與系統(tǒng)總線的接口單元。其連接如“硬件電路接線圖”部分。</p><p> RD為讀信號線,接系統(tǒng)總線的IOR信號,實現(xiàn)對8255的讀操作。</p><p> WR為寫信號線,接系統(tǒng)總線的IOW端
23、,實現(xiàn)對8255的寫操作。</p><p> CS為片選信號線,接系統(tǒng)總線的IOY1,當它為低電平(有效)時,才選中該8255芯片。</p><p> A0、A1為口地址選擇信號線。本次設(shè)計使其分別與系統(tǒng)總線的XA1、XA2相連,它們的不同編碼可分別尋址3個口和一個控制寄存器,如表2.2所示:</p><p> 表_2.2 選擇編碼</p>&l
24、t;p> PA0~PA7為A口的8條輸入輸出信號線,該口的這8條線是工作于輸入、輸出還是雙向(輸入、輸出)方式,可由軟件編程來決定。</p><p> PB0~PB7為B口的8條輸入輸出信號線,利用軟件編程可指定這8條線是輸入還是輸出。</p><p> 由于C口未使用,所以這里不研究。</p><p> 這里的8255接口所占地址范圍為0640H~0
25、646H。當對8255接口進行寫操作時,各信號線的狀態(tài)如表2.3所示:</p><p> 表_2.3 信號線狀態(tài)</p><p> 8255在應用過程中,將不同的控制字裝入芯片中控制寄存器,即可確定8255的工作方式。8255的控制字由8位二進制數(shù)構(gòu)成,各位的控制功能如圖2.1所示:</p><p> 圖2.1 控制功能</p><p&g
26、t; 說明:當控制字bit7=1時,控制字的bit6~bit3這4位用來控制A組,即A口的8位和C口的高4位,而控制字的低3位bit2~bit0用來控制B組,包括B口的8位和C口的低4位。</p><p> 2.2.3中斷控制器8259</p><p> (1)本次設(shè)計是利用8259按鍵中斷,并在中斷服務程序中對時間進行控制。該單元包含有兩個級聯(lián)中斷控制器,其內(nèi)部連接及外部管角引出如
27、圖2.2所示:</p><p> 圖2.2 8259內(nèi)部連接及外部管腳</p><p> 內(nèi)部連接 INT為8259的中斷請求輸出信號,直接接到CPU的INTR輸入端。 CAS2:0為從控制器的級聯(lián)控制線。IR2接到從片的INT端構(gòu)成兩片8259的級聯(lián)外部管角 0供系統(tǒng)串口使用。 MIR6、MIR7中斷請求輸入端,這里只用其MIR7端,與8254的連接如“硬件電路接線圖”部分。<
28、/p><p> (2)8259初始化和操作命令說明</p><p> 8259內(nèi)部有二類控制字,一類是初始化命令字(ICW),主要使8259處于初始狀態(tài),另一類是操作命令(OCW),使處于初始狀態(tài)的8259去執(zhí)行具體的某種操作方式,操作命令字可在8259初始化后的任何時刻寫入。</p><p> 8259僅占兩個接口地址,在利用各種命令字對其初始化時,一方面利用這
29、兩個地址,同時利用命令字中D4、D5的狀態(tài)及命令字的寫入順序?qū)@些命令加以區(qū)分,如表2.4所示</p><p> 表_2.4 接口地址</p><p><b> 2.3軟件設(shè)計</b></p><p> 通過硬件電路的設(shè)計,已將各芯片連接成一個完整的電路,在此基礎(chǔ)上,即可進行程序的編寫、改錯與調(diào)試。</p><p>
30、; 為實現(xiàn)在8*8LED點陣上顯示時間的左移滾動顯示,程序的編寫分為兩大模塊,第一模塊是設(shè)計任意字幕的左移滾動,第二模塊是電子鐘設(shè)計。只要將兩??焱ㄟ^同一段內(nèi)存單元聯(lián)系在一起,即可實現(xiàn)遇期的顯示效果。</p><p> 由于本次課設(shè)的時間有限,而且程序也比較大,容易出現(xiàn)各種意想不到的錯誤與結(jié)果,所以由我和另外一名同學分別完成每一模塊,本人主要完成字幕的左移滾動和兩模塊的連接。</p><p
31、> 為把時間和字幕滾動聯(lián)系在一起,最簡單易行的辦法就是在內(nèi)存中占同一地址單元,而此段單元必需存放8*8 LED點陣以直接顯示的編碼。根據(jù)8*8 LED點陣的顯示特點(前已敘述),假如顯示如下時間如圖2.4所示:</p><p><b> 圖2.3時間顯示</b></p><p> 共40行,每一行顯示編碼為8位二進制(一個字節(jié)),所以此段內(nèi)存單元共需40個
32、字節(jié)??稍跀?shù)據(jù)段內(nèi)(DATA)定義TABLE DB 40 DUP(0)</p><p> 假設(shè)內(nèi)存物理單元如圖2.4所示:</p><p> 圖2.4 內(nèi)存物理單元</p><p> TABLE開始的前4個字節(jié)固定為“00H”,即什么也不顯示,這是為正確讀準時間而插入的空白區(qū),避免了時間滾動時,時的第1位與分的最后1位混淆在一起.</p><
33、;p> PP是事先定義的一個字內(nèi)存單元,用來存放TABLE開始段的某一單元地址,開始指向TABLE,顯示某一字型時,以PP所指單元開始,掃描到第8個字節(jié),然后再從PP開始,循環(huán)掃描這8個字節(jié),循環(huán)一定次數(shù)后,便能看清這一字型。然后使PP值加1,即指向下一單元,再重復以上步驟,便顯示第二、三、四……個字型了,這在點陣字幕上就會形成向左移動的效果。</p><p><b> 2.4硬件接線圖<
34、;/b></p><p> 圖2.5 硬件接線圖</p><p><b> 第3章 程序設(shè)計</b></p><p><b> 3.1 源程序</b></p><p> PUBLIC L_CON ; 定義公共變量</p><p&
35、gt; M8255_AEQU 0640H ;定義8255A口、B口、C口和控制口地址</p><p> M8255_BEQU 0642H</p><p> M8255_CEQU 0644H</p><p> M8255_CONEQU 0646H</p><p> SSTACK SEGMENT STA
36、CK ;定義堆棧段</p><p> DW 32 DUP(?) ;定義一個32位的字型存儲空間</p><p> SSTACK ENDS</p><p> DATA SEGMENT</p><p> TAB1 DB 7cH,00H,00H,00H,00H,00H,00H,00H ;
37、組成"電子"二字的</p><p> TAB2 DB 54H, 7cH,00H,00H,00H,00H,00H,00H ;數(shù)字代碼</p><p> TAB3 DB 0ffH, 54H,7cH,00H,00H,00H,00H,00H</p><p> TAB4 DB 55H, 0ffH,54H,7cH,00H,00
38、H,00H,00H</p><p> TAB5 DB 7DH,55H,0FFH,54H,7CH,00H,00H,00H</p><p> TAB6 DB 07H,7DH,55H,0FFH,54H,7CH,00H,00H</p><p> TAB7 DB 00H,07H,7DH,55H,0FFH,54H,7CH,00H</p>&
39、lt;p> TAB8 DB 20H,00H,07H,7DH,55H,0FFH,54H,7CH</p><p> TAB9 DB 0A0H,20H,00H,07H,7DH,55H,0FFH,54H</p><p> TAB10 DB 0BFH,0A0H,20H,00H,07H,7DH,55H,0FFH</p><p> TAB11 D
40、B 0E0H,0BFH,0A0H,20H,00H,07H,7DH,55H</p><p> TAB12 DB 0A0H,0E0H,0BFH,0A0H,20H,00H,07H,7DH</p><p> TAB13 DB 00H,0A0H,0E0H,0BFH,0A0H,20H,00H,07H</p><p> TAB14 DB 00H,00H,00H,
41、0A0H,0E0H,0BFH,0A0H,20H</p><p> TAB15 DB 00H,00H,00H,00H,0A0H,0E0H,0BFH,0A0H</p><p> L_CON DB ?</p><p> DATA ENDS</p><p> CODE SEGMENT</p><p> AS
42、SUME CS:CODE, DS:DATA</p><p> START:PUSH DS</p><p> MOV AX, 0000H</p><p> MOV DS, AX</p><p> MOV AX, OFFSET MIR6 ;取中斷入口地址</p><p> MOV SI, 0078H;
43、中斷矢量地址</p><p> MOV [SI], AX;填I(lǐng)RQ7的偏移矢量</p><p> MOV AX, CS;段地址</p><p> MOV SI, 007AH</p><p> MOV [SI], AX;填I(lǐng)RQ7的段地址矢量</p><p><b> CLI<
44、;/b></p><p><b> POP DS</b></p><p> ;初始化主片8259</p><p> MOV AL, 11H</p><p> OUT 20H, AL;ICW1</p><p> MOV AL, 18H</p><p>
45、 OUT 21H, AL;ICW2</p><p> MOV AL, 04H</p><p> OUT 21H, AL;ICW3</p><p> MOV AL, 01H</p><p> OUT 21H, AL;ICW4</p><p> MOV AL, 0BFH;OCW1
46、</p><p> OUT 21H, AL</p><p><b> STI</b></p><p> MOV AX, DATA ; 初始化語句</p><p> MOV DS, AX</p><p> MOV L_CON, 7FH<
47、;/p><p> MOV DX, M8255_CON</p><p> MOV AL, 80H ;寫8255控制字</p><p> OUT DX, AL</p><p><b> AAe:NOP</b></p><p><b>
48、; JMP AAe</b></p><p><b> MIR6:STI</b></p><p><b> CALL DELA</b></p><p> AA0:MOV BL, 0D0H ;定義外循環(huán)次數(shù)</p><p>
49、AA1:MOV SI, OFFSET TAB1 ; 循環(huán)顯示第一個圖形</p><p> MOV CX, 0008H ; 定義內(nèi)循環(huán)次數(shù)8次</p><p> DIS1:MOV DX, M8255_A </p><p> MOV AL, L_CON</p><p>
50、 OUT DX, AL</p><p> MOV DX, M8255_B</p><p> MOV AL, [SI]</p><p> OUT DX, AL</p><p> ROR L_CON, 1 ; 列右移一位</p><p> INC SI ;
51、行自動加1</p><p> CALL DELAY ; 調(diào)用延時子程序</p><p> LOOP DIS1 </p><p><b> DEC BL</b></p><p> CMP BL, 00H</p><p><b&
52、gt; JNE AA1</b></p><p> MOV BL, 0D0H</p><p> AA2:MOV SI, OFFSET TAB2 ; 循環(huán)顯示第二個圖形;</p><p> MOV CX, 0008H</p><p> DIS2:MOV DX, M8255_A</p><p&
53、gt; MOV AL, L_CON</p><p> OUT DX, AL</p><p> MOV DX, M8255_B</p><p> MOV AL, [SI]</p><p> OUT DX, AL</p><p> ROR L_CON, 1</p><p><b&g
54、t; INC SI</b></p><p> CALL DELAY</p><p><b> LOOP DIS2</b></p><p><b> DEC BL</b></p><p> CMP BL, 00H</p><p><b> JN
55、E AA2</b></p><p> MOV BL, 0D0H</p><p> AA3:MOV SI, OFFSET TAB3 ; 循環(huán)顯示第三個圖形</p><p> MOV CX, 0008H</p><p> DIS3:MOV DX, M8255_A</p><p> MOV A
56、L, L_CON</p><p> OUT DX, AL</p><p> MOV DX, M8255_B</p><p> MOV AL, [SI]</p><p> OUT DX, AL</p><p> ROR L_CON, 1</p><p><b> INC SI
57、</b></p><p> CALL DELAY</p><p><b> LOOP DIS3</b></p><p><b> DEC BL</b></p><p> CMP BL, 00H</p><p><b> JNE AA3</
58、b></p><p> MOV BL, 0D0H</p><p> AA4:MOV SI, OFFSET TAB4 ; 循環(huán)顯示第四個圖形</p><p> MOV CX, 0008H</p><p> DIS4:MOV DX, M8255_A</p><p> MOV AL, L_C
59、ON</p><p> OUT DX, AL</p><p> MOV DX, M8255_B</p><p> MOV AL, [SI]</p><p> OUT DX, AL</p><p> ROR L_CON, 1</p><p><b> INC SI</b
60、></p><p> CALL DELAY</p><p><b> LOOP DIS4</b></p><p><b> DEC BL</b></p><p> CMP BL, 00H</p><p><b> JNE AA4</b>&
61、lt;/p><p> MOV BL, 0D0H</p><p> AA5:MOV SI, OFFSET TAB5 ; 循環(huán)顯示第五個圖形 </p><p> MOV CX, 0008H</p><p> DIS5:MOV DX, M8255_A</p><p> MOV AL, L_CON<
62、;/p><p> OUT DX, AL</p><p> MOV DX, M8255_B</p><p> MOV AL, [SI]</p><p> OUT DX, AL</p><p> ROR L_CON, 1</p><p><b> INC SI</b>&
63、lt;/p><p> CALL DELAY</p><p><b> LOOP DIS5</b></p><p><b> DEC BL</b></p><p> CMP BL, 00H</p><p><b> JNE AA5</b></p
64、><p> MOV BL, 0D0H</p><p> AA6:MOV SI, OFFSET TAB6 ; 循環(huán)顯示第六個圖形</p><p> MOV CX, 0008H</p><p> DIS6:MOV DX, M8255_A</p><p> MOV AL, L_CON</
65、p><p> OUT DX, AL</p><p> MOV DX, M8255_B</p><p> MOV AL, [SI]</p><p> OUT DX, AL</p><p> ROR L_CON, 1</p><p><b> INC SI</b><
66、;/p><p> CALL DELAY</p><p><b> LOOP DIS6</b></p><p><b> DEC BL</b></p><p> CMP BL, 00H</p><p><b> JNE AA6</b></p&g
67、t;<p> MOV BL, 0D0H</p><p> AA7:MOV SI, OFFSET TAB7 ; 循環(huán)顯示第七個圖形</p><p> MOV CX, 0008H </p><p> DIS7:MOV DX, M8255_A</p><p> MOV AL, L_CON</p>
68、<p> OUT DX, AL</p><p> MOV DX, M8255_B</p><p> MOV AL, [SI]</p><p> OUT DX, AL</p><p> ROR L_CON, 1</p><p><b> INC SI</b></p&g
69、t;<p> CALL DELAY</p><p><b> LOOP DIS7</b></p><p><b> DEC BL</b></p><p> CMP BL, 00H</p><p><b> JNE AA7</b></p>&
70、lt;p> MOV BL, 0D0H</p><p> AA8:MOV SI, OFFSET TAB8 ; 循環(huán)顯示第八個圖形</p><p> MOV CX, 0008H</p><p> DIS8:MOV DX, M8255_A</p><p> MOV AL, L_CON</p>&l
71、t;p> OUT DX, AL</p><p> MOV DX, M8255_B</p><p> MOV AL, [SI]</p><p> OUT DX, AL</p><p> ROR L_CON, 1</p><p><b> INC SI</b></p>
72、<p> CALL DELAY</p><p><b> LOOP DIS8</b></p><p><b> DEC BL</b></p><p> CMP BL, 00H</p><p><b> JNE AA8</b></p><p
73、> MOV BL, 0D0H</p><p> AA9:MOV SI, OFFSET TAB9 ; 循環(huán)顯示第九個圖形</p><p> MOV CX, 0008H</p><p> DIS9:MOV DX, M8255_A</p><p> MOV AL, L_CON</p><p>
74、 OUT DX, AL</p><p> MOV DX, M8255_B</p><p> MOV AL, [SI]</p><p> OUT DX, AL</p><p> ROR L_CON, 1</p><p><b> INC SI</b></p><p>
75、; CALL DELAY</p><p><b> LOOP DIS9</b></p><p><b> DEC BL</b></p><p> CMP BL, 00H</p><p><b> JNE AA9</b></p><p> MO
76、V BL, 0D0H</p><p> AA10:MOV SI, OFFSET TAB10 ; 循環(huán)顯示第十個圖形</p><p> MOV CX, 0008H</p><p> DIS10:MOV DX, M8255_A</p><p> MOV AL, L_CON</p><p> OUT
77、 DX, AL</p><p> MOV DX, M8255_B</p><p> MOV AL, [SI]</p><p> OUT DX, AL</p><p> ROR L_CON, 1</p><p><b> INC SI</b></p><p> C
78、ALL DELAY</p><p> LOOP DIS10</p><p><b> DEC BL</b></p><p> CMP BL, 00H</p><p><b> JNE AA10</b></p><p> MOV BL, 0D0H</p>
79、<p> AA11:MOV SI, OFFSET TAB11 ; 循環(huán)顯示第十一個圖形</p><p> MOV CX, 0008H</p><p> DIS11:MOV DX, M8255_A</p><p> MOV AL, L_CON</p><p> OUT DX, AL</p><
80、p> MOV DX, M8255_B</p><p> MOV AL, [SI]</p><p> OUT DX, AL</p><p> ROR L_CON, 1</p><p><b> INC SI</b></p><p> CALL DELAY</p>&l
81、t;p> LOOP DIS11</p><p><b> DEC BL</b></p><p> CMP BL, 00H</p><p><b> JNE AA11</b></p><p> MOV BL, 0D0H</p><p> AA12:MOV S
82、I, OFFSET TAB12 ; 循環(huán)顯示第十二個圖形</p><p> MOV CX, 0008H</p><p> DIS12:MOV DX, M8255_A</p><p> MOV AL, L_CON</p><p> OUT DX, AL</p><p> MOV DX,
83、M8255_B</p><p> MOV AL, [SI]</p><p> OUT DX, AL</p><p> ROR L_CON, 1</p><p><b> INC SI</b></p><p> CALL DELAY</p><p> LOOP D
84、IS12</p><p><b> DEC BL</b></p><p> CMP BL, 00H</p><p><b> JNE AA12</b></p><p> MOV BL, 0D0H</p><p> AA13:MOV SI, OFFSET TAB13
85、 ; 循環(huán)顯示第十三個圖形</p><p> MOV CX, 0008H</p><p> DIS13:MOV DX, M8255_A</p><p> MOV AL, L_CON</p><p> OUT DX, AL</p><p> MOV DX, M8255_B</p><
86、p> MOV AL, [SI]</p><p> OUT DX, AL</p><p> ROR L_CON, 1</p><p><b> INC SI</b></p><p> CALL DELAY</p><p> LOOP DIS13</p><p&g
87、t;<b> DEC BL</b></p><p> CMP BL, 00H</p><p><b> JNE AA13</b></p><p> MOV BL, 0D0H</p><p> AA14:MOV SI, OFFSET TAB14 ; 循環(huán)顯示第十四個圖形</p&
88、gt;<p> MOV CX, 0008H</p><p> DIS14:MOV DX, M8255_A</p><p> MOV AL, L_CON</p><p> OUT DX, AL</p><p> MOV DX, M8255_B</p><p> MOV AL, [SI]<
89、/p><p> OUT DX, AL</p><p> ROR L_CON, 1</p><p><b> INC SI</b></p><p> CALL DELAY</p><p> LOOP DIS14</p><p><b> DEC BL<
90、/b></p><p> CMP BL, 00H</p><p><b> JNE AA14</b></p><p> MOV BL, 0D0H</p><p> AA15:MOV SI, OFFSET TAB15 ; 循環(huán)顯示第十五個圖形</p><p
91、> MOV CX, 0008H</p><p> DIS15:MOV DX, M8255_A</p><p> MOV AL, L_CON</p><p> OUT DX, AL</p><p> MOV DX, M8255_B</p><p> MOV AL, [SI]</p>&l
92、t;p> OUT DX, AL</p><p> ROR L_CON, 1</p><p><b> INC SI</b></p><p> CALL DELAY</p><p> LOOP DIS15</p><p><b> DEC BL</b><
93、/p><p> CMP BL, 00H</p><p><b> JNE AA15</b></p><p> MOV AL, 20H</p><p> OUT 20H, AL;中斷結(jié)束命令</p><p><b> IRET</b></p><
94、;p> DELA:PUSH CX</p><p> MOV CX, 0F00H</p><p> AAw:PUSH AX</p><p><b> POP AX</b></p><p><b> LOOP AAw</b></p><p><b>
95、; POP CX</b></p><p><b> RET</b></p><p> DELAY:PUSH CX ;延時子程序</p><p> MOV CX, 0100H</p><p> DLAY1:LOOP DLAY1</p&g
96、t;<p><b> POP CX</b></p><p><b> RET</b></p><p><b> CODEENDS</b></p><p><b> END START</b></p><p><b> 3
97、.2程序調(diào)試</b></p><p> 3.2.1 調(diào)試過程</p><p> 1.現(xiàn)象:LED點陣無顯示</p><p> 原因:所要顯示的40個字節(jié)內(nèi)存內(nèi)容(編碼)是在定義時賦值的,即都為00H,而在中斷服務程序中,時間改變時,末能對此內(nèi)容進行更新。</p><p> 解決:(1)修改中斷服務程序,未能實現(xiàn)。</
98、p><p> ?。?)在程序的開始直接加以任意數(shù)字編碼的賦值語句。LED有顯示。</p><p> 2.現(xiàn)象:LED所顯示的數(shù)字是左右顛倒的樣子(像是反字)。</p><p> 原因:行掃描順序應該是從第1行到第8行,而此時是從第8行到第1行。</p><p> 解決:交LED點陣的行引角接線反過來接。如硬件電路接線圖。</p>
99、<p> 3.現(xiàn)象:LED顯示內(nèi)容移動太快,難以看清。</p><p> 原因:在進行行掃描時,延時太短,另外在顯示一個字型到別一字型時,延時也短。</p><p> 解決:將DELAYL中的CX值改大,BL中的值改為0DH即可。</p><p> 4.現(xiàn)象:LED所顯示內(nèi)容不能循環(huán)移動,只能從頭左移到最后, 然
100、后就顯示一些亂碼。(這是本程序中很難解決的一個問題,即是難以被發(fā)現(xiàn)的問題)</p><p> 原因:程序中的無條件轉(zhuǎn)移指令JAE AA1,錯誤時是</p><p><b> CMP DX,8 </b></p><p> JA AA1 </p><p> 當DX為8時,就不發(fā)生轉(zhuǎn)移,接著向下執(zhí)行。而后面有
101、兩條語句:</p><p><b> MOV CX,8</b></p><p> SUB CX,DX </p><p> 執(zhí)行后CX內(nèi)容為0,緊接著就執(zhí)行</p><p> DIS3:CALL OUT_L</p><p> LOOP DIS3 </p><p
102、> 當?shù)谝淮无D(zhuǎn)向DIS3執(zhí)行時,CX自動減1,其值就變成了“8001H”,通過單步執(zhí)行可以看到這一變化。當每進行這樣的循環(huán)次數(shù)后,又要重新循環(huán)0DH次以上步驟,顯然,程序會在此執(zhí)行很長一段時間。所以出現(xiàn)亂碼。</p><p> 解決:只將JA AA1語句改為JAE AA1。</p><p> 5.現(xiàn)象:以上所顯示的時間是通過賦值語句實現(xiàn)的,但時間本身不能改變。</p>
103、;<p> 原因:中斷服務程序內(nèi)時間刷新語句有問題。</p><p> 解決:進行了多次修改,但仍未能解決。由于課設(shè)時間有限,只能實現(xiàn)到這種情況。</p><p><b> 第4章 總 結(jié)</b></p><p> 通過對這程序的制作,使我對匯編語言的基本知識的使用更加熟練,同時也增加了我對匯編語言的一些認識,在作業(yè)完成過
104、程中通過和同學的交流,也增加了合作的技巧。通過查閱以下資料也學到了一些課本上沒有的東西,拓寬了自己的知識面,增加了學好匯編語言的信心。 </p><p> 這不是第一次用匯編語言來設(shè)計一個小程序,平時做了很多實驗,寫了很多小程序。但這次是一個綜合的程序,平時的很多程序都用到了。很多子程序的設(shè)計是固定的,因此可以直接從指導資料中調(diào)用,大多只需要修改幾個參數(shù)就可以,這大大方便了我們的設(shè)計,為我們節(jié)省了很多
105、的時間。在這次課程設(shè)計中,我真正體會到了合作的重要性,遇到很多問題時,當我看書查資料不能解決時,這是去找同學討論一下,收獲很大,可以使很多問題迎刃而解,直到問題最終解決。</p><p> 在一周的課程設(shè)計里,我的態(tài)度一直很認真,并且努力去完成每一天的內(nèi)容,甚至會做半夜。雖然很累,但是程序設(shè)計的興趣卻深深地吸引了我,使我堅持到了最后。我每一天都會圍繞設(shè)計題目的要求,自行查找資料,翻閱教科書,經(jīng)過思考與深心專研
106、構(gòu)成自己的設(shè)計思路,畫出流程圖,再經(jīng)過老師的指導與修改,便完全可以成為自己的東西。一周的課程設(shè)計,時間雖然短,但我們的收獲都卻不少。</p><p> 不可否認,本程序存在不少缺點和不足,但通過這次課程設(shè)計的卻找出了自己在學習上的不足,對以后的工作也有指導作用。我相信在以后的學習中會克服這些不足,達到熟練掌握匯編語言的目的!</p><p><b> 參考文獻</b&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機原理課程設(shè)計----簡單電子鐘設(shè)計
- 微機原理課程設(shè)計-數(shù)字聲音機
- 微機原理課程設(shè)計
- 微機原理數(shù)字錄音機課程設(shè)計
- 微機原理課程設(shè)計報告
- 微機原理課程設(shè)計.rar
- 微機原理課程設(shè)計報告
- 2017微機原理課程設(shè)計
- 微機原理課程設(shè)計-全自動洗衣機
- 微機原理課程設(shè)計.rar
- 微機原理課程設(shè)計.rar
- 微機原理課程設(shè)計.rar
- 微機原理課程設(shè)計報告
- 《微機原理》課程設(shè)計報告
- 微機原理課程設(shè)計報告
- 微機原理課程設(shè)計課程設(shè)計----微機內(nèi)存擴充卡
- 微機原理課程設(shè)計課程設(shè)計----微機內(nèi)存擴充卡
- 微機原理串口通信課程設(shè)計
- 微機原理電子秒表課程設(shè)計
- 微機原理課程設(shè)計---打字練習
評論
0/150
提交評論