本帖最后由 ahshmj 于 2015-7-31 13:49 編輯
8279鍵盤、顯示接口芯片
序號:6-10
生產(chǎn)廠家:Intel公司
特性:Intel8279芯片是一種通用的可編程序的鍵盤、顯示接口器件,單個芯片就能完成鍵盤輸入和LED
顯示控制兩種功能。其內(nèi)部結(jié)構(gòu)如圖6-10-1所示。8279包括鍵盤輸入和顯示輸出兩個部分。
鍵盤部分提供的掃描方式,可以和64個按鍵或傳感器的陣列相連。能自動消除開關(guān)抖動以及N個鍵
同時按下的保護。
顯示部分按掃描的方式工作?梢燥@示8或16位LED顯示塊。
一、8279電路工作原理
根據(jù)結(jié)構(gòu)框圖,分別介紹各部分電路工作原理。
1.I/O控制及數(shù)據(jù)緩沖器
數(shù)據(jù)緩沖器是雙向緩沖器,連接內(nèi)、外總線,用于傳送CPU和8279之間的命令或數(shù)據(jù);I/O控制線是
CPU對8279進行控制的引線。CS是8279的片選信號,CS=0時,8279才被允許讀出或?qū)懭胄畔。WR、RD為來自
CPU的控制信號。
A0用于區(qū)別信息特性:A0=1時,表示數(shù)據(jù)緩沖器輸入為指令、輸出為狀態(tài)字;A=0時,輸入、輸出皆為數(shù)據(jù)。
2.控制與定時寄存器及定時控制
控制與定時寄存器用來寄存鍵盤及顯示的工作方式,以及由CPU編程的其它操作方式。這些寄存器一旦接受并鎖存送來的命令,就通過譯碼產(chǎn)生相應(yīng)的信號,從而完成相應(yīng)的控制功能。
定時控制包含基本記數(shù)鍵。首級計數(shù)器是一個可編程的N級計數(shù)器。N可以2~31之間由軟件編程,以便
從外界時鐘CLK分頻得到內(nèi)部所需要的100KHZ時鐘。然后再經(jīng)過分頻為鍵盤掃描提供適當?shù)闹鹦袙呙桀l率和顯示掃描時間。
3.掃描計數(shù)器
掃描計數(shù)器有兩種工作方式。按編碼方式工作時,計數(shù)器作二進制記數(shù)。4位記數(shù)狀態(tài)從掃描線SL0~SL3
輸出,經(jīng)外部譯碼器譯碼后,為鍵盤和顯示器提供掃描線;按譯碼方式工作時,掃描計數(shù)器的最低二位被譯碼后,從SL0~SL3輸出。因此,SL0~SL3提供了4中取1的掃描譯碼。
4.回復(fù)緩沖器、鍵盤去抖及控制
來自RL0~RL3的8根回復(fù)線的回復(fù)信號,由回復(fù)緩沖器緩沖并鎖存。
在鍵盤工作方式中,回復(fù)線作為行列式鍵盤的行列輸入線。在逐行列輸入時,在逐行列掃描時,回復(fù)線用來搜索每一行列中閉合的鍵。當某一鍵閉合時,去抖電路被置位,延時等待10ms后,再檢驗該鍵是否繼續(xù)閉和,并將該鍵的地址和附加的移位、控制狀態(tài)一起形成鍵盤數(shù)據(jù)被送入8279內(nèi)部FIFO(先進先出)存儲器。鍵盤數(shù)據(jù)格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
控制 移位 掃描 回復(fù)
控制和移位(D6、D7)的狀態(tài)由兩個獨立的附加開關(guān)決定,而掃描(D5、D4、D3)和回復(fù)(D2、D1、D0)則是被按鍵置位的數(shù)據(jù)。D5、D4、D3來自動掃描計數(shù)器,是按下鍵的行列編碼,而(D7D7D7)則來自行/列計數(shù)器,它們是根據(jù)回復(fù)信號而確定的行/列編碼。
在傳感器開關(guān)狀態(tài)矩陣方式中,回復(fù)線的內(nèi)容直接被送往和相應(yīng)的傳感器RAM(即FIFO存儲器)。
在選通輸入方式中,回復(fù)線的內(nèi)容在CNTL/STB線的脈沖上升沿被送入FIFO存儲器。
5.FIFO/傳感器及其狀態(tài)寄存器
FIFO/傳感器RAM是一個雙重功能的8×8RAM。
在鍵盤或選通方式工作時,它是FIFO存儲器,其輸入或讀出遵循先入先出的原則。FIFO狀態(tài)寄存器用于存放FIFO的工作狀態(tài)。例如,RAM是滿還是空;其中存有多少數(shù)據(jù);是否操作出錯等。當FIFO存儲器不空,狀態(tài)邏輯將產(chǎn)生IRQ=1信號向CPU申請中斷。
在傳感器矩陣方式工作時,這個存儲器以是傳感器不是存儲器。它存放著傳感器矩陣中的每一個傳感器狀態(tài)。在此方式中,若檢索出傳感器的變化,IRQ信號變?yōu)楦唠娖,向CPU申請中斷。
6.顯示RAM和顯示地址寄存器
顯示RAM用來存儲顯示數(shù)據(jù)。容量為16×8位。在顯示過程中,存儲的顯示數(shù)據(jù)輪流從顯示寄存器輸出。顯示寄存器分別為A、B兩組,OUTA0~3和OUTB0~3可以單獨送數(shù),也可以組成一個8位的字。顯示寄存器的輸出與顯示掃描配合,不斷從顯示RAM中讀出顯示數(shù)據(jù),同時輪流驅(qū)動被選中的顯示器件,以達到多路復(fù)用的目的,使顯示器件呈現(xiàn)穩(wěn)定的顯示狀態(tài)。
顯示地址寄存器用來寄存由CPU進行讀/寫顯示RAM的地址,它可以由命令設(shè)定,也可以設(shè)置成每次讀寫或?qū)懭胫笞詣舆f減。
二.管腳、引線與功能
8279采用40引腳封裝,其管腳、引線功能如圖6-10-2所示。其引腳功能如下:
D0~D7(數(shù)據(jù)總線):雙向、三態(tài)總線,和系統(tǒng)數(shù)據(jù)總線相連;用于CPU和8279間的數(shù)據(jù)/命令傳遞。
CLK(系統(tǒng)時鐘):輸入線,為8279提供內(nèi)部時鐘的輸入端。
RESET(復(fù)位):輸入線,當RESET=1時,8279復(fù)位,其復(fù)位狀態(tài)為:
16個字符顯示;
編碼掃描鍵盤--雙鍵鎖定;
程序時鐘編碼為31。
CS(片選):輸入線,當CS=0時8279被選中,允許CPU對其讀、寫,否則被禁止。
A0(數(shù)據(jù)選擇):輸入線。當A0=1時CPU寫入數(shù)據(jù)為命令字,讀出數(shù)據(jù)為狀態(tài)字;A0=0時CPU讀、寫的字節(jié)均為數(shù)據(jù)。
RD、WR(讀、寫信號):輸入線。低電平有效,來自CPU的控制信號,控制8279的讀、寫操作。
IRQ(中斷請求):輸出線。高電平有效。
在鍵盤工作方式中,當FIFO/傳感器RAM存有數(shù)據(jù)時,IRQ為高電平。CPU每次從RAM中讀出數(shù)據(jù)時,IRQ變?yōu)榈碗娖。若RAM中仍有數(shù)據(jù),則IRQ再次恢復(fù)高電平。
在傳感器工作方式中,每當檢測到傳感器狀態(tài)變化時,IRQ就出現(xiàn)高電平。
SL0~SL3(掃描線):輸出線。用來掃描鍵盤和顯示器。它們可以編程設(shè)定為編碼(4中取1)或譯碼輸出(16取1)。
RL0~RL7(回復(fù)線):輸入線。它們是鍵盤矩陣或傳感矩陣的列(或行)信號輸入線。
SHIFT(移位信號):輸入線、高電平有效。該輸入信號是鍵盤數(shù)據(jù)的最高位(D7),通常用來擴充鍵開關(guān)的功能,作為控制功能鍵用。
在選通輸入方式時,該信號的上升沿可將來自RL0~RL7的數(shù)據(jù)存入FIFO RAM中。
在傳感器輸入下,該信號無效。
OUTA0~OUTA3(A組顯示信號):輸出線。
OUTB0~OUTB3(B組顯示信號):輸出線。
這兩組引線都是顯示數(shù)據(jù)輸出線,與多位數(shù)字顯示的掃描線SL0~SL3同步,兩組可以獨立使用,也可以合并使用。
BD(顯示消隱):輸出線。低電平有效。該信號在數(shù)字切換顯示或使用消隱命令時,將顯示消隱。
三、命令格式與命令字
8279的操作方式是通過CPU對8279送入命令時來實現(xiàn)編程的。當數(shù)據(jù)選擇端A0置1時,CPU對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è)置命令特征位。
D D(D4、D3):來設(shè)定顯示方式,其定義如下:
00:8個字符顯示,左入口
00:16個字符顯示,左入口
00:8個字符顯示,右入口
00:16個字符顯示,右入口
所謂左入口,即顯示位置從最左一位(最高位)開始,以后逐次輸入的顯示字符逐個向右順序排列; 所謂右入口,即顯示位置從最右一位(最低位)開始,以后逐次輸入的顯示字符時,已有的顯示字符逐個向左順序移動。
KKK(D2、 D1、 D0):用來設(shè)定七種鍵盤、顯示工作方式:
000 編碼掃描鍵盤,雙鍵鎖定
001 譯碼掃描鍵盤,雙鍵鎖定
010 編碼掃描鍵盤,N鍵輪回
011 譯碼掃描鍵盤,N鍵輪回
100 編碼掃描傳感器矩陣
101 譯碼掃描傳感器矩陣
110 選通輸入,編碼顯示掃描
111 選通輸入,譯碼顯示掃描
雙鍵鎖定與N鍵輪回是多鍵按下時的兩種不同的保護方式。雙鍵鎖定為兩鍵同時按下提供的保護方法。再消顫周期里,如果有兩鍵同時按下,則只有其中一個鍵彈起,而另一個鍵保持在按下位置時,才被認可。N鍵輪回為N鍵同時按下的保護方法。當有若干鍵按下時,鍵盤掃描能夠根據(jù)發(fā)現(xiàn)他們的順序,依次將它們的狀態(tài)送入FIFO RAM中。
2.程序時鐘命令
命令格式:
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)用來設(shè)定外部輸入CLK端的時鐘進行分頻的分頻數(shù)N。N取值為2~31。例如外部時鐘頻率為2MHZ,PPPPP被置為10100(N=20),則對輸入的外部時鐘20分頻,以獲得8279內(nèi)部要求的100KMZ的基本頻率。
3.讀FIFO/傳感器RAM命令
命令格式:
D7 D6 D5 D4 D3 D2 D1 D0
0 1 0 AI X A A A
其中:
D7D6D5 =010為讀FIFO/傳感器RAM命令特征位。該命令字只在傳感器方式時使用。在CPU讀傳感器RAM之前,必須使用這條命令來設(shè)定傳感器RAM中的8個地址(每個地址一個字節(jié))。
AAA(D2、D1、D0)為傳感器RAM中的八個字節(jié)地址。
AI(D4)為自動增量特征位。當AI=1時,每次讀出傳感器RAM后地址自動加1使地址指針指向下一個存儲單元。這樣,下一個數(shù)據(jù)便從下一個地址讀出,而不必重新設(shè)置讀FIFO/傳感器RAM命令。
在鍵盤工作方式中,由于讀出操做嚴格按照先入先出順序,因此,不需使用此命令。
4.讀顯示RAM命令
命令格式:
D7 D6 D5 D4 D3 D2 D1 D0
0 1 1 AI A A A A
其中:
D7D6D5 =011為讀顯示RAM命令字的特征位。該命令用來設(shè)定將要讀出的顯示RAM地址。
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
其中:
D7D6D5 =100為寫顯示RAM命令字的特征位。在寫顯示器RAM之前用該命令用來設(shè)定將要寫入的顯示RAM地址。
AAAA(D3、D2、D1、D0)為將要寫入的存儲單元地址。
AI(D4)為自動增量特征位。當AI=1時,每次寫入后地址自動加1指向下一次寫入地址。
6.顯示禁止寫入/消隱命令特征位
命令格式:
D7 D6 D5 D4 D3 D2 D1 D0
1 0 1 X IW
A IW
B BL
A BL
B
其中:
D7D6D5 =101為顯示禁止寫入/消隱命令特征位。
IW/A、IW/B(D3、D2)為A、B組顯示RAM寫入屏蔽位。由于顯示寄存器分成A、B兩組,可以單獨送數(shù),故用兩位來分別屏蔽。當A組的屏蔽位D3=1時,A組的顯示RAM禁止寫入。因此,從CPU寫入顯示器RAM數(shù)據(jù)時,不會影響A的顯示。這種情況通常在采用雙4位顯示器時使用。因為兩個雙四位顯示器是相互獨立的。為了給其中一個雙四位顯示器輸入數(shù)據(jù)而又不影響另一個四位顯示器,因此必須對另一組的輸入實行屏蔽。
BL/A、BL/B(D1、D0)為消隱顯示位。用于對兩組顯示輸出消隱。若BL=1時,對應(yīng)組的顯示輸出被消隱。當BL=0時,則恢復(fù)顯示。
7.清除命令
命令格式:
D7 D6 D5 D4 D3 D2 D1 D0
1 1 0 CD CD CD CF CA
其中:
D7D6D5 =110清除命令特征位。
CDCDCD(D4D3D2)用來設(shè)定清除顯示RAM方式。共有四種消除方式,見表6-10-1。
CF(D1)用來置空FIFO存儲器,當=1時,執(zhí)行清除命令后,F(xiàn)IFO RAM被置空,使中斷輸出線復(fù)位。同時,傳感器RAM的讀出地址也被置0。
CA(D0)為總清的特征位。它兼有CD和CF的聯(lián)合效能。在CD=1時,對顯示的清除方式由D3、D2的編碼決定。
清除顯示RAM約需160μS。在此期間FIFO狀態(tài)時的最高位DU=1,表示顯示無效。CPU不能向顯示RAM寫入數(shù)據(jù)。
8.結(jié)束中斷/錯誤方式設(shè)置命令
命令格式:
D7 D6 D5 D4 D3 D2 D1 D0
1 1 1 E × × × ×
其中:
D7D6D5 =111為該命令的特征位。此命令有兩種不同的作用。
(1)作為結(jié)束中斷命令。在傳感器工作方式中使用。每當傳感器狀態(tài)出現(xiàn)變化時,掃描檢測電路將其狀態(tài)寫入傳感器RAM,并啟動中斷邏輯,使IRQ變高,向CPU請求中斷,并且禁止寫入傳感器RAM。此時,若傳感器RAM讀出地址的自動遞增特征沒有置位(AI=0),則中斷請求IRQ在CPU第一次從傳感器RAM讀出數(shù)據(jù)時就被清除。若自動遞增特征已置位(AI=1),則CPU對傳感器RAM的讀出并不能清除IRQ,而必須通過給8279寫入結(jié)束中斷/錯誤方式設(shè)置命令才能使IRQ變低。因此在傳感器工作方式中,此命令用來結(jié)束傳感器RAM的中斷請求。
(2)作為特定錯誤方式設(shè)置命令。在8279已被設(shè)定為鍵盤掃描N鍵輪回方式以后,如果CPU給8279又寫入結(jié)束中斷/錯誤方式設(shè)置命令(E=1),則8279將以一種特定的錯誤方式工作。這種方式的特點是:在8279的消顫周期內(nèi),如果發(fā)現(xiàn)多個按鍵同時按下,則FIFO狀態(tài)字中的錯誤特征位S/E將置1,并產(chǎn)生中斷請求信號和阻止寫入FIFO RAM。
上述八種用于確定8279操作方式的命令字皆由D7D6D5特征位確定,輸入8279后能自動尋址相應(yīng)的命令寄存器。因此,寫入命令字時唯一的要求是使數(shù)據(jù)選擇信號A0=1。
四、狀態(tài)格式與狀態(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表示顯示無效。當顯示RAM由于清除顯示或全清命令尚未完成時,DU=1。
表6-10-1 CD位定義的清除方式
D4 D3 D2 清除方式
1 0 × 將顯示RAM全部清零
1 0 將顯示RAM清成20H(A組=0010;B組=0000)
1 1 將顯示RAM全部置1
0 不清除(若CA=1,則D3、D2仍有效)
;鍵盤和LED顯示程序 ; ;********************************************* ;*8279初始化* ;* KEYCOM為8279命令口KEYDAT為8279數(shù)據(jù)口* ;********************************************* KEYCOM XDATA 0E601H KEYDAT XDATA 0E600H KEYCAM EQU 30H;定義存放按鍵值RAM起始地址 ORG 0000H AJMP START ORG 0003H LJMP AAA ORG 0060H START: MOVR0,#10 MOVDPTR,#KEYCOM ;命令口地址 MOV A, #10H;鍵盤/顯示方式命令字8字符顯示左入口,編碼鍵盤,雙鍵鎖定 MOVX @DPTR,A MOV A,#34H;程序時鐘命令 26分頻對外部輸入時鐘 MOVX @DPTR,A MOV A,#0DFH ;清除顯示緩沖區(qū)命令 MOVX @DPTR,A BUSY1: MOVX A,@DPTR JBACC.7,BUSY1 MOV IE,#81H MOVDPTR,#KEYDAT MOV A,#0C8H MOVX @DPTR,A;字型送入8279 INC DPTR MOV A,#90H MOVX @DPTR,A;字位送入8279(顯示P) HA7S2:MOV30H,#80H MOV 31H,#40H HA7S3:MOVDPTR,#KEYCOM MOVX A ,@DPTR ANL A,#07H CJNE A,#00H,HA7S4; AJMP HA7S3 HA7S4:MOVDPTR ,#KEYDAT MOVX A,@DPTR MOV B,A ;取鍵值 MOV R1,#00H MOV DPTR,#KEYTAB ;數(shù)字鍵鍵值表 HA7S5:MOV A ,#00H MOVCA,@A+DPTR CJNE A , B,HA7S6;查鍵值表是否相同 AJMP HA7SA; 轉(zhuǎn)數(shù)字鍵處理程序 HA7S6:INCDPTR ;鍵值表地址加1 INC R1;查找次數(shù)加1 MOV A,R1 JB ACC.4,HA7S7;是功能鍵嗎? AJMPHA7S5 ; 繼續(xù)查找 HA7S7:MOVR1,#00H MOV DPTR,#KEYTAB1 ;功能鍵表地址 HA7S8:MOV A,#00H MOVCA,@A+DPTR ;取出功能鍵鍵值 CJNEA,B,HA7S9;鍵值相同嗎? AJMP HA7SC;轉(zhuǎn)功能鍵處理子程序 HA7S9:INCDPTR INC R1 MOV A,R1 JNBACC.2,HA7S8 ;繼續(xù)查找 LJMP START ;;;AJMP HA7SD;無按鍵返回 HA7SD:LJMPSTART HA7SA:MOV A,30H MOV DPTR,#0FE01H MOVX @DPTR,A; 字位送入8279 MOV A,R1 MOV R0,31H MOV @R0,A INC 31H MOV DPTR,#CDATA MOVCA,@A+DPTR;取字型代碼 MOVDPTR,#KEYDAT MOVX @DPTR,A;送8279顯示 INC 30H MOV A,30H ;字位加1 CJNEA,#88H,HA7SB; LJMP HA7S2 HA7SB:AJMPHA7S3 HA7SC:MOVDPTR ,#KJPADDR MOV A,R1 RL A ;;ADD A,R1 ADD A,#00H JMP @A+DPTR ; KJPADDR:LJMPLOOP0 LJMP LOOP1 LJMP LOOP2 KEYTAB: DB 0C1H,0C8H,0C9H,0D0H,0D8H,0E0H,0C2H,0CAH,0D1H,0D9H DB 0DAH,0C3H,0CBH,0D2H,0D3H,0DBH KEYTAB1:DB0E3H,0E2H,0E1H CDATA: DB0CH,9FH,4AH,0BH,99H,29H,28H,8FH,08H,09H,88H,38H,6CH,1AH,68H,0E8H LOOP0:MOVR5,#0CH;0 LJMP DISPC LOOP1:MOVR5,#9FH;1 LJMP DISPC LOOP2:MOVR5,#4aH;2 DISPC: MOVR6,#80H DISPC1: MOVDPTR ,#KEYCOM MOVX @DPTR,A;字位送8279 MOV A ,R5 MOVDPTR,#KEYDAT ;字形送8279 MOVX @DPTR ,A LCALL DELAY1 ;MOV A ,#0FFH ;MOVX @DPTR,A ;關(guān)顯示 ;INC R6 ; ;CJNER6,#88H,DISPC1 ;AJMP DISPC; LJMP HA7S2 AAA: NOP NOP RETI DELAY1:MOVR1,#0FAH DELAY2:NOP NOP DJNZR1,DELAY2 DJNZR0,DELAY1 RET END
|