簡易計算機系統(tǒng)設(shè)計_第1頁
簡易計算機系統(tǒng)設(shè)計_第2頁
簡易計算機系統(tǒng)設(shè)計_第3頁
簡易計算機系統(tǒng)設(shè)計_第4頁
簡易計算機系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、成績 Xxxxxxxxxxx課程設(shè)計說明書(論文)題 目 簡易計算器系統(tǒng)設(shè)計 課 程 名 稱 微型計算機原理與接口技術(shù) 二 級 學(xué) 院 xxxxxxxxxx 專 業(yè) xxxxxxxxxx 班 級 xxxxxxxxxxxxxxxxxxxxxx學(xué) 生 姓 名 xxxxxxxxxxxx 設(shè) 計 地 點 xxxxxxx 指 導(dǎo) 教 師 xxxxxxxxxxx 設(shè)計起止時間: 2016年6 月13日至2016 年6 月24 日 目錄 一、設(shè)計任務(wù)與要求3二、設(shè)計思路3三、硬件電路設(shè)計10四、軟件編程設(shè)計11五、仿真與調(diào)試15六、結(jié)論與心得18七、參考文獻(xiàn)18簡易計算器系統(tǒng)設(shè)計一、設(shè)計任務(wù)與要求1、可以進(jìn)

2、行十進(jìn)制數(shù)四則運算。用按鍵輸入數(shù)據(jù);具有清零和復(fù)位功能;具有連續(xù)運算功能。2、在設(shè)計中可以引用所需的參考資料,避免重復(fù)工作,加快設(shè)計進(jìn)程,但必須和題目的要求相符合,保證設(shè)計的正確。學(xué)會掌握和使用各種已有的技術(shù)資料,不要盲目地、機械地抄襲資料,必須具體分析,使設(shè)計質(zhì)量和設(shè)計能力都獲得提高。要在老師的指導(dǎo)下制定好自己各環(huán)節(jié)的詳細(xì)設(shè)計進(jìn)程計劃,按給定的時間計劃保質(zhì)保量的完成個階段的設(shè)計任務(wù)。設(shè)計中可邊設(shè)計,邊修改,軟件設(shè)計與硬件設(shè)計可交替進(jìn)行,問題答疑與調(diào)試和方案修改相結(jié)合,提高設(shè)計的效率,保證按時完成設(shè)計工作并交出合格的設(shè)計報告。二、設(shè)計思路根據(jù)本次設(shè)計的設(shè)計目的及設(shè)計要求,可有下列兩種方案:1.

3、 方案1 789/456*1230=C+圖1模擬計算器模擬簡易計算器主要由鍵盤輸入和LED數(shù)碼管顯示兩部分組成,其界面如圖1所示:要設(shè)計一個模擬計算器,要用到可編程并行I/O接口芯片8255A,主要要解決8255A與鍵盤接口和8255A與LED數(shù)碼管接口的問題。1.1 8255A與鍵盤接口鍵盤是計算器的輸入設(shè)備,通過鍵盤把數(shù)據(jù)和操作命令輸入到計算器,實現(xiàn)人機對話。目前使用的鍵盤分為編碼鍵盤和非編碼鍵盤。編碼鍵盤帶有必要的硬件電路,能自動提供按鍵的ASC編碼,并能將數(shù)據(jù)保持到新鍵按下為止,還有消除抖動和防止多鍵、串鍵等保護裝置。編碼鍵盤軟件簡短,它根據(jù)編碼就能識別是什么鍵按下,但硬件電路復(fù)雜,價

4、格較貴。 非編碼鍵盤僅僅是按行、列排列起來的矩陣開關(guān),其他的工作如識別鍵、提供代碼、去抖動等由軟件來解決。為了識別鍵盤上的閉合鍵,通??梢圆捎脙煞N方式:行掃描法和行反轉(zhuǎn)法。(1)行掃描法行掃描法識別按鍵的原理如下:首先判別是否有鍵按下。將所有行線置成0電平,然后通過列線輸入全部列值,如果讀入的列值全是1,則說明沒有任何一個鍵按下;反之,如果讀入的列值不全是1,著說明有鍵按下。也就是說,在鍵盤識別的開始先進(jìn)行全掃描,若有鍵按下,則必須判別是哪個按鍵被操作。第二步確定哪個鍵被按下。一旦發(fā)現(xiàn)有鍵按下,就轉(zhuǎn)入采用逐行掃描的辦法來確定是那一個鍵被按下。先掃描第一行,即使它輸出0電平,其余的行線為高電平1

5、,然后讀入列值。如果讀入的列值中有一位為低電平0,則說明在此行的一個行、列交叉處有鍵被按下。如果讀入的列值全是1,說明這一行所有按鍵都未被按下。接著掃描第二行。依次類推,逐行掃描,直到掃完全部的行線為止。若在掃描的過程中,發(fā)現(xiàn)非全1的列值,就能找出被按下的鍵。 (2)行反轉(zhuǎn)法行反轉(zhuǎn)法識別閉和鍵時,要將行線接一個并行口,先讓它工作在輸出方式下;將列線也接一個并行口,先讓它工作在輸入方式下。程序使CPU通過輸出端口,向各行線上全部送低電平0,然后讀入列線的值(列值),如果此時有某一鍵被按下,則必定會使某一列線為0,輸入的列值其中某一位為0。然后,程序在對兩個并行端口進(jìn)行方式設(shè)置,使行線工作在輸入方

6、式,列線工作在輸出方式。利用輸出指令,使列線全部輸出為0 值。再從行線輸入行線值(行值)。行值中閉合鍵所對應(yīng)的位必然為底電平0。利用這種反轉(zhuǎn)法,可得到一對行值和列值,每一個按鍵唯一對應(yīng)一組行值和列值,行值和列值組合起來可以形成一個按鍵的識別碼。(3)在掃描鍵盤的過程中,應(yīng)注意解決以下問題:鍵抖動:當(dāng)用手按下一個鍵時,往往會出現(xiàn)按鍵在閉合和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況;在釋放一個鍵時,也會出現(xiàn)類似的情況,這就是抖動。這種抖動經(jīng)常發(fā)生在鍵被按下或抬起的瞬間,一般持續(xù)幾毫秒到幾十毫秒,隨鍵的結(jié)構(gòu)不同而不同。在掃描鍵盤過程中,必須想辦法消除鍵抖動,否則會引起錯誤。消除鍵抖動可以用硬件電路來

7、實現(xiàn),它利用RS觸發(fā)器來鎖定按鍵狀態(tài),以消除按鍵的影響。簡單的方法是利用軟件延時來消除鍵的抖動。也就是說,一旦發(fā)現(xiàn)有鍵按下,就延時20ms以后再去檢測按鍵的狀態(tài),這樣就避開了鍵發(fā)生抖動的那一段時間,再讀按鍵狀態(tài),數(shù)據(jù)可靠。重鍵:重鍵是指一個以上的按鍵同時按下而產(chǎn)生的不確定或錯誤問題。出現(xiàn)重鍵時,讀取的鍵值必然出現(xiàn)有一個以上的0。于是就產(chǎn)生了到底是否給予識別哪一鍵的問題。解決重鍵可采取的方法有:一是無效處理,當(dāng)發(fā)現(xiàn)有一個以上按鍵同時按下時,認(rèn)為此次按鍵輸入無效。二是等待釋放,將最后釋放的按鍵作為有效鍵處理。三是硬件封鎖,當(dāng)發(fā)現(xiàn)有一按鍵按下時,硬件電路即刻封鎖其他按鍵的輸入直到該鍵處理完畢。012

8、3456789+*/=C+5VPB0PB1PB2PB3PB4PB5PB6PB7PC6PC7圖2鍵盤的結(jié)構(gòu)應(yīng)防止按一次鍵而產(chǎn)生多次處理的情況:這種情況的發(fā)生是由于鍵掃描速度和鍵處理速度較快,當(dāng)某一個按下的按鍵還未及時釋放時,鍵掃描程序和鍵處理程序已執(zhí)行了多遍,這樣由于程序執(zhí)行和按鍵動作不同步,而造成一次鍵有多個鍵輸入的錯誤狀態(tài)。為了避免發(fā)生這種情況,必須保證按一次鍵,CPU只對該鍵作一次鍵處理,為此,在鍵掃描程序中不僅要檢測是否有鍵按下,在有鍵按下的情況下,作一次鍵處理;而且在鍵處理完畢后,還應(yīng)檢測按下的鍵是否釋放,只有當(dāng)按下的鍵釋放以后,程序才繼續(xù)往下執(zhí)行。這樣每按一次鍵,只有一次鍵處理,使兩

9、者達(dá)到了同步。 8*2鍵盤是一種行列式鍵盤,如圖2所示圖中有8行2列,8根行線與PB口相連,2根列線與PC口的PC6、PC7相連按鍵設(shè)置在行、列交交點處(數(shù)字或字符為其鍵號),行、列線分別連接到按鍵開關(guān)的兩端。當(dāng)列線通過上拉電阻接+5V時,接被鉗位在高電平行列式鍵盤電路狀態(tài)。鍵盤中有無按鍵按下是由列線送入全掃描字、列線讀入行線狀態(tài)來判斷的。這就是:被行線所有I/O線均置成低電平,然后讀入列線電平狀態(tài)。如果有鍵按下,總會有一根列線電平被拉至低電平,從而時列線輸入不全為1。 鍵盤中哪一個鍵是由行線逐行置成低電平后,檢查列線輸入狀態(tài)予以確定的。其方法是:依次給行線送低電平,然后查所有行線狀態(tài),如果全

10、為1,則所按下之鍵必在此行。而且與0電平行線相交的交點上的那個鍵。鍵盤的工作方式采用編程掃描的工作方式,即通過調(diào)用子程序來響應(yīng)鍵輸入的要求,在按鍵掃描子程序中完成下述功能:判斷鍵盤上有無鍵按下。其方法是先使PB7PB00,然后讀PC6、PC7的狀態(tài),若為全1則鍵盤中無鍵按下;若不全為1,則說明鍵盤中有鍵按下。去除按鍵的機械抖動影響??勺鬟@樣的處理:當(dāng)判斷有鍵按下后,軟件延時一段時間后再判斷鍵盤狀態(tài),如果仍為鍵按下狀態(tài),則認(rèn)為有一個確定的鍵按下,否則按按鍵抖動處理。求按下鍵的鍵值及鍵號。鍵盤上的每一個鍵都對應(yīng)一個鍵值。鍵盤中鍵號排列沒有規(guī)律,不能通過對鍵值直接運算得到鍵號。因此必須先判斷按下鍵是

11、使PC70還是PC6=0,然后再查為零的列線上鍵按時其8位鍵值中是否有一位為零,若為零則可得到鍵值。求按下鍵值及鍵號的目的是使程序轉(zhuǎn)到相應(yīng)的地址去完成該鍵的操作。一般,對數(shù)字鍵就是直接將該號送到顯示緩沖區(qū)進(jìn)行顯示,對功能鍵則必須先找到完成該功能鍵處理子程序的入口地址,并轉(zhuǎn)去執(zhí)行該鍵的命令。因此,當(dāng)鍵號求到后,還必須找到功能鍵處理程序入口。 為保證鍵閉合一次CPU僅進(jìn)行一次鍵功能操作。程序中需要等待鍵釋放以后再將鍵號送累加器AH。1.2 8255A與LED數(shù)碼管接口發(fā)光二級管數(shù)碼顯示器簡稱為LED(Light Emitting Diode)數(shù)碼顯示器,它由七段發(fā)光二級管組成。這種顯示器價格低廉、

12、體積小、功耗低,而可靠性有很好,因此,從單板微型機、袖珍計算機到許多微型機控制系統(tǒng)及數(shù)字化儀器都用LED作為輸出顯示。圖3數(shù)碼管外型abfgecdhLED數(shù)碼管的主要部分是七段發(fā)光二極管,如圖3所示。這七段發(fā)光二極管分別稱為a、b、c、d、e、f、g,有的產(chǎn)品還附帶有一個小數(shù)點h,通過7個發(fā)光段的不同組合,可以顯示09和AF共16個字母數(shù)字或其它異形字符。陽極abcdefgh陰極abcdefgh+5V共陽極結(jié)構(gòu) 共陰極結(jié)構(gòu)圖4 LED數(shù)碼管有共陽極、共陰極兩種結(jié)構(gòu),如圖4所示。如為共陽極結(jié)構(gòu),則共用的陽極應(yīng)接高電平,各段則輸入低電平,方為有效。如為共陰極結(jié)構(gòu),共用的陰極必須接低電平,而各段處于

13、高電平時便發(fā)光。表1表示了共陰極與共陽極結(jié)構(gòu)字符0F的編碼表。編碼的低位為a,高位為g。表1:七段LED編碼表顯示數(shù)字編碼共陰極共陽極0123456789ABCDEF.3FH06H5BH4FH66H6DH7DH07H7FH67H77H7CH39H5EH79H71H80HC0HF9HA4HB0H99H92H82HF8H80H98H88H83HC6HA1H86H8EH7FH要實現(xiàn)計算器的顯示功能,需要用6位七段LED數(shù)碼管來實現(xiàn)多位顯示。在這種方案中,硬件上用公共的驅(qū)動電路來驅(qū)動各數(shù)碼管;軟件上用掃描方法實現(xiàn)數(shù)字顯示。由于要顯示6位十進(jìn)制數(shù),因此采用6位七段LED動態(tài)顯示電路,需要一個8位I/O口

14、和一個6位I/O口,其中8位I/O控制段選碼,6位I/O控制位選。進(jìn)行6位字符顯示時,采用掃描顯示方式,即在每一瞬間只使某一位顯示相應(yīng)字符,在此瞬間,段選控制I/O輸出相應(yīng)字符段選碼,位選控制I/O口在該顯示位送入選通電平(共陰極送低電平,共陽極送高電平),以保證該位顯示相應(yīng)字符,如此輪流,使每位顯示該位應(yīng)顯示字符,并保持延遲一段時間(15ms),以造成視覺暫留效果,不斷循環(huán)送出相應(yīng)的段選碼、位選碼,就可以獲得視覺穩(wěn)定的顯示狀態(tài)。只要CPU通過段控制端口送出段代碼,然后通過位控制端口送出位代碼,指定的數(shù)碼管便顯示相應(yīng)的數(shù)字。如果CPU順序地輸出段碼和位碼,依次讓每個數(shù)碼管顯示數(shù)字,并不斷地重復(fù)

15、,當(dāng)重復(fù)頻率達(dá)到一定程度,利用人眼的視覺暫留特性,從數(shù)碼管上便可見到相當(dāng)穩(wěn)定的數(shù)字顯示。圖5是一個由8255A控制的6位共陰極顯示系統(tǒng),A口輸出LED字符7段代碼信息,C口輸出6個LED位選信號,由程序控制依次使Q0Q5低電平輪流有效,使得LED0LED5輪流顯示。PA078255APC05 驅(qū)動器驅(qū)動器LED0LED1LED2LED3LED4LED5圖5多位數(shù)碼管顯示電路示意圖2. 方案2 用匯編語言編寫程序?qū)崿F(xiàn)應(yīng)用程序的功能,從而實現(xiàn)簡易計算器匯編程序的設(shè)計與實現(xiàn)。2.1 使用設(shè)備含有Windows匯編編譯環(huán)境的MASM軟件及Office 2003軟件的計算機一臺。2.2 參數(shù)定義在本程序

16、中,定義了變量B1B8用來顯示提示信息的8個參數(shù)。定義了變量X和Y用來保存輸入的操作數(shù)。定義了變量C用來保存除法運算中的余數(shù)。定義了變量D用來保存輸入的操作符。定義了變量E等于10。3.2.3使用方法在masm環(huán)境下運行本程序,按提示依次輸入操作數(shù)、操作符,回車經(jīng)運算后便可得到運算結(jié)果,在屏幕上顯示出來;在提示下按下“g”或是回車,則繼續(xù)進(jìn)行運算或是退出程序。3、 硬件電路設(shè)計8255A與鍵盤、顯示器的接口見下圖6,鍵盤的16個按鍵組成82矩陣,其中8根作為8255A的輸出線與PA7-PA0連接,2根作為8255A的輸入線與PC7、PC6連接。PB0-PB7向顯示器提供段碼,PC0、PC1、P

17、C2給出位碼之后經(jīng)74LS138譯碼之后選中6個數(shù)碼管中的一個。PA0PA1PA6PA7PC 0PC1PC2PB 0PB1PB 6PB7021893+465*/7=CPC6PC7ABCabghA1A2A7A8a1a2CPU808674LS138圖6 8255A與鍵盤、顯示器的連接4、 軟件編程設(shè)計1.流程圖輸入第一個操作數(shù),從DAT_1開始,與0DH(回車)相比,若相同則跳轉(zhuǎn)到DAT_2除以10,保存余數(shù);否則乘以10保存,等待接收下一個數(shù)字。部分程序流程如圖8所示DAT_1開始輸入數(shù)字是否為回車?MUL E保存在AX和DI跳到DAT_2DIV E保存在A中NY圖 8 輸入數(shù)據(jù)流程圖簡易計算器

18、程序總流程圖如圖9。圖 9 輸入數(shù)據(jù)流程總圖2. 程序設(shè)計2.1 程序設(shè)計思路經(jīng)研究分析,本程序設(shè)計思路如圖7所示:輸入操作數(shù),操作符判斷是哪種運算開始運算后,十六進(jìn)制轉(zhuǎn)化為十進(jìn)制輸出結(jié)果結(jié)束圖 7 程序設(shè)計思路圖2.2 程序中的關(guān)鍵技術(shù)INT 21H 指令01H號功能:等待從標(biāo)準(zhǔn)設(shè)備輸入一個字符,將該字符的ASCII碼送給AL,并在標(biāo)準(zhǔn)輸出設(shè)備上顯示該字符。入口參數(shù):無。出口參數(shù):AL的內(nèi)容為輸入字符的ASCII碼。02H號功能:顯示器輸出,用文本坐標(biāo)下設(shè)置光標(biāo)位置。入口參數(shù):DL的內(nèi)容為輸出字符的ASCII碼。出口參數(shù):無09H號功能:在標(biāo)準(zhǔn)輸出設(shè)備上顯示某個字符串。入口參數(shù):DX的內(nèi)容為

19、要顯示的字符串的首地址。出口參數(shù):無從設(shè)計方案的可行性及經(jīng)濟技術(shù)指標(biāo)等方面綜合考慮,方案二更合理,具有可行性且運算方便快捷。故選擇方案二。五 、仿真與調(diào)試 1.程序編寫第一步:對要實現(xiàn)的功能進(jìn)行大體分析,畫出程序的總流程圖。第二步:將這些功能的實現(xiàn)分別編寫程序來實現(xiàn)。第三步;編寫代碼,上機調(diào)試和運行程序。 2.上機編譯與調(diào)試第一步:編輯源程序:即建立.ASM文件。第二步:匯編源程序。源文件建立后,要用匯編程序?qū)υ次募M(jìn)行匯編,以便產(chǎn)生二進(jìn)制的目標(biāo)文件(.OBJ文件)。本程序用MASM.EXE編譯界面如圖10示。圖 10 用MASM.EXE編譯界面第三步;用LINK程序產(chǎn)生.EXE文件。匯編程序

20、已產(chǎn)生出二進(jìn)制的代碼文件(.OBJ),但.OBJ文件并不是可執(zhí)行文件,還必須使用(LINK)把.OBJ文件轉(zhuǎn)換為可執(zhí)行的.EXE文件。用LINK.EXE連接為可執(zhí)行文件界面如圖11所示。圖 11 用MASM.EXE編譯界面第四步;程序的調(diào)試。建立KDW.EXE文件后,就可以直接在DOS下運行此程序,如下所示:C:KDW回車C:_程序運行結(jié)束后,返回DOS.如果運算結(jié)果正確且程序已把結(jié)果直接顯示在屏幕上,那么程序運行結(jié)束時結(jié)果也就得到了。如果程序不顯示結(jié)果,我們?nèi)绾沃莱绦蚴欠裾_呢?這時,就要使用TD.EXE調(diào)試工具來查看運行結(jié)果。此外,大部分程序必須經(jīng)過調(diào)試階段才能糾正程序執(zhí)行中的錯誤,調(diào)試程序時也要使用TD.EXE。 3.運行結(jié)果在masm環(huán)境下運行本程序,按提示依次輸入操作數(shù)、操作符,回車經(jīng)運算后便可得到運算結(jié)果,在屏幕上顯示出來;在提示下按下“g”,則繼續(xù)進(jìn)行運算或是退出程序。結(jié)果圖12和圖13所示:圖 12 加法和減法運行結(jié)果圖 13 乘法和除法運行結(jié)果本課程設(shè)計從匯編語言程序的編寫及應(yīng)用出發(fā),設(shè)計了一個簡易計算器系統(tǒng),本設(shè)計能夠完成5位數(shù)以內(nèi)的加減乘除四則運算,并且能夠顯示除法所得余數(shù),同時具有清零和復(fù)位功能,達(dá)到了連續(xù)運

溫馨提示

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

最新文檔

評論

0/150

提交評論