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

下載本文檔

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

文檔簡介

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的結(jié)果運算,并且在 P0 口上的LCD1602液

2、晶顯示器顯示相應的計算結(jié) 果。【關(guān)鍵詞】AT89S52 4*4矩陣式鍵盤、LCD1602、計算器30目錄摘 要 02 系統(tǒng)分析 32.1 硬件部分 32.1.1 8279A 42.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)試結(jié)果及問題的提出 256.4.1 調(diào)試中出現(xiàn)的問題 256.4.2 調(diào)試結(jié)果 25設計總結(jié) 26附錄 27參考文獻 362系統(tǒng)分析2.1硬件部分單片機工作在單任務狀態(tài),時間充裕,速度不是主要矛盾

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

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

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

6、CCGNDDB 0DB33圖2-1 8279A 的內(nèi)部結(jié)構(gòu)圖中,IRQ:中斷請求輸出線,DB0DB7雙向數(shù)據(jù)總路線(傳送命令、數(shù)據(jù)、狀態(tài)), 麗、阪:讀寫控制輸入端,RESET復位輸入端,CLK時鐘輸入端,爲:片選,C和/D (A0):片內(nèi)寄存器選址,OUTAOA1 OUTBOB38位顯示輸出端,匚:熄滅顯示輸出 端,SL0SL3公用掃描輸出線,RL0RL7鍵盤回饋輸入線,SHIFT:抵擋鍵輸入線, CNTL/STB控制/選通輸入線。另外,8279的鍵盤接口部分內(nèi)部有一個 8X 8位先進先出 的堆棧(FIFO),用來存放鍵盤輸入代碼,顯示器接口部分內(nèi)部有一個16X 8位顯示RAM 用來顯示段數(shù)

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

8、6位 LED數(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)傳感器

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

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

11、,編碼顯示掃描111選通輸入,譯碼顯示掃描(2) 時鐘編程命令 命令格式:D7 D6 D5 D4 D3 D2 D1 DO001 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 D00 1 0 AI X A A A其中:D7、D6 D5=010為讀FIFO/

12、傳感器RAM命令特征位。該命令字只在傳感器方 式時使用。在CPU賣傳感器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 D0011 AI A A A A其中:D7 D6 D5=0

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

14、 (D4)為自動增量特征位。AI=1時,每次寫入后地址自動加1,指向下一次寫入地址。(6) 顯示禁止寫入 /消隱命令命令格式:D7 D6 D5 D4 D3 D2 D1 DO101 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ù)而又不影響另一個四位顯示器,

15、因此必須對另一組的輸入實行屏蔽。BL/A、BL/ B (D1、DO)為消隱設置位。用于對兩組顯示輸出消隱。若BL=1,對應組的顯示輸出被消隱。當BL=O,則恢復顯示。(7) 清除命令命令格式:D7 D6 D5 D4 D3 D2 D1 DO110 CD CD CD CF CA其中:D7、D6 D5=110為清除命令特征位。清除顯示 RAM方式如表2-4所示。表2-4 顯示RAM青除方式D4D3D2清除方式10X將全部顯示RAM青為00H110將全部顯示RAMS為20H, A組輸出0010, B組輸出 0000111將全部顯示RAMS為FFH0XXD0=0不清除,D0=1按上述方法清除CF(D1)

16、用來置空FIFO存儲器,當CF=1時,執(zhí)行清除命令后,F(xiàn)IFO RAM被置空, 使INT輸出線復位。同時,傳感器 RAM勺讀出地址也被置為0。CA ( DC)為總清的特征位。它兼有 CD和 CF的聯(lián)合效能。在CF =1時,對顯示的 清除方式由D3 D2的編碼決定。顯示RAM青除時間約需160us。在此期間狀態(tài)字的最高位 Du=1,表示顯示無效。CPU 不能向顯示RAM寫入數(shù)據(jù)。(8) 結(jié)束中斷/錯誤方式設置命令命令格式:D7 D6 D5 D4 D3 D2 D1 D01 1 1 E X X X X其中:D7、D6 D5=111為該命令的特征位。此命令有兩種不同的作用。 作為結(jié)束中斷命令。在傳感器

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

18、給8279又寫入結(jié)束中斷/錯誤方式設置命令(E=1),則8279將以一種特定的 錯誤方式工作。這種方式的特點是:在 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ā)生。其格式為:D7D6D5D4D3D2

19、D1 D0DUS/EOUFN N N其中:Du (D7)為顯示無效特征位。當 Du=1表示顯示無效。當顯示 RAM由于清除 顯示或全清命令尚未完成時,Du=1,此時不能對顯示RAM寫入。S/E (D6)為傳感器信號結(jié)束/錯誤特征位。該特征位在讀出 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)兩種錯誤: 超出或不足。當FIF

20、O RAM已經(jīng)充滿時,其它的鍵盤數(shù)據(jù)還企圖寫入FIFO RAM,則出現(xiàn)超出錯誤,超出錯誤特征位 0(D5)置1;當FIFO RAM已經(jīng)置空時,CPU還企圖讀 出,則出現(xiàn)不足錯誤,不足錯誤特征位 U (D4)置1。F ( D3)表示FIFO RAM中是否已滿標志,若 F=1表示已滿。NNN( D2、D1、DO 表示FIFO RAM中的字符數(shù)據(jù)個數(shù)。6、數(shù)據(jù)輸入/輸出格式對8279輸入/輸出數(shù)據(jù)不僅要先確定數(shù)據(jù)地址口,而且數(shù)據(jù)存放也要按一定格式, 其格式在鍵盤和傳感器方式有所不同。(1) 鍵盤掃描方式數(shù)據(jù)輸入格式鍵盤的行號、列號及控制鍵格式如下:RLORL7狀態(tài)確定)SLOSL2狀態(tài)確定)圖2-2

21、鍵盤的行號、列號及控制鍵格式控制鍵CNTL SHIFT為單獨的開關(guān)鍵。CNTL與其它鍵連用作特殊命令鍵,SHIFT可 作上、下?lián)蹩刂奇I。(2) 傳感器方式數(shù)據(jù)輸入格式此種方式8位輸入數(shù)據(jù)為RL曠RL7的狀態(tài)。格式如下:D7 D6 D5 D4 D3 D2 D1 D0RL7 RL6 RL5 RL4 RL3 RL2 RL1 RL02.1.2 74LS138 譯碼器 74LS138 譯碼器在本設計中的作用掃描計數(shù)器采用編碼工作方式 74LS138譯碼器的功能分析74LS138是3/8譯碼器,即對3個輸入信號進行譯碼。得到8個輸出狀態(tài)。G1,G2A,G2B,為數(shù)據(jù)允許輸出端,

22、G2A,G2B氐電平有效。G1高電平有效。A,B,C為譯碼信號輸出端, 丫0丫7為譯碼輸出端,低電平有效。選悻允許“ V. , Y, Y. Yt Y Y.-nuniTL.A B c,(I; Y(tX)n XLLLLLLLL XLHHHHHHHHHHHHHHHHHL rtHHHHHHHLH nHHHHHLHHH hhhhhlhhhh hhhhlhhhhh hhhlhhhhhh rtHLHHHHHHH it xlhlhlhlh X xllhhllhh X xllllhhhh圖 2-3 74LS138圖2-4功能表2.124 74LS138 譯碼器的技術(shù)參數(shù)極限值電源電壓7V輸入電壓74LS1387

23、V工作環(huán)境溫度74LS138貯存溫度65 150C2.1.3 74LS240 74LS240 譯碼器在本設計中的作用本設計實驗中主要是為增加LED的驅(qū)動電流 74LS240譯碼器的功能分析74LS240 TTL八反相三態(tài)緩沖器/線驅(qū)動器 引出端符號:1A, 2A輸入端二,-三態(tài)允許端(低電平有效)1Y8Y輸出端1G 1*1 和* 1hJ 7*3 H A3 JtJ 144 Jfl GMD圖2-5 74LS240邏輯圖表2-5 74LS240功能表輸入輸出AYLLHLHLHXZ2.133 74LS240 譯碼器的技術(shù)參數(shù)極限值:電源電壓 7V輸入電壓5.5V輸出高阻態(tài)時

24、高電平電壓 5.5V工作環(huán)境溫度74LS240 . 070 C存儲溫度-65150 C2.1.4 4*4 矩陣式鍵盤 小鍵盤在本設計中的作用本設計中,小鍵盤用于輸入二進制數(shù)字。 小鍵盤的功能分析通常使用的鍵盤是矩陣結(jié)構(gòu)的。對于 4X 4=16個鍵的鍵盤,采用矩陣方式只要用 8 條引線和2個8位端口便完成鍵盤的連接。如圖,這個矩陣分為 4行4列,如果鍵5按 下,則第1行和第1列線接通而形成通路。如果第1行線接低電平,則鍵5的閉合,會 使第1列線也輸出低電平。矩陣式鍵盤工作時,就是按行線和列線的電平來識別閉合鍵產(chǎn)01Z 2 56、肖、8一,89產(chǎn)9*嚴DF第0列第1列第

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

26、一般先快速檢查鍵盤中是否有鍵按下,然后再確定按鍵的具體位置。為此,先使所有行線為低,然后檢查列線。這時如果列線有一位為0,則說明必有鍵被按下,采用掃描法可進一步確定按鍵的具體位置。2.1.5七段LED顯示器 LED 作用LED發(fā)光二級管(Light-Emitting Diode),在本設計中采用7段數(shù)字發(fā)光二級管,做為終端顯示。顯示數(shù)值的輸入和結(jié)果的顯示。本設計中采用共陽極接法。 LED功能分析物理構(gòu)造:LED發(fā)光二級管,采用砷化傢、傢鋁砷、和磷化傢等材料制成,其內(nèi)部 結(jié)構(gòu)為一個PN結(jié),具有單向?qū)щ娦?。川母P越劃段型顯亍.as2黔 2 2 2v 出 zv:出圖3-6

27、 LED結(jié)構(gòu)圖數(shù)字成像:將七個發(fā)光管進行組合,排列成數(shù)字圖形 8,再根據(jù)需要控制七個管的亮與 滅,即可顯示出定義數(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 06650 1 0 11 0 1 1 0 1 1 06d60 1 1 00 0 1 1 1 1 1 07d70 1 1 11 1 1 0 0 0 0 00781

28、0 0 01 1 1 1 1 1 1 07f91 0 0 11 1 1 0 0 1 1 06fA1 0 1 01 1 1 0 1 1 1 077B1 0 1 10 0 1 1 1 1 1 07cC1 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 07 LED技術(shù)參數(shù)表3-7 LED技術(shù)參數(shù)表AttingSymMVilueUnitiVR5VoNForward Current Ccnbnuous年-1Q0mA1Forward Current

29、Peak PulseIf1A只Tottl Powtt Di&jipdticn 1“ = CPb100mWabove 2bX22鈕弋i加 wflfiFoMl 伽ailI1g 1IMmA1F10AReverse WVR3VpD訓mWteOissipataW1FD1.3p W2.2軟件部分輸入:小鍵盤上的16個按鍵中0到9十個數(shù)字鍵作為數(shù)字輸入,A B C D分別 作為加、減、乘、除,F(xiàn)作為等于號,通過對8279初始化實現(xiàn)對每個按鍵賦予不同的功 能。顯示:8279A芯片內(nèi)部有一個顯示 RAM和一個FIFO RAM可以暫存從小鍵盤中讀出 的數(shù)據(jù),同時可以將內(nèi)存中的數(shù)據(jù)暫存到顯示 RAM中,簡化了程序復

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

31、781213141516171819DO D1D2D3D4D5D6D7RL7RL6RL5RL4RL3RL2RL1RLO5213332F E D COE1VCCOE2A1Y1A2Y2A3Y3A4Y4A5Y5A6Y6A7Y7A8Y8GND* 74LS240CI AO2221CLK 7AO 9SLOSL1SL274LS13832 133 2343VCCCS5WRRD28162211CSWRA YO B Y1 C Y2Y3Y4 E3 Y5 E1 Y6 E2 Y71710RDIRQ36RST3宀a2 I30b 429c628d827e1126f1325g1524dp17OUTBOOUTB1OUTB2OU

32、TB3OUTAOOUTA1SHIFT OUTA2CNTL OUTA38R1237643BA9VCC20p1816210VCC 94-,/13 11 /0*97 一 /15FT7r r r r ra b c0廠eg pO0roOA1Y1A2Y2A3Y3A4Y4A5Y5A6Y6A7Y7A8Y8OE1OE2VCCGND74LS24018161412975312345678VCC圖4-1硬件接線圖圖中8279的地址由CS和A0決定,故數(shù)據(jù)口地址為7FFEH命令口地址為7FFFH 所接的16個按鍵,掃描線接在74HC138的譯碼輸出端和廠上,當為0(SSLSSOOO) 時,掃描第1列按鍵,當為0 (SL

33、2SLSL=001)掃描第2列按鍵,故07號按鍵的鍵 值為00H07H, 815號按鍵鍵值為08H- 0FH當某一按鍵被按下后,鍵值就自動進入 緩沖區(qū),當8279內(nèi)部RAM不空時由INT輸出高電平告知CPU取走,故INT連接CPU勺 中斷輸入需加一反向器。8279鍵盤配置最大為8X 8,若要配置64個按鍵,其它列掃描線可分別連至 至 上,形成8行8列的按鍵掃描電路。圖中顯示部分段選碼由8279的OUTAOUTA OUTLOUTB通過驅(qū)動器74LS240提 供,位選碼由SL2SLO經(jīng)3-8譯碼器通過驅(qū)動器74LS240提供。+5V|O|-T&=HHTIBfTFTEm,lh_L07UCVRD4c$

34、3L_rmA12D Cm誼比AZEDlCLK21B:mtGATE21?CLKDOUTZ16CH1TDCLK11S(#ATtOGATE1inGHOcumi13-TC.-n.i-EAT35避1U1716ONOVCC*.14AlfiA13AUBA12Al7411A1E*.10A19A3SBD陰MN/MK.D7RDAD6HOLDAD3HILDA總MWFfEBSS9AD3MiTDADZnmADIOENADCAXEMMIINTAIMTftIESTCLKREAOY酬口RESET7QdraT g r” rw 皿甲十 W曲rwPipgASFTPI1 rn ruFillEr if r Hi rirrra zi 心

35、P3P& +FM嗆&FC?cEFBAfl12345i67fl9圖4-2接線原理圖5 軟件設計5.1 控制程序設計思路8279 是可編程接口芯片,通過編程使其實現(xiàn)相應的功能,編程的過程實際上就是CPU向 8279發(fā)送控制指令的過程。在軟件設計中,顯示方式采用了 8個字符顯示,從左 輸入方式,編碼掃描鍵盤,雙鍵鎖定。由于該系統(tǒng)對實時性及速度要求并不十分高,所以時鐘頻率采用6M Hz已足夠了,故程序時鐘命令字取為2AH用以保證100kHz的內(nèi)部工作頻率。由于采用10ms定時掃 描查詢方式,所以在下次開始掃描時,先應清空8279,清除顯示RAM大約需要160卩s的時間,在此期間,F(xiàn)IFO狀態(tài)字的最高位

36、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 程序流程圖重新掃描按鍵IF2.加法程序流程圖3.減法程序流程圖4.乘法程序流程圖5.除法程序流程圖找出編寫程序中出現(xiàn)的錯誤,編寫、運行并調(diào)試程序。本實

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

38、示結(jié)束,導致新顯示的數(shù)據(jù)看不清楚) 。 8 個數(shù)碼塊全有字符顯示后 , 再按鍵調(diào) 用clear子程序清除顯示,最后用in al,dl test al,80h測試顯示RAM是否清除完畢(D7=1?)。2)程序在輸入完兩個數(shù)值后,按 ABCD即加減乘除卻沒有結(jié)果顯示出來? 原因:在程序上結(jié)構(gòu)混亂,導致程序調(diào)用出現(xiàn)錯誤,不調(diào)用算法子程序,使得結(jié)果不顯 示。6.4.2 調(diào)試結(jié)果實驗調(diào)試運行通過后,LED無顯示。輸入兩個兩位數(shù),每按一位,在 LED低位上顯 示出相應數(shù)值,之前輸入的數(shù)字則往左移動一位。所輸入的數(shù),前兩位作為第一個數(shù), 后兩位作為第二個數(shù),再輸入加減乘除,調(diào)用相應子程序,計算結(jié)果并且顯示出

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

40、識的應用能力,掌握了計 算機中常用接口電路8279A的應用和設計技術(shù),如控制字、方式字的設置以及如何控制 輸出和輸出等,了解了七段LED顯示器的顯示原理。在寫控制程序前,準備好設計思路 和畫流程圖是非常重要的,它讓我有針對性的編寫程序,可以有效的避免和及時發(fā)現(xiàn)錯 誤。程序運行正確后,優(yōu)化程序;這不但提高程序的運行速度,還能提高了我匯編語言 的水平,學到了更多的編程技巧。通過本次設計,我最深的感觸就是處理問題不要急于求成,要不斷反復對問題的思 考,可以增加我們很多原先沒有考慮到的東西,以減少失敗的概率。對任何實際問題的 處理,都是建立在我們所學的基礎知識之上,只有牢固熟練的掌握了基礎知識,才能夠

41、 對問題的解決有個宏觀準確的把握,找到解決問題的切入點,攻克難點。要有嚴謹?shù)膽B(tài) 度,對問題的思考不要畏難,因為任何一點小的思路的錯誤或者語法的錯誤,都會導致 功能不能實現(xiàn)。同時查閱參考書,在網(wǎng)上查找相關(guān)資料都能夠給我們提供很多寶貴的信息。最重要 的是,在找不到突破的時候要向老師請教,張教授的指導言簡意賅,能夠給我們的設計 思路指定準確的方向。最后就是要不斷完善和修改,使功能的實現(xiàn)更加完善,同時可以提高我們對知識的 靈活運用。附錄程序清單:STACK SEGMENT STCAKDB 64 DUP(?)STACK ENDSDATA SEGMENTORG 3000HVAR1 DB 00H,01H,0

42、2H,03H,04HVAR2 DB 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FHVAR3 DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HVAR4 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 SEGMENTASSUME CS:CODE,DS:DATA,SS:ST

43、ACKSTART:MOV AX,DATAMOV DS,AXMOV AL,88HOUT 63H,AL; 82255A 初始化MOV BX,0000H;BX清零STT: MOV AL,00H;鍵盤測試OUT 61H.ALJMP STTNEXT: IN AL,62HKEYABC:CALL TIME;延時,去抖動AND AL,0C0HIN AL,62HCMP AL,0C0HAND AL,0C0HJNZ KEYABCCMP AL,0C0HCALL DISP;調(diào)用顯示程序JNZ KEYJMP STTJMP STTKKEY: MOV AL,0FEH ;鍵盤掃描識別KEY_2: TEST AL,40HOUT

44、61H,ALJNZ KEY_BIN AL,62HCALL KEY2TEST AL,80HJMP STTKJNZ KEY_0KEY_B: MOV AL,0F7HCALL KEY8OUT 61H,ALJMP STTKIN AL,62HKEY_0: TEST AL,40HTEST AL,80HJNZ KEY_9JNZ KEY_3CALL KEY0CALL KEYBJMP STTKJMP STTKKEY_9: MOV AL,0FDHKEY_3: TEST AL,40HOUT 61H,ALJNZ KEY_CIN AL,62HCALL KEY3TEST AL,80HJMP STTKJNZ KEY_1KEY

45、_C: MOV AL,0EFHCALL KEY9OUT 61H,ALJMP STTKIN AL,62HKEY_1: TEST AL,40HTEST AL,80HJNZ KEY_AJNZ KEY_4CALL KEY1CALL KEYCJMP STTKJMP STTKKEY_A: MOV AL,0FBHKEY_4: TEST AL,40HOUT 61H,ALJNZ KEY_DIN AL,62HCALL KEY4TEST AL,80HJMP STTKJNZ KEY_2KEY_D: MOV AL,0DFHCALL KEYAOUT 61H,ALIN AL,62HTEST AL,80HJNZ KEY_5C

46、ALL KEY7 JMP STTK KEY_71:JMP STTKCALL KEYDKEY9: CMP BH,00H;按鍵9處理子程序JMP STTKJZ KEY9_1;未按過符號鍵,不清KEY_5: TEST AL,40H零JNZ KEY_DCALL CLEAR ;已按過符號鍵,清零CALL KEY5KEY9_1:CALL LP低4位字節(jié)前移JMP STTKMOV AL,6FH ;最低字節(jié)輸入一個數(shù)KEY_E: MOV AL,0BFH據(jù)OUT 61H,ALMOV SI+4,ALIN AL,62HMOV AL,09HTEST AL,80HMOV DI+4,ALJNZ KEY_6CALL DIS

47、P ;顯示CALL KEYERET ;返回JMP STTKKEY8: CMP BH,00H;按鍵8處理子程序KEY_6: TEST AL,40HJZ KEY8_1JNZ KEY_FCALL CLEARCALL KEY6KEY8_1:CALL LP1JMP STTKMOV AL,7FHKEY_F: MOV AL,07FHMOV SI+4,ALOUT 61H,ALMOV AL,08HIN AL,62HMOV DI+4,ALTEST AL,80HCALL DISPJNZ KEY_7RETCALL KEYFKEY7: CMP BH,00H;按鍵7處理子程序JMP STTKJZ KEY7_1KEY_7:

48、 TEST AL,40HCALL CLEARJNZ KEY_71KEY7_1:CALL LP1MOV AL,07HMOV SI+4,ALMOV AL,07HMOV DI+4,ALCALL DISPRETKEY6: CMP BH,OOH;按鍵6處理子程序JZ KEY6_1CALL CLEARKEY6_1:CALL LP1MOV AL,7DHMOV SI+4,ALMOV AL,O6HMOV DI+4,ALCALL DISPRETKEY5: CMP BH,OOH;按鍵5處理子程 序序JZ KEY4_1CALL CLEARKEY4_1:CALL LP1MOV AL,66HMOV SI+4,ALMOV

49、AL,O4HMOV DI+4,ALCALL DISPRETKEY3: CMP BH,00H;按鍵3處理子程序JZ KEY3_1CALL CLEARKEY3_1:CALL LP1MOV AL,4FHMOV SI+4,ALMOV AL,O3HMOV DI+4,ALCALL DISP3OJZ KEY5_1CALL CLEARKEY5_1:CALL LP1MOV AL,6DHMOV SI+4,ALMOV AL,O5HMOV DI+4,ALCALL DISPRETKEY4: CMP BH,OOH;按鍵4處理子程RETKEY2: CMP BH,OOH;按鍵2處理子程序JZ KEY2_1CALL CLEARKEY2_1:CALL LP1MOV AL,5BHMOV SI+4,ALMOV AL,O2HMOV DI+4,ALCALL DISPRETRET ;返回38KEY1: CMP BH,OOH;按鍵1處理子程序JZ KEY1_1CALL CLEARKEY1_1:CALL LP1MOV AL,O6HMOV SI+4,ALMOV AL,O1HMOV DI+4,ALCALL DISPRETKEYO: CMP BH,OOH;按鍵0處理

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論