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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

13、址。AAAA(D3、D2、D1、D0)用來尋址顯示RAM中的存儲(chǔ)單元。由于位顯示RAM中有16個(gè)字節(jié)單元,故需要4位尋址。AI(D4)為自動(dòng)增量特征位。AI=1時(shí),每次讀出后地址自動(dòng)加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之前用這個(gè)命令字來設(shè)定將要寫入的顯示RAM地址。AAAA(D3、D2、D1、D0)為將要寫入的顯示RAM中的存儲(chǔ)單元地址。AI(D4)為自動(dòng)增量特征位。AI=1時(shí),每次寫入后地址自動(dòng)加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寫入屏蔽位。當(dāng)A組的屏蔽位D3=1時(shí),A組的顯示RAM禁止寫入。因此,從CPU寫入顯示器RAM數(shù)據(jù)時(shí),不會(huì)影響A的顯示。這種情況通常在采用雙4位顯示器時(shí)使用。因?yàn)閮蓚€(gè)四位顯示器是相互獨(dú)立的。為了給其中一個(gè)四位顯示器輸入數(shù)據(jù)而又不影響另一個(gè)四位顯示器,因此必須對(duì)另一組的輸入實(shí)行屏蔽。BL/A、BL/ B(D1、D0)為消隱設(shè)置位。用于對(duì)兩組顯示

15、輸出消隱。若BL=1,對(duì)應(yīng)組的顯示輸出被消隱。當(dāng)BL=0,則恢復(fù)顯示。(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存儲(chǔ)器,當(dāng)CF=1時(shí),執(zhí)行清除命令后,F(xiàn)IFO R

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

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

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

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

20、)置1;當(dāng)FIFO RAM已經(jīng)置空時(shí),CPU還企圖讀出,則出現(xiàn)不足錯(cuò)誤,不足錯(cuò)誤特征位U(D4)置1。F(D3)表示FIFO RAM中是否已滿標(biāo)志,若F=1表示已滿。NNN(D2、D1、D0)表示FIFO RAM中的字符數(shù)據(jù)個(gè)數(shù)。6、數(shù)據(jù)輸入/輸出格式對(duì)8279輸入/輸出數(shù)據(jù)不僅要先確定數(shù)據(jù)地址口,而且數(shù)據(jù)存放也要按一定格式,其格式在鍵盤和傳感器方式有所不同。(1) 鍵盤掃描方式數(shù)據(jù)輸入格式鍵盤的行號(hào)、列號(hào)及控制鍵格式如下:圖2-2 鍵盤的行號(hào)、列號(hào)及控制鍵格式控制鍵CNTL、SHIFT為單獨(dú)的開關(guān)鍵。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è)計(jì)中的作用 掃描計(jì)數(shù)器采用編碼工作方式2.1.2.3 74LS138譯碼器的功能分析74LS138是3/8譯碼器,即對(duì)3個(gè)輸入信號(hào)進(jìn)行譯碼。得到8個(gè)輸出狀態(tài)。G1,G2A,G2B,為數(shù)據(jù)允許輸出端,G2A,G2B低電平有效。G1高電平有效。A,B,C為譯碼信號(hào)輸出端,Y0Y7為譯碼輸出端,低電平有效。 圖2-3 74LS138 圖2-4 功能表 2.1.2.4

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

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

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

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

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ù)參數(shù)表3-7 LED技術(shù)參數(shù)表2.2軟件部分輸入:小鍵盤上的16個(gè)按鍵中0到9十個(gè)數(shù)字鍵作為數(shù)字輸入,A、B、C、D分別作為加、減、乘、除,F(xiàn)作為等于號(hào),通過對(duì)8279初始化實(shí)現(xiàn)對(duì)每個(gè)按鍵賦予不同的功能。顯示:8279A芯片內(nèi)部有一個(gè)顯示RAM和一個(gè)FIFO RAM,可以暫存從

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

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

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

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

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

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

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

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

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

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

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

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

40、錯(cuò)誤,都會(huì)導(dǎo)致功能不能實(shí)現(xiàn)。同時(shí)查閱參考書,在網(wǎng)上查找相關(guān)資料都能夠給我們提供很多寶貴的信息。最重要的是,在找不到突破的時(shí)候要向老師請(qǐng)教,張教授的指導(dǎo)言簡意賅,能夠給我們的設(shè)計(jì)思路指定準(zhǔn)確的方向。最后就是要不斷完善和修改,使功能的實(shí)現(xiàn)更加完善,同時(shí)可以提高我們對(duì)知識(shí)的靈活運(yù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;延時(shí),去抖動(dòng) IN AL,62H AND AL,0C0H CMP AL,0C0H JNZ KEY JMP STTKEY: MOV AL,0FEH;鍵盤掃描識(shí)別 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;未按過符號(hào)鍵,不清零 CALL CLEAR;已按過符號(hào)鍵,清零KEY9_1:CALL LP1;低4位字節(jié)前移 MOV AL,6FH;最低字節(jié)輸入一個(gè)數(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論