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

下載本文檔

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

文檔簡介

1、鄭州航空工業(yè)管理學院微機原理課程設計說明書 2015 級 電氣工程及其自動化S 專業(yè) 班級題 目 姓 名 學號 指導教師 2015 年 12 月 日摘 要隨著經(jīng)濟的發(fā)展,不斷推動著科技的發(fā)展,而科技的發(fā)展又帶動了電子行業(yè),各種各樣的電子產(chǎn)品紛紛涌出。計算器作為日常生活中常使用的電子產(chǎn)品之一,它的功能化、小型化、輕便化已成為未來智能化計算器的發(fā)展方向。 本設計是基于AT89S52單片機進行的簡易計算器系統(tǒng)設計,P1口作為輸入端,外接4*4矩陣式鍵盤,通過在4*4矩陣式鍵盤輸入,進行加、減、乘、除簡單運算,實現(xiàn)-2147483647到+2147483647的結果運算,并且在P0口上的LC

2、D1602液晶顯示器顯示相應的計算結果。  【關鍵詞】AT89S52、4*4矩陣式鍵盤、LCD1602 、計算器目錄摘 要12 系統(tǒng)分析32.1硬件部分32.1.1 8279A42.2軟件部分153設計方案164 硬件電路設計175 軟件設計195.1 控制程序設計思路195.2程序流程圖196 系統(tǒng)調(diào)試246.1 硬件調(diào)試246.2 軟件調(diào)試246.3 聯(lián)機調(diào)試256.4 調(diào)試結果及問題的提出256.4.1 調(diào)試中出現(xiàn)的問題256.4.2調(diào)試結果25設計總結26附錄27參考文獻36 2 系統(tǒng)分析2.1硬件部分單片機工作在單任務狀態(tài),時間充裕,速度不是主

3、要矛盾,所以用軟件實現(xiàn)數(shù)字和符號的輸入以及計算功能,以減少硬件開銷。接口用硬件實現(xiàn)。具體器件的名稱和特點如下表所示:表2-1 硬件選擇比較 L E D L C DLED顯示器與LCD顯示器相比,LED在亮度、功耗、可視角度和刷新速率等方面,都更具優(yōu)勢。LED與LCD的功耗比大約為10:1,LED的最顯著特點是使用壽命長,光電轉換效能高,綠色環(huán)保LCD占用空間小,低功耗,低輻射,能降低視覺疲勞,但是會出現(xiàn)閃爍問題 8279芯片 8255A芯片8279芯片可以實現(xiàn)對鍵盤/顯示器的自動掃描,以減輕CPU負擔,具有顯示穩(wěn)定,程序簡單,不會出現(xiàn)誤動作等8255芯片是可編程的并行接口芯片,不需要附加外部電

4、路便可和大多數(shù)并行傳輸數(shù)據(jù)的外部設備相連,數(shù)據(jù)的各位同時傳送,使用十分方便 十六進制小鍵盤 二進制開關鍵盤(Keyboard)是常用的輸入設備,它是由一組開關矩陣組成,結構相對復雜,與8279A配套使用二進制邏輯開關一位表示一個二進制數(shù),對于本實驗每一位數(shù)需要多次撥動八位開關,使實驗復雜了許多通過以上分析,本次設計所選用的芯片為:8279A芯片、LED發(fā)光二極管、十六進制小鍵盤。由于8279A的輸出電流與LED不匹配的問題,需要驅(qū)動電流,本實驗中選擇74LS240。2.1.1 8279A2.1.1.1 8279A在本設計中的作用 在本設計中用8279A芯片控制鍵盤輸入和LED顯示。2.1.1.

5、2 8279A的功能分析1、8279A主要特性8279A芯片是一種通用的可編程序的鍵盤/顯示接口器件,單個芯片就能完成鍵盤輸入和LED顯示控制兩種功能。可與任何8位機接口。8279A芯片包括鍵盤輸入和顯示輸出兩個部分。若采用8279作為鍵盤/顯示器接口,則可以實現(xiàn)對鍵盤、顯示器自動掃描,8279主要是管理鍵盤輸入和顯示器輸出的。8279可編程鍵盤顯示器接口芯片具有動態(tài)顯示驅(qū)動電路簡單、不占用CPU 的時間、可自動進行鍵盤掃描、與計算機接口方便、編程容易、系統(tǒng)靈活等特點當今已成為設計計算機應用系統(tǒng),特別是實時性較高的測控系統(tǒng)的首選器件之一。2、8279A的內(nèi)部結構圖2-1 8279A的內(nèi)部結構圖

6、中,IRQ:中斷請求輸出線,DB0DB7:雙向數(shù)據(jù)總路線(傳送命令、數(shù)據(jù)、狀態(tài)),、:讀寫控制輸入端,RESET:復位輸入端,CLK:時鐘輸入端,:片選,C和/D(A0):片內(nèi)寄存器選址,OUTA0A1、OUTB0B3:8位顯示輸出端,:熄滅顯示輸出端,SL0SL3:公用掃描輸出線,RL0RL7:鍵盤回饋輸入線,SHIFT:抵擋鍵輸入線,CNTL/STB:控制/選通輸入線。另外,8279的鍵盤接口部分內(nèi)部有一個8×8位先進先出的堆棧(FIFO),用來存放鍵盤輸入代碼,顯示器接口部分內(nèi)部有一個16×8位顯示RAM,用來顯示段數(shù)據(jù),能為16位LED顯示器(或其它顯示器)提供多路

7、掃描接口。3、8279A的引腳信號和功能8279可編程鍵盤顯示器接口芯片具有動態(tài)顯示驅(qū)動電路,不占用CPU 的時間、可自動進行鍵盤掃描、與計算機接口方便、編程容易、系統(tǒng)靈活等特點。 8279 是可編程的鍵盤/顯示接口芯片。它既具有按鍵處理功能,又具有自動顯示功能,在單片機系統(tǒng)中應用很廣泛。8279內(nèi)部有鍵盤 FIFO (先進先出堆棧)/傳感器,雙重功能的 8×8=64B RAM,鍵盤控制部分可控制 8×8=64 個按鍵或 8×8 陣列方式的傳感器。該芯片能自動消抖并具有雙鍵鎖定保護功能。顯示 RAM容量為 16×8,即顯示器最大配置可達 16 位 LED

8、數(shù)碼顯示。4、8279的命令字及其格式 8279有三種工作方式:鍵盤工作方式、顯示工作方式和傳感器工作方式。鍵盤工作方式:雙鍵互鎖和N鍵輪回。雙鍵互鎖是指當有兩個以上按鍵同時按下時,只能識別最后一個被釋放的按鍵,并把其鍵值送入內(nèi)部FIFO RAM中。N鍵輪回是指當有多個按鍵同時按下時,所有按鍵的鍵值均可按掃描順序依次存入FIFO RAM中。顯示工作方式:是指CPU輸入至8279內(nèi)部FIFO RAM的數(shù)據(jù)的輸出格式,有8個字符左端入口顯示、16個字符左端入口顯示、8個字符右端入口顯示、16個字符右端入口顯示四種方式。傳感器方式:是指掃描傳感器陣列時,一旦發(fā)現(xiàn)傳感器的狀態(tài)發(fā)生變化就置位INT向CP

9、U申請中斷。選擇不同的工作方式均是通過CPU對8279送入命令來進行控制。8279共有8種命令,命令寄存器為8位,其中D7D5為命令特征位,D4D0為命令的控制位。CPU對8279寫入的命令數(shù)據(jù)為命令字,讀出的數(shù)據(jù)為狀態(tài)字。8279共有八條命令,其功能及命令字格式分述如下。(1)鍵盤/顯示方式設置命令字命令格式: D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 D D K K K其中:D7、D6、D5=000為方式設置命令特征位。DD(D4、D3):用來設定顯示方式,如表2-2所示。表2-2 顯示方式選擇D4D3顯示方式008個字符顯示,左端入口0116個字符顯示,左端入口108個

10、字符顯示,右端入口1016個字符顯示,右入口所謂左入口 ,即顯示位置從最左一位(最高位)開始,以后逐次輸入的顯示字符逐個向右順序排列;所謂右入口,則是顯示位置從最右一位(最低位)開始,以后逐次輸入顯示字符時,已有的顯示字符依次向左移動。KKK(D2、D1、D0):用來設定七種鍵盤/顯示掃描方式,如表2-3所示。表2-3 鍵盤/顯示掃描方式D2D1D0鍵盤/顯示掃描方式000編碼掃描鍵盤,雙鍵鎖定001譯碼掃描鍵盤,雙鍵鎖定010編碼掃描鍵盤,N鍵輪回011譯碼掃描鍵盤,N鍵輪回100編碼掃描傳感器矩陣101譯碼掃描傳感器矩陣110選通輸入,編碼顯示掃描111選通輸入,譯碼顯示掃描(2)時鐘編程

11、命令命令格式: D7 D6 D5 D4 D3 D2 D1 D0 0 0 1 P P P P P其中:D7、D6、D5=001為時鐘命令特征位。PPPPP(D4、D3、D2、D1、D0)用來設定外部輸入CLK時鐘脈沖的分頻系數(shù)N。N取值范圍為231。如CLK輸入時鐘頻率為2MHZ,PPPPP應被置為10100(N=20),才可獲得8279內(nèi)部要求的100KHZ的時鐘頻率。(3)讀FIFO/傳感器RAM命令命令格式: D7 D6 D5 D4 D3 D2 D1 D0 0 1 0 AI X A A A其中:D7、D6、D5=010為讀FIFO/傳感器RAM命令特征位。該命令字只在傳感器方式時使用。在C

12、PU讀傳感器RAM之前,必須用這條命令來設定所讀傳感器RAM中的地址。AAA(D2、D1、D0)為傳感器RAM中的八個字節(jié)地址。AI(D4)為自動增量特征位。當AI=1時,每次讀出傳感器RAM后地址自動加1使地址指向下一個存儲單元。這樣,下一個數(shù)據(jù)便從下一個地址讀出,而不必重新設置讀FIFO/傳感器RAM命令。在鍵盤工作方式中,由于讀出操作嚴格按照先入先出順序,因此,不需使用這條命令。(4)讀顯示RAM命令命令格式: D7 D6 D5 D4 D3 D2 D1 D0 0 1 1 AI A A A A其中:D7、D6、D5=011為讀顯示RAM命令字的特征位。該命令字用來設定將要讀出的顯示RAM地

13、址。AAAA(D3、D2、D1、D0)用來尋址顯示RAM中的存儲單元。由于位顯示RAM中有16個字節(jié)單元,故需要4位尋址。AI(D4)為自動增量特征位。AI=1時,每次讀出后地址自動加1,指向下一地址。(5)寫顯示RAM命令命令格式: D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 AI A A A A其中:D7、D6、D5=100為寫顯示RAM命令字的特征位。在寫顯示RAM之前用這個命令字來設定將要寫入的顯示RAM地址。AAAA(D3、D2、D1、D0)為將要寫入的顯示RAM中的存儲單元地址。AI(D4)為自動增量特征位。AI=1時,每次寫入后地址自動加1,指向下一次寫入地址。(

14、6)顯示禁止寫入/消隱命令命令格式: D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 X IW/A IW/B BL/A BL/B其中:D7、D6、D5=101為顯示禁止寫入/消隱命令特征位。IW/A、IW/ B(D3、D2)為A、B組顯示RAM寫入屏蔽位。當A組的屏蔽位D3=1時,A組的顯示RAM禁止寫入。因此,從CPU寫入顯示器RAM數(shù)據(jù)時,不會影響A的顯示。這種情況通常在采用雙4位顯示器時使用。因為兩個四位顯示器是相互獨立的。為了給其中一個四位顯示器輸入數(shù)據(jù)而又不影響另一個四位顯示器,因此必須對另一組的輸入實行屏蔽。BL/A、BL/ B(D1、D0)為消隱設置位。用于對兩組顯示

15、輸出消隱。若BL=1,對應組的顯示輸出被消隱。當BL=0,則恢復顯示。(7)清除命令命令格式: D7 D6 D5 D4 D3 D2 D1 D0 1 1 0 CD CD CD CF CA 其中:D7、D6、D5=110為清除命令特征位。清除顯示RAM方式如表2-4所示。表2-4 顯示RAM清除方式D4D3D2清除方式10×將全部顯示RAM清為00H110將全部顯示RAM置為20H,A組輸出0010,B組輸出0000111將全部顯示RAM置為FFH0××D0=0不清除,D0=1按上述方法清除CF(D1)用來置空FIFO存儲器,當CF=1時,執(zhí)行清除命令后,F(xiàn)IFO R

16、AM被置空,使INT輸出線復位。同時,傳感器RAM的讀出地址也被置為0。CA (D0)為總清的特征位。它兼有CD和CF的聯(lián)合效能。在CF =1時,對顯示的清除方式由D3、D2的編碼決定。顯示RAM清除時間約需160us。在此期間狀態(tài)字的最高位Du=1,表示顯示無效。CPU不能向顯示RAM寫入數(shù)據(jù)。(8)結束中斷/錯誤方式設置命令命令格式: D7 D6 D5 D4 D3 D2 D1 D0 1 1 1 E X X X X其中:D7、D6、D5=111為該命令的特征位。此命令有兩種不同的作用。作為結束中斷命令。在傳感器工作方式中使用。每當傳感器狀態(tài)出現(xiàn)變化時,掃描檢測電路就將其狀態(tài)寫入傳感器RAM,

17、并啟動中斷邏輯,使INT變高,向CPU 請求中斷,并且禁止寫入傳感器RAM。此時,若傳感器RAM 讀出地址的自動遞增特性沒有置位(AI=0),則中斷請求INT在CPU第一次從傳感器RAM讀出數(shù)據(jù)時就被清除。若自動遞增特征已置位(AI=1),則CPU對傳感器RAM 的讀出并不能清除INT,而必須通過給8279寫入結束中斷/錯誤方式設置命令才能使INT變低。因此,在傳感器工作方式中,此命令用來結束傳感器RAM的中斷請求。作為特定錯誤方式設置命令。在8279已被設定為鍵盤掃描N鍵輪回方式以后,如果CPU給8279又寫入結束中斷/錯誤方式設置命令(E=1),則8279將以一種特定的錯誤方式工作。這種方

18、式的特點是:在8279的消抖周期內(nèi),如果發(fā)現(xiàn)多個按鍵同時按下,則FIFO狀態(tài)字中的錯誤特征位S/E將置1,并產(chǎn)生中斷請求信號和禁止寫入FIFO RAM。上述八種用于確定8279操作方式的命令字皆由D7D6D5特征位確定,輸入8279后能自動尋址相應的命令寄存器。因此,寫入命令字時唯一的要求是使數(shù)據(jù)選擇信號A0 =1。5、8279的狀態(tài)字及其格式 8279的FIFO狀態(tài)字,主要用于鍵盤和選通工作方式,以指示FIFO RAM中的字符數(shù)和有無錯誤發(fā)生。其格式為: D7 D6 D5 D4 D3 D2 D1 D0 DU S/E O U F N N N其中:Du(D7)為顯示無效特征位。當 Du=1表示顯

19、示無效。當顯示RAM由于清除顯示或全清命令尚未完成時,Du=1,此時不能對顯示RAM寫入。S/E(D6)為傳感器信號結束/錯誤特征位。該特征位在讀出FIFO 狀態(tài)字時被讀出。而在執(zhí)行CF =1的清除命令時被復位。當8279工作在傳感器工作方式時,若S/E=1,表示傳感器的最后一個傳感器信號已進入傳感器RAM;而當8279工作在特殊錯誤方式時,若S/E=1則表示出現(xiàn)了多鍵同時按下錯誤。O、U(D5、D4)為超出、不足錯誤特征位。對FIFO RAM 的操作可能出現(xiàn)兩種錯誤:超出或不足。當FIFO RAM 已經(jīng)充滿時,其它的鍵盤數(shù)據(jù)還企圖寫入FIFO RAM ,則出現(xiàn)超出錯誤,超出錯誤特征位O(D5

20、)置1;當FIFO RAM已經(jīng)置空時,CPU還企圖讀出,則出現(xiàn)不足錯誤,不足錯誤特征位U(D4)置1。F(D3)表示FIFO RAM中是否已滿標志,若F=1表示已滿。NNN(D2、D1、D0)表示FIFO RAM中的字符數(shù)據(jù)個數(shù)。6、數(shù)據(jù)輸入/輸出格式對8279輸入/輸出數(shù)據(jù)不僅要先確定數(shù)據(jù)地址口,而且數(shù)據(jù)存放也要按一定格式,其格式在鍵盤和傳感器方式有所不同。(1) 鍵盤掃描方式數(shù)據(jù)輸入格式鍵盤的行號、列號及控制鍵格式如下:圖2-2 鍵盤的行號、列號及控制鍵格式控制鍵CNTL、SHIFT為單獨的開關鍵。CNTL與其它鍵連用作特殊命令鍵,SHIFT可作上、下?lián)蹩刂奇I。(2)傳感器方式數(shù)據(jù)輸入格式

21、此種方式8位輸入數(shù)據(jù)為RL0RL7的狀態(tài)。格式如下: D7 D6 D5 D4 D3 D2 D1 D0RL7 RL6 RL5 RL4 RL3 RL2 RL1 RL02.1.2 74LS138譯碼器2.1.2.2 74LS138譯碼器在本設計中的作用 掃描計數(shù)器采用編碼工作方式2.1.2.3 74LS138譯碼器的功能分析74LS138是3/8譯碼器,即對3個輸入信號進行譯碼。得到8個輸出狀態(tài)。G1,G2A,G2B,為數(shù)據(jù)允許輸出端,G2A,G2B低電平有效。G1高電平有效。A,B,C為譯碼信號輸出端,Y0Y7為譯碼輸出端,低電平有效。 圖2-3 74LS138 圖2-4 功能表 2.1.2.4

22、74LS138譯碼器的技術參數(shù) 極限值 電源電壓-7V 輸入電壓 74LS138-7V 工作環(huán)境溫度 74LS138-070 貯存溫度- 65150 2.1.3 74LS2402.1.3.1 74LS240譯碼器在本設計中的作用本設計實驗中主要是為增加LED的驅(qū)動電流2.1.3.2 74LS240譯碼器的功能分析74LS240 TTL 八反相三態(tài)緩沖器/線驅(qū)動器引出端符號: 1A,2A 輸入端 , 三態(tài)允許端(低電平有效) 1Y8Y 輸出端 圖2-5 74LS240邏輯圖表2-5 74LS240功能表輸入輸出AYLLHLHXHLZ2.1.3.3 74LS240譯碼器的技術參數(shù) 極限值: 電源電

23、壓 . 7V 輸入電壓 . 5.5V 輸出高阻態(tài)時高電平電壓 . 5.5V 工作環(huán)境溫度 74LS240 . 070 存儲溫度 . -65150 2.1.4 4*4矩陣式鍵盤2.1.4.1 小鍵盤在本設計中的作用本設計中,小鍵盤用于輸入二進制數(shù)字。2.1.4.2 小鍵盤的功能分析通常使用的鍵盤是矩陣結構的。對于4×4=16個鍵的鍵盤,采用矩陣方式只要用8條引線和2個8位端口便完成鍵盤的連接。如圖,這個矩陣分為4行4列,如果鍵5按下,則第1行和第1列線接通而形成通路。如果第1行線接低電平,則鍵5的閉合,會使第1列線也輸出低電平。矩陣式鍵盤工作時,就是按行線和列線的電平來識別閉合鍵的。

24、圖3-5 4×4鍵盤矩陣圖行掃描法識別按鍵的原理如下:先使第0行接低電平,其余行為高電平,然后看第0行是否有鍵閉合。這是通過檢查列線電位來實現(xiàn)的,即在第0行接低電平時,看是否有哪條列線變成低電平。如果有某列線變?yōu)榈碗娖?,則表示第0行和此列線相交位置上的鍵被按下;如果沒有任何一條列線為低電平,則說明第0行沒有任何鍵被按下。此后,再將第1行接低電平,檢測是否有變?yōu)榈碗娖降牧芯€。如此重復地掃描,直到最后一行。在掃描過程中,當發(fā)現(xiàn)某一行有鍵閉合時,也就是列線輸入中有一位為0時,便退出掃描,通過組合行線和列線即可識別此刻按下的是哪一鍵。實際應用中,一般先快速檢查鍵盤中是否有鍵按下,然后再確定按

25、鍵的具體位置。為此,先使所有行線為低,然后檢查列線。這時如果列線有一位為0,則說明必有鍵被按下, 采用掃描法可進一步確定按鍵的具體位置。2.1.5 七段LED顯示器2.1.5.1 LED作用LED發(fā)光二級管(Light-Emitting Diode),在本設計中采用7段數(shù)字發(fā)光二級管,做為終端顯示。顯示數(shù)值的輸入和結果的顯示。本設計中采用共陽極接法。2.1.5.2 LED功能分析物理構造:LED發(fā)光二級管,采用砷化鎵、鎵鋁砷、和磷化鎵等材料制成,其內(nèi)部結構為一個PN結,具有單向?qū)щ娦浴?圖3-6 LED結構圖數(shù)字成像:將七個發(fā)光管進行組合,排列成數(shù)字圖形8,再根據(jù)需要控制七個管的亮與滅,即可顯

26、示出定義數(shù)字。表3-6 LED數(shù)碼表字型A B C Da b c d e f g bpOX00 0 0 01 1 1 1 1 1 0 03f10 0 0 10 1 1 0 0 0 0 00620 0 1 01 1 0 1 1 0 1 05b30 0 1 11 1 1 1 0 0 1 04f40 1 0 00 1 1 0 0 1 1 0 6650 1 0 11 0 1 1 0 1 1 0 6d60 1 1 00 0 1 1 1 1 1 07d70 1 1 11 1 1 0 0 0 0 00781 0 0 01 1 1 1 1 1 1 07f91 0 0 11 1 1 0 0 1 1 06fA1

27、0 1 01 1 1 0 1 1 1 077B1 0 1 10 0 1 1 1 1 1 0 7cC1 1 0 01 0 0 1 1 1 0 039D1 1 0 10 1 1 1 1 0 1 05eE1 1 1 01 0 0 1 1 1 1 079F1 1 1 11 0 0 0 1 1 1 0712.1.5.3 LED技術參數(shù)表3-7 LED技術參數(shù)表2.2軟件部分輸入:小鍵盤上的16個按鍵中0到9十個數(shù)字鍵作為數(shù)字輸入,A、B、C、D分別作為加、減、乘、除,F(xiàn)作為等于號,通過對8279初始化實現(xiàn)對每個按鍵賦予不同的功能。顯示:8279A芯片內(nèi)部有一個顯示RAM和一個FIFO RAM,可以暫存從

28、小鍵盤中讀出的數(shù)據(jù),同時可以將內(nèi)存中的數(shù)據(jù)暫存到顯示RAM中,簡化了程序復雜度。每次將各個位要顯示的數(shù)據(jù)處理好后到換碼表中找到對應值,初始化8279后將值送到數(shù)據(jù)口即實現(xiàn)顯示的目的。清零:在程序中設置了按鍵數(shù)目的限制,定為8,當8個數(shù)碼塊全有字符顯示后,再按鍵,清除顯示。3設計方案首先利用程序不斷掃描鍵盤是不是有輸入,如果沒有就一直掃描,如果有就停止掃描,完成輸入,利用匯編的程序核對輸入鍵的數(shù)值,通過調(diào)用子程序進行2位數(shù)四則運算。運算完成后將運算的結果儲存并顯示到LED顯示器上。通過鍵盤上的C鍵實現(xiàn)清零和復位功能。在一次運算之后可以直接進行下一次運算無需復位。4 硬件電路設計圖 4-1 硬件接

29、線圖圖中8279的地址由和A0決定,故數(shù)據(jù)口地址為7FFEH,命令口地址為7FFFH。所接的16個按鍵,掃描線接在74HC138的譯碼輸出端和上,當為0(SL2SL1SL0=000)時,掃描第1列按鍵,當為0(SL2SL1SL0=001)掃描第2列按鍵,故07號按鍵的鍵值為00H07H,815號按鍵鍵值為08H0FH。當某一按鍵被按下后,鍵值就自動進入緩沖區(qū),當8279內(nèi)部RAM不空時由INT輸出高電平告知CPU取走,故INT連接CPU的中斷輸入需加一反向器。8279鍵盤配置最大為8×8,若要配置64個按鍵,其它列掃描線可分別連至至上,形成8行8列的按鍵掃描電路。圖中顯示部分段選碼由

30、8279的OUTA3OUTA0、OUTB3OUTB0通過驅(qū)動器74LS240提供,位選碼由SL2SL0 經(jīng)3-8譯碼器通過驅(qū)動器74LS240提供。圖4-2接線原理圖5 軟件設計5.1 控制程序設計思路8279是可編程接口芯片,通過編程使其實現(xiàn)相應的功能,編程的過程實際上就是CPU向8279發(fā)送控制指令的過程。在軟件設計中,顯示方式采用了8個字符顯示,從左輸入方式,編碼掃描鍵盤,雙鍵鎖定。由于該系統(tǒng)對實時性及速度要求并不十分高,所以時鐘頻率采用6M Hz已足夠了,故程序時鐘命令字取為2AH,用以保證100kHz的內(nèi)部工作頻率。由于采用10ms定時掃描查詢方式,所以在下次開始掃描時,先應清空82

31、79,清除顯示RAM大約需要160s的時間,在此期間,F(xiàn)IFO狀態(tài)字的最高位DU=1,表示顯示無效,CPU不能顯示RAM寫入數(shù)據(jù),所以清除命令狀態(tài)字取D1H。CPU對8279的控制是先讀回8279的狀態(tài)字,查看PIFORAM中有無字符,若有將根據(jù)字符個數(shù)讀出所有字符,并進行相應處理;若無,則直接返回。CPU對8279的監(jiān)視采用查詢方式,對8279分配的數(shù)據(jù)口地址為8000H,狀態(tài)口地址為8001H,CPU每隔10ms定時中斷查詢一次,所有顯示采用查詢段碼表的方式實現(xiàn),簡化了程序設計過程,提高了程序質(zhì)量。5.2程序流程圖開始調(diào)用地址轉化調(diào)用8279初始化DI取數(shù)據(jù)首地址是否有按鍵按下N按鍵數(shù)加1

32、顯示結果AL=6 ?AL與KEYCONT換CALL KEY_NUMAL中是否為加AL是否為減AL是否為乘號AL是否為除AL中大于10AL<->KEYOUNT,INC ALAL<5?重新掃描按鍵轉加法轉減法轉乘法轉除法按鍵數(shù)置0,清除顯示清零NNNNYYNNYYNNN 2. 加法程序流程圖加法入口NUM首地址àDIDI-àALAL乘以10AL+DI中的第二個數(shù)AL-àBL將第三個數(shù)給ALAL乘10加第四個數(shù)AL+BL-àALLED_TAB-àLEADATA_8279-àDXAH=0:10-àCLAL除CL:

33、余數(shù)-àAHAH-àCH顯示AL轉到FIRST 3. 減法程序流程圖減法入口NUM首地址àDIDI-àALAL乘以10AL+DI中的第二個數(shù)AL-àBL將第三個數(shù)給ALAL乘10加第四個數(shù)AL-BL-àALLED_TAB-àLEADATA_8279-àDXAH=0:10-àCLAL除CL: 余數(shù)-àAHAH-àCH顯示AL轉到FIRST 4. 乘法程序流程圖乘法入口NUM首地址àDIDI-àALAL乘以10AL+DI中的第二個數(shù)AL-àBL將第三個數(shù)給AL

34、AL乘10加第四個數(shù)AL乘BL-àALLED_TAB-àLEADATA_8279-àDXAH=0:10-àCLAL除CL: 余數(shù)-àAHAH-àCH顯示AL轉到FIRST 5. 除法程序流程圖除法入口NUM首地址àDIDI-àALAL乘以10AL+DI中的第二個數(shù)AL-àBL將第三個數(shù)給ALAL乘10加第四個數(shù)AL除以BL-àALLED_TAB-àLEADATA_8279-àDXAH=0:10-àCLAL圖3-3 主控程序流程圖除CL: 余數(shù)-àAHAH-

35、àCH顯示AL轉到FIRST6 系統(tǒng)調(diào)試6.1 硬件調(diào)試本設計采用八位七段LED顯示器、2×8小鍵盤、74LS138、74LS240及8279A,LED顯示器采用的是共陰極接法,8279A通過74LS 138譯碼器擴展2×8鍵盤、8位顯示器,最后通過七段LED顯示出相應的數(shù)字。將八位七段LED測試完后,都能正常顯示,則硬件調(diào)試成功。6.2 軟件調(diào)試寫出設計思路,并畫出程序流程圖;這個步驟很重要,它可以有效的避免或快速的找出編寫程序中出現(xiàn)的錯誤,編寫、運行并調(diào)試程序。本實驗通過小鍵盤的按鍵輸入與鍵號相同的十進制數(shù)值,利用LED七段顯示器循環(huán)顯示與所按下鍵相對應的十進

36、制數(shù),編譯鏈接無錯誤后開始單步調(diào)試,找出錯誤的地方,確保無誤后全速運行得出結果。6.3 聯(lián)機調(diào)試 將實驗箱總電源開關打開,打開PC機上的集成軟件。編譯程序、編譯通過后,單步調(diào)試并觀察結果以及各寄存器中值得變化,然后單步連續(xù)執(zhí)行觀察按下鍵與顯示數(shù)值。出現(xiàn)問題時對程序進行修改,直至出現(xiàn)正確結果。再作全速運行。6.4 調(diào)試結果及問題的提出6.4.1 調(diào)試中出現(xiàn)的問題1) 全速運行時LED顯示器顯示全為暗紅色8字型?原因:由于指令運行的速度很快,導致新舊數(shù)據(jù)有重影(前一次顯示數(shù)據(jù)時為亮的二極管沒有顯示結束,導致新顯示的數(shù)據(jù)看不清楚)。8個數(shù)碼塊全有字符顯示后,再按鍵調(diào)用clear子程序清除顯示,最后用

37、 in al,dl test al,80h 測試顯示RAM是否清除完畢(D7=1?)。2) 程序在輸入完兩個數(shù)值后,按ABCD鍵即加減乘除卻沒有結果顯示出來?原因:在程序上結構混亂,導致程序調(diào)用出現(xiàn)錯誤,不調(diào)用算法子程序,使得結果不顯示 。6.4.2調(diào)試結果實驗調(diào)試運行通過后,LED無顯示。輸入兩個兩位數(shù),每按一位,在LED低位上顯示出相應數(shù)值,之前輸入的數(shù)字則往左移動一位。所輸入的數(shù),前兩位作為第一個數(shù),后兩位作為第二個數(shù),再輸入加減乘除,調(diào)用相應子程序,計算結果并且顯示出來。設計總結本課程設計實現(xiàn)了一個簡易的計算器,利用到了8279A和LED,小鍵盤和74LS138等芯片,主要的轉換通過匯

38、編程序?qū)崿F(xiàn)。實現(xiàn)的是將輸入的十六進制數(shù)通過LED顯示器顯示為十六進制的字型碼,這是一個非?;A的實驗,在很多中型或大型的實驗中,例如倒計時鐘、交通燈實驗中都需要實現(xiàn)這一部分的功能。因此力求做到簡潔和容易實現(xiàn),并需要有較好的可移植性,可以比較容易的用于其它較為復雜的程序。本課程設計鍛煉了我多方面的能力。在考慮邏輯圖的具體設計方案時,經(jīng)過查找各種資料先選出可用的芯片,最后通過比較他們的技術參數(shù)、特點及性價比等選出最適合本設計的硬件搭配,這鍛煉了我查找信息分析問題的能力和知識的應用能力,掌握了計算機中常用接口電路8279A的應用和設計技術, 如控制字、方式字的設置以及如何控制輸出和輸出等,了解了七段

39、LED顯示器的顯示原理。在寫控制程序前,準備好設計思路和畫流程圖是非常重要的,它讓我有針對性的編寫程序,可以有效的避免和及時發(fā)現(xiàn)錯誤。程序運行正確后,優(yōu)化程序;這不但提高程序的運行速度,還能提高了我匯編語言的水平,學到了更多的編程技巧。 通過本次設計,我最深的感觸就是處理問題不要急于求成,要不斷反復對問題的思考,可以增加我們很多原先沒有考慮到的東西,以減少失敗的概率。對任何實際問題的處理,都是建立在我們所學的基礎知識之上,只有牢固熟練的掌握了基礎知識,才能夠?qū)栴}的解決有個宏觀準確的把握,找到解決問題的切入點,攻克難點。要有嚴謹?shù)膽B(tài)度,對問題的思考不要畏難,因為任何一點小的思路的錯誤或者語法的

40、錯誤,都會導致功能不能實現(xiàn)。同時查閱參考書,在網(wǎng)上查找相關資料都能夠給我們提供很多寶貴的信息。最重要的是,在找不到突破的時候要向老師請教,張教授的指導言簡意賅,能夠給我們的設計思路指定準確的方向。最后就是要不斷完善和修改,使功能的實現(xiàn)更加完善,同時可以提高我們對知識的靈活運用。附錄程序清單:STACK SEGMENT STCAK DB 64 DUP(?)STACK ENDS DATA SEGMENT ORG 3000H VAR1 DB 00H,01H,02H,03H,04H VAR2 DB 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH VAR

41、3 DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H VAR4 DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX MOV AL,88H OUT 63H,AL ;82255A初始化 MOV

42、BX,0000H;BX清零STT: MOV AL,00H;鍵盤測試 37 OUT 61H.ALNEXT: IN AL,62H AND AL,0C0H CMP AL,0C0H JNZ KEYABC CALL DISP;調(diào)用顯示程序 JMP STTKEYABC:CALL TIME;延時,去抖動 IN AL,62H AND AL,0C0H CMP AL,0C0H JNZ KEY JMP STTKEY: MOV AL,0FEH;鍵盤掃描識別 OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_0 CALL KEY8 JMP STTKKEY_0: TEST AL,40H J

43、NZ KEY_9 CALL KEY0 JMP STTKKEY_9: MOV AL,0FDH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_1 CALL KEY9 JMP STTKKEY_1: TEST AL,40H JNZ KEY_A CALL KEY1 JMP STTKKEY_A: MOV AL,0FBH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_2 CALL KEYA JMP STTKKEY_2: TEST AL,40H JNZ KEY_B CALL KEY2 JMP STTKKEY_B: MOV AL,0F7H

44、OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_3 CALL KEYB JMP STTKKEY_3: TEST AL,40H JNZ KEY_C CALL KEY3 JMP STTKKEY_C: MOV AL,0EFH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_4 CALL KEYC JMP STTKKEY_4: TEST AL,40H JNZ KEY_D CALL KEY4 JMP STTKKEY_D: MOV AL,0DFH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_5 CAL

45、L KEYD JMP STTKKEY_5: TEST AL,40H JNZ KEY_D CALL KEY5 JMP STTKKEY_E: MOV AL,0BFH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_6 CALL KEYE JMP STTKKEY_6: TEST AL,40H JNZ KEY_F CALL KEY6 JMP STTKKEY_F: MOV AL,07FH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_7 CALL KEYF JMP STTKKEY_7: TEST AL,40H JNZ KEY_71 C

46、ALL KEY7 JMP STTKKEY_71:JMP STTKKEY9: CMP BH,00H;按鍵9處理子程序 JZ KEY9_1;未按過符號鍵,不清零 CALL CLEAR;已按過符號鍵,清零KEY9_1:CALL LP1;低4位字節(jié)前移 MOV AL,6FH;最低字節(jié)輸入一個數(shù)據(jù) MOV SI+4,AL MOV AL,09H MOV DI+4,AL CALL DISP;顯示 RET;返回KEY8: CMP BH,00H;按鍵8處理子程序 JZ KEY8_1 CALL CLEARKEY8_1:CALL LP1 MOV AL,7FH MOV SI+4,AL MOV AL,08H MOV DI+4,AL CALL DISP RETKEY7: CMP BH,00H;按鍵7處理子程序 JZ KEY7_1 CALL CLEARKEY7_1:CALL LP1 MOV AL,07H MOV SI+4,AL MOV AL,07H MOV DI+4,AL CALL DISP RETKEY6: CMP BH,00H;按鍵6處理子程序 JZ KEY6_1 C

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論