《單片機的接口技術(shù)》PPT課件.ppt
《《單片機的接口技術(shù)》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《單片機的接口技術(shù)》PPT課件.ppt(152頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、51單片機的I/O外設(shè)的接口,本章內(nèi)容,51單片機的鍵盤與顯示器接口 鍵盤、顯示器接口芯片8279,9.1 LED數(shù)碼管的接口,LED(Light Emitting Diode)發(fā)光二極管縮寫。 LED數(shù)碼管是由發(fā)光二極管構(gòu)成的。,9.1.1 LED數(shù)碼管的結(jié)構(gòu) 常見的LED數(shù)碼管為“8”字型的,共計8段。每一段對應(yīng)一個發(fā)光二極管。有共陽極和共陰極兩種,如圖9-1所示。 共陰極發(fā)光二極管的陰極連在一起,通常公共陰極接地。當陽極為高電平時,發(fā)光二極管點亮。 共陽極LED數(shù)碼管的發(fā)光二極管的陽極連接在一起,公共陽極接正電壓,當某個發(fā)光二極管的陰極接低電平時,發(fā)光二極管被點亮,相應(yīng)的段被顯示。,圖9
2、-1 8段LED數(shù)碼管結(jié)構(gòu)及外形,8段LED數(shù)碼管結(jié)構(gòu),8段LED數(shù)碼管的字型碼,為了使數(shù)碼管顯示不同的符號或數(shù)字,要把某些段發(fā)光二極管點亮,就要為LED數(shù)碼管提供段碼(字型碼)。 LED數(shù)碼管共計8段。正好是一個字節(jié)。習(xí)慣上是以“a”段對應(yīng)段碼字節(jié)的最低位。各段與字節(jié)中各位對應(yīng)關(guān)系如表9-1所示。,按照上述格式,顯示各種字符的8段LED數(shù)碼管的段碼如表10-2所示。,顯示各種字符的8段LED數(shù)碼管的段碼如表9-2所示,表9-2 8段LED段碼,其它顯示器,除 “8”字型的LED數(shù)碼管外,市面上還有“1”型、“米”字型和“點陣”型LED顯示器,如圖9-2所示。本章均以“8”字型的LED數(shù)碼管為
3、例。,圖9-2 其他各種字型的LED顯示器,9.1.2 LED數(shù)碼管工作原理,圖9-3所示為顯示4位字符的LED數(shù)碼管的結(jié)構(gòu)原理圖。N位位選線和8N條段碼線。段碼線控制顯示字型,而位選線控制著該顯示位的LED數(shù)碼管的亮或暗。,圖9-3 4位LED數(shù)碼管的結(jié)構(gòu)原理圖,LED靜態(tài)顯示方式 無論多少位LED數(shù)碼管,同時處于顯示狀態(tài)。 靜態(tài)顯示方式,各位的共陰極(或共陽極)連接在一起并接地(或接+5V);每位的段碼線(adp)分別與一個8位的I/O口鎖存器輸出相連。如果送往各個LED數(shù)碼管所顯示字符的段碼一經(jīng)確定,則相應(yīng)I/O口鎖存器鎖存的段碼輸出將維持不變,直到送入另一個字符的段碼為止。正因為如此,
4、靜態(tài)顯示方式的顯示無閃爍,亮度都較高,軟件控制比較容易。 圖9-4為4位LED數(shù)碼管靜態(tài)顯示器電路,各位可獨立顯示,靜態(tài)顯示方式接口編程容易,但是占用口線較多。 對圖9-4電路,若用I/O口線接口,要占用4個8位I/O口。因此在顯示位數(shù)較多的情況下,所需的電流比較大,對電源的要求也就隨之增高,這時一般都采用動態(tài)顯示方式。,LED數(shù)碼管有靜態(tài)顯示和動態(tài)顯示兩種顯示方式,圖9-4 4位LED靜態(tài)顯示電路,LED靜態(tài)顯示方式,LED動態(tài)顯示方式,無論在任何時刻只有一個LED數(shù)碼管處于顯示狀態(tài),即單片機采用“掃描”方式控制各個數(shù)碼管輪流顯示。 在多位LED顯示時,為簡化硬件電路,通常將所有顯示位的段碼
5、線的相應(yīng)段并聯(lián)在一起,由一個8位I/O口控制,而各位的共陽極或共陰極分別由相應(yīng)的I/O線控制,形成各位的分時選通。 圖9-5所示為一個4位8段LED動態(tài)顯示電路。其中段碼線占用一個8位I/O口,而位選線占用一個4位I/O口。必須采用動態(tài)的“掃描”顯示方式。即在某一時刻,只讓某一位的位選線處于選通狀態(tài),而其他各位的位選線處于關(guān)閉狀態(tài),同時,段碼線上輸出相應(yīng)位要有顯示的字符的段碼。,圖9-5 4位8段LED動態(tài)顯示電路,LED動態(tài)顯示方式,雖然這些字符是在不同時刻出現(xiàn),而在同一時刻,只有一位顯示,其他各位熄滅,由于余輝和人眼的“視覺暫留”作用,只要每位顯示間隔足夠短,則可以造成“多位同時亮”的假象
6、,達到同時顯示的效果。 LED不同位顯示的時間間隔(掃描間隔)應(yīng)根據(jù)實際情況而定。顯示位數(shù)多,將占大量的單片機時間,因此動態(tài)顯示的實質(zhì)是以犧牲單片機時間來換取I/O端口的減少。 圖9-6所示為8位LED動態(tài)顯示2009.10.10的過程。圖9-6(a)所示為顯示過程,某一時刻,只有一位LED被選通顯示,其余位則是熄滅的; 圖9-6(b)所示為實際的顯示結(jié)果,人眼看到的是8位穩(wěn)定的同時顯示的字符。 動態(tài)顯示的優(yōu)點是硬件電路簡單,顯示器越多,優(yōu)勢越明顯。缺點是顯示亮度不如靜態(tài)顯示的亮度高。如果“掃描”速率較低,會出現(xiàn)閃爍現(xiàn)象。,LED動態(tài)顯示方式,圖9-6 8位LED動態(tài)顯示過程和結(jié)果,LED動態(tài)
7、顯示方式,9. 2 單片機鍵盤接口技術(shù),鍵盤輸入需解決三個問題 (1)判別是否有鍵按下?若有,進入下一步工作。 (2)識別哪一個鍵被按下,并求出相應(yīng)的鍵值。 (3)根據(jù)鍵值,找到相應(yīng)鍵值的處理程序入口。,9.2.1 鍵盤接口的任務(wù),鍵盤輸入的特點,常見鍵盤:觸摸式鍵盤、薄膜鍵盤和按鍵式鍵盤,最常用的是按鍵式鍵盤。按鍵實質(zhì)上就是一個開關(guān)。如圖9-7(a)所示,按鍵開關(guān)的兩端分別連接在行線和列線上,通過鍵盤開關(guān)機械觸點的斷開、閉合,其行線電壓輸出波形如圖9-7(b)所示。,圖9-7 鍵盤開關(guān)及其行線波形,鍵盤輸入的特點,圖9-7(b)所示的t1和t3分別為鍵的閉合和斷開過程中的抖動期(呈現(xiàn)一串負脈
8、沖),抖動時間長短與開關(guān)的機械特性有關(guān),一般為510ms,t2為穩(wěn)定的閉合期,其時間由按鍵動作確定,一般為十分之幾秒到幾秒,t0、t4為斷開期。,圖9-7 鍵盤開關(guān)及其行線波形,按鍵的識別,鍵的閉合與否,行線輸出電壓上就是呈現(xiàn)高電平或低電平。高電平,表示鍵斷開,低電平則表示鍵閉合,通過對行線電平的高低狀態(tài)的檢測,可確認按鍵按下以及按鍵釋放與否。 為了確保對一次按鍵動作只確認一次按鍵有效,必須消除抖動期t1和t3的影響。通常t1和t3小于10ms。按鍵閉合時的電壓抖動波形見圖9-8。,圖9.8 鍵閉合和斷開時的電壓抖動,如何消除按鍵的抖動,按鍵去抖動的方法有兩種: 一種軟件延時,思想是:在檢測到
9、有鍵按下時,該鍵所對應(yīng)的行線為低電平,執(zhí)行一段延時10ms的子程序后,確認該行線電平是否仍為低電平,如果仍為低電平,則確認該行確實有鍵按下。當按鍵松開時,行線的低電平變?yōu)楦唠娖?,?zhí)行一段延時10ms的子程序后,檢測該行線為高電平,說明按鍵確實已經(jīng)松開。采取本措施,可消除兩個抖動期t1和t3的影響。 另一種是采用專用的鍵盤/顯示器接口芯片,這類芯片中都有自動去抖動的硬件電路,9. 2.2 鍵盤工作原理,鍵盤可分為兩類:非編碼鍵盤和編碼鍵盤。 非編碼鍵盤 非編碼鍵盤是利用按鍵直接與單片機相連接而成,它通常使用在按鍵數(shù)量較少,系統(tǒng)功能較簡單,需處理的任務(wù)較少的場合,可以降低成本、簡化電路設(shè)計。非編碼
10、鍵盤可分為獨立式和矩陣式。 (1)獨立式鍵盤: 結(jié)構(gòu):一組相互獨立的鍵盤,每個鍵盤都與單片機的I/O口的一條口線連接,相互獨立。獨立式鍵盤的結(jié)構(gòu)見圖9-9。 原理:當任何一個鍵被按下時,與其相連的輸入線被置成 “0”,平時該線為“1”。通過檢測I/O輸入線的電平狀態(tài),判斷哪個按鍵被按下。 特點:接口簡單,但若鍵較多,將占用許多I/O線。,,,圖9-9 獨立式鍵盤結(jié)構(gòu),對于圖9-8的鍵盤,圖中的上拉電阻保證按鍵釋放時,輸入檢測線上有穩(wěn)定的高電平。,鍵處理子程序,KEYIN: MOVA,#0FFH;置P1口為“1”,設(shè)置P1口為輸入狀態(tài) MOVP1,A MOVA,P1 ;輸入鍵狀態(tài) CJNEA,#
11、0FFH,QUDOU;有鍵按下,跳去抖動 LJMPRETURN;無鍵按下,返回 QUDOU: MOV R3,A;8個按鍵的狀態(tài)送R3保存 LCALL DELAY10;調(diào)用延時子程序,軟件去鍵抖動 MOVA,P1;再一次讀入8個按鍵的狀態(tài) CJNEA,R3,RETURN;兩次鍵值比較,不同,是抖動引起,轉(zhuǎn)RETURN JNBACC.0,P0F;查詢0號鍵 JNBACC.1,P1F;查詢1號鍵 JNBACC.2,P2F;查詢2號鍵 JNBACC.3,P3F;查詢3號鍵 JNBACC.4,P4F;查詢4號鍵 JNB ACC.5,P5F;查詢5號鍵 JNB ACC.6,P6F;查詢6號鍵 JNB AC
12、C.7,P7F;查詢7號鍵,鍵處理程序(續(xù)),LJMPRETURN P0F:LJMPPROM0;入口地址表 P1F:LJMPPROM1 P6F:LJMPPROM6 P7F:LJMPPROM7 PROM0:;0號鍵功能程序 LJMPRETURN;0號鍵處理完返回鍵盤掃描 PROM7: ;7號鍵功能程序 LJMPRETURN;7號鍵處理完返回鍵盤掃描 RETURNRET,(2)矩陣式(行列式)鍵盤,結(jié)構(gòu):鍵的數(shù)目多,將鍵按行列排成矩陣形式。矩陣式鍵盤由行線和列線組成,按鍵位于行、列線的交叉點上。圖9-10為44的矩陣式鍵盤結(jié)構(gòu)。 優(yōu)點:在按鍵數(shù)目較多的場合,節(jié)省I/O口線,圖9-10 44矩陣式鍵
13、盤結(jié)構(gòu),矩陣式(行列式)鍵盤的按鍵識別,矩陣式鍵盤按鍵的識別方法分為掃描法和反轉(zhuǎn)法。 掃描法 第1步,識別鍵盤有無鍵按下: 列線輸出全0 然后輸入行線狀態(tài),若行線狀態(tài)為全1( 1111 )則沒有鍵按下; 若行線狀態(tài)一定不為全為1,則一定有任一鍵按下。 第2步,識別出具體的鍵位: 逐列掃描,先第一列輸出為0,其他列為1,列編碼為1110。然后輸入行線狀態(tài),若行線狀態(tài)為全1( 1111 ),即按鍵不在此列線交叉點上,繼續(xù)掃描。 第二列輸出為0,其他列為1,列編碼為1101,再輸入行線狀態(tài),若行狀態(tài)不是全1,即按鍵在該列交叉點上,否則繼續(xù)掃描。,掃描法識別按鍵,將此時的掃描列碼與行碼組合得到的按鍵碼
14、,即可確定按鍵的位置。 如圖9-10所示的“3”鍵,它位于第4列和第1行交叉點上,其列碼為:0111,行碼為:1110,鍵碼為:0111,1110B = 7EH,圖9-10 44矩陣式鍵盤結(jié)構(gòu),每個鍵的鍵碼,,負邏輯表示----行列線數(shù)據(jù)求反組合,上例中的各鍵值分別為: 88H84H82H81H 48H44H42H41H 28H24H22H21H 18H14H12H11H,正邏輯表示----行列線數(shù)據(jù)直接組合,圖9-10中的各鍵碼分別為: 77H7BH7DH7EH B7HBBHBDHBEH D7HDBHDDHDEH E7HEBHEDHEEH,線反轉(zhuǎn)法,讓行線編程為輸入線,列線編程為輸出線,并使
15、輸出線輸出為全低電平,則行線中電平由高變低的所在行為按鍵所在行。 再把行線編程為輸出線,列線編程為輸入線,并使輸出線輸出為全低電平,則列線中電平由高變低所在列為按鍵所在列。 線反轉(zhuǎn)法只需經(jīng)過兩步便能獲得此按鍵所在的行列值,比較簡練。 下面以圖9-11所示的矩陣式鍵盤為例,介紹線反轉(zhuǎn)法的具體步驟。,圖9-11 采用線反轉(zhuǎn)法的矩陣式鍵盤,線反轉(zhuǎn)法,假設(shè)鍵3被按下。 第一步,P1.0P1.3輸出全為“0”,然后,讀入P1.4P1.7線的狀態(tài),結(jié)果P1.4=0,而P1.5P1.7均為1,因此,第1行出現(xiàn)電平的變化,說明第1行有鍵按下; 第二步,讓P1.4P1.7輸出全為“0”,然后,讀入P1.0P1.
16、3位,結(jié)果P1.0=0,而P1.1P1.3均為1,因此第4列出現(xiàn)電平的變化,說明第4列有鍵按下。 綜上所述,即第1行、第4列按鍵被按下,此按鍵即鍵3按下。,圖9-11 采用線反轉(zhuǎn)法的矩陣式鍵盤,鍵盤接口完成的主要功能:,鍵盤掃描:判斷是否有鍵按下; 鍵識別:確定閉合鍵的行列位置; 產(chǎn)生閉合鍵鍵碼; 排除多鍵、串鍵(復(fù)按)及去抖動。,鍵的識別和鍵功能實現(xiàn),鍵的識別由接口電路完成,即鍵盤接口問題; 鍵的功能實現(xiàn)由中斷程序完成。,鍵處理子程序,在計算機中每一個鍵都對應(yīng)一個處理子程序,得到閉合鍵的鍵碼后,轉(zhuǎn)相應(yīng)的健處理子程序,實現(xiàn)該鍵所設(shè)定的功能。,鍵處理程序的流程如圖9-12,圖9-12鍵處理流程圖
17、,9.3 51單片機鍵盤接口和鍵功能的實現(xiàn),單片機的鍵盤鍵接口可以有多種方法實現(xiàn)。 使用單片機本身的并行口或串行口; 使用通用接口芯片(8255、8155等); 使用專用接口芯片如8279,周立功公司的ZLG7289A,ZLG7290B,MAX7219,南京沁恒公司的CH451,HD7279和BC7281等。 在單片機應(yīng)用系統(tǒng)設(shè)計中,一般都是把鍵盤和顯示器放在一起考慮。也有的系統(tǒng)僅單獨需要鍵盤或顯示器。介紹幾種實用的鍵盤/顯示器接口的設(shè)計方案。,9.3.1 利用AT89S51串行口實現(xiàn)的鍵盤/顯示器接口(舉例),使用AT89S51的串行口的方式0的輸出方式,構(gòu)成鍵盤/顯示器接口,如圖9-13所
18、示。 8個74LS164:74LS164(0)74LS164(7)作為8位LED數(shù)碼管的段碼輸出口,AT89S51的P3.4、P3.5作為兩行鍵的行狀態(tài)輸入線,P3.3作為TXD引腳同步移位脈沖輸出控制線,P3.3=0時,與門封死,禁止同步移位脈沖輸出。這種方案主程序可不必掃描顯示器,軟件設(shè)計簡單,使單片機有更多的時間處理其他事務(wù)。 下面列出顯示子程序和鍵盤掃描子程序。,圖9-13 用AT89S51串行口擴展鍵盤/顯示器,顯示子程序:,DIR: SETBP3.3; P3.3=1,允許TXD腳同步移位脈沖輸出 MOVR7,08H; 送出的段碼個數(shù) MOVR0,7FH; 7FH78H為顯示數(shù)據(jù)
19、緩沖區(qū) DL0: MOV A,R0; 取出要顯示的數(shù)送A ADD A,0DH; 加上偏移量 MOVC A,APC; 查段碼表SEGTAB, 取出段碼 MOV SBUF ,A; 將段碼送串行口的SBUF DL1: JNB TI,DL1; 查詢1個字節(jié)的段碼輸出完否? CLRTI; 1字節(jié)的段碼輸出完,清TI標志 DECR0; 指向下一個顯示數(shù)據(jù)單元,DJNZR7,DL0;段碼個數(shù)計數(shù)器R7是否為0,如不 ;為0,繼續(xù)送段碼 CLR P3.3; 8個段碼輸出完畢,關(guān)閉顯示器輸出 RET ; 返回 SEGTAB: DB 0C0H,0F9H,0A4H,0B0H;共陽極段碼表 DB99H,9
20、2H,82H,0F8H,90H DB88H,83H,0C6H,0A1H,86H DB8FH,0BFH,8CH,0FFH,0FFH,顯示子程序:,鍵盤掃描子程序:,KEYI:MOVA,00H; 判斷有無鍵按下, 使所有列線為0 MOVSBUF,A; 掃描鍵盤的(8)號74LS164輸出為 ;00H,使所有列線為0 KL0: JNBTI,KL0; 串行輸出完否? CLRTI; 串行輸出完畢,清TI KL1:JNBP3.4,PK1; 第1行有閉合鍵嗎?如有,跳PK1進行處理 JB P3.5,KL1; 在第2行鍵中有閉合鍵嗎?無閉合鍵跳KL1 PK1: ACALL DL10; 調(diào)用延時10ms
21、子程,軟件消抖動 JNB P3.4,PK2; 判斷是否由抖動引起? JB P3.5,KL1 PK2: MOV R7,08H; 不是抖動引起的 MOV R6,0FEH;判別是哪一個鍵按下,F(xiàn)EH為最左1列為低 MOV R3,00H; R3為列號寄存器 MOV A,R6 KL5: MOV SBUF,A; 列掃描,列掃描碼從串行口輸出,KL2: JNB TI,KL2;等待串行口發(fā)送完 CLR TI;串行口發(fā)送完畢,清TI標志 JNB P3.4,PKONE;讀第1行線狀態(tài),第1行有鍵閉合跳PKONE JB P3.5,NEXT;讀第2行狀態(tài),2行某鍵否? MOV R4,08H;2行中有鍵
22、被按下,行首鍵號08H送R4 AJMP PK3 PKONE:MOV R4,00H;1行鍵中有鍵按下,行首鍵號00H送R4 PK3: MOV SBUF,00H;等待鍵釋放,發(fā)送00H使所有列線為低 KL3: JNB TI,KL3; 判1個字節(jié)是否發(fā)送完畢 CLR TI; 發(fā)送完畢,清標志 KL4: JNB P3.4,KL4; 判行線狀態(tài) JNB P3.5,KL4 MOV A,R4; 兩行線均為高,說明鍵已釋放 ADD A,R3; 計算得鍵碼A RET,鍵盤掃描子程序:,NEXT:MOV A,R6;列掃描碼左移一位,判下一列鍵 RL A MOV R6,A; 記住列掃描碼于R6中
23、 INC R3; 列號增1 DJNZ R7,KL5; 列計數(shù)器R7減1,8列鍵都檢查完否? AJMP KEYI; 8列掃描完,開始下一個鍵盤掃描周期 DL10: MOV R7,0AH; 延時10ms子程序 DL: MOV R6,0FFH DL6: DJNZ R6,DL6 DJNZ R7,DL RET,鍵盤掃描子程序:,本例中,如只需LED數(shù)碼管顯示部分,可把鍵盤部分的電路去掉即可;如只需鍵盤,可把LED數(shù)碼管部分的電路去掉。,9.3.2 使用8155作為鍵盤接口,接口電路邏輯圖(見圖9-14),圖9-14 8031用8155擴展I/O口組成的矩陣式鍵盤連線圖,8155 PA口地址7F01H
24、 PC口地址7F03H,判斷有無鍵按下,PA口輸出00H,PC口輸入行狀態(tài)信號; 若PC3PC01111,有鍵按下,,去抖動,延時510ms后再判斷有無鍵按下,確認哪個鍵被按下及其鍵號,8155的PA口依次輸出下列掃描字:,鍵掃描及識別過程,8155:PA口輸出列掃描信號,PC口輸入行狀態(tài)信號,,,則每個鍵的鍵值(列行組合),FE E 、FD E 、 FB E 、F7 E 、EF E 、DE E 、BF E 、 7F E FE D 、FD D 、 FB D 、F7 D 、EF D 、DE D 、BF D 、7F D FE B 、FD B 、 FB B 、F7 B 、EF B 、DE B 、BF
25、 B 、 7F B FE 7 、 FD 7 、 FB 7 、F7 7 、EF 7 、 DE 7 、 BF 7 、 7F 7,每個鍵的鍵號(自己安排),N = 行首鍵號+列號,確認哪個鍵被按下及其鍵號(續(xù)),8155的PC口輸入行狀態(tài)可能為下列之一:,等待鍵釋放后再進行進一步處理。,鍵掃描程序框圖,入口,有鍵按下?,,,,,,延時12ms,有鍵按下?,,,,,,,,,,N,Y,N,Y,,鍵號入棧保存,按鍵抬起?,,,,N,Y,,,鍵號送A,,返回,,判斷按鍵是否抬起(以防止重復(fù)進行鍵處理),,鍵掃描程序,ORG1000H KEY1: ACALLKS1;調(diào)用判斷有無鍵按下子程序 JNZLK1;有鍵
26、按下,轉(zhuǎn)去抖動 AJMPKEY1 ;無鍵按下,返回 LK1: ACALLTM12S ;延時12ms ACALLKS1;再查有無鍵按下 JNZLK2;確實有鍵按下,逐行掃描,確定具體鍵 AJMPKEY1;無鍵按下,返回 LK2: MOVR2 ,#0FEH;首列掃描字送R2 MOVR4 ,#00H;首列號R4 LK4: MOVDPTR ,#7F01H;首列掃描字送8155的PA口 MOVA ,R2;第一列掃描 MOVXDPTR ,A;使第i列為0(R2中Di位為0),鍵掃描程序(續(xù)),INCDPTR INCDPTR;指向8155的PC口 MOVXA ,DPTR;讀入行狀態(tài) JBACC.0 ,LON
27、E;0行無鍵按下,轉(zhuǎn)查1行 MOVA ,#00H;0行有鍵按下,行首鍵號#00H送A AJMPLKP;求鍵號 LONE: JBACC.1 ,LTWO;1行無鍵按下,轉(zhuǎn)查2行 MOVA ,#08H;1行有鍵按下,行首鍵號#08H送A AJMPLKP;求鍵號 LTWO: JBACC.2 ,LTHR;2行無鍵按下,轉(zhuǎn)查3行 MOVA ,#10H;2行有鍵按下,行首鍵號#10H送A AJMPLKP;求鍵號 LTHR: JBACC.3 ,NEXT;3行無鍵按下,轉(zhuǎn)查下一列 MOVA ,#18H;3行有鍵按下,行首鍵號#18H送A,鍵掃描程序(續(xù)),LKP: ADDA ,R4;求鍵號 = 行首鍵號+列號
28、PUSHACC;鍵號入棧 LK3: ACALLKS1;等待鍵釋放 JNZLK3;未釋放,繼續(xù)等待 POPACC;已釋放,鍵號送A RET NEXT: INCR4;指向下一列,列號加1 MOVA ,R2;判斷8列掃描完沒有 JNBACC.7,KND;8列掃描完,返回 RLA;沒掃描完,置下一列掃描字 MOVR2 , A;掃描字送A AJMPLK4;繼續(xù)下列掃描 KND: AJMPKEY1;8列掃描完,返回,鍵掃描程序(續(xù)),KS1: MOVDPTR,#7F01H;查有無鍵按下子程序 MOVA,#00H MOVXDPTR,A;8155 PA口輸出全掃描字#00H INCDPTR INCDPTR;指
29、向8155的PC口 MOVXA,DPTR;讀入行狀態(tài),若有鍵按下,則A0FFH CPLA;改成正邏輯,若有鍵按下,則A00H ANLA,#0FH;屏蔽高四位 RET;子程序返回,當有鍵按下時,AA00H T12sm: MOVR7,#18H;12sm延時子程序 TM: MOVR6,#0FFH TM6: DJNZR6,TM6;td=1+(1+255*2+2)*24+2*MC DJNZR7,TM RET,鍵操作及功能處理,求出鍵號后要進行鍵處理: 先判斷是何種鍵,然后: 對數(shù)字鍵----送顯示緩沖區(qū)顯示; 對功能鍵----執(zhí)行相應(yīng)的功能鍵處理程序。,設(shè): 015號鍵為數(shù)字鍵,即鍵號<10H的是數(shù)字鍵
30、; 1631號鍵為功能鍵,即鍵號10H的是功能鍵; 其功能鍵處理程序入口地址分別為: AAA、BBB、CCC、PPP。,鍵操作及功能處理(續(xù)),ORG8000H KEYADR: MOVA,BUFF;鍵號送A CLRC SUBBA,#10H;Y與10H比較 JCDIGPRO;<10H,數(shù)字鍵,轉(zhuǎn) KEYTBL: MOV DPTR,#JMPTBL RLA;使鍵值為0、2、4、6、偶數(shù) AJMPA+DPTR,則轉(zhuǎn)入功能鍵處理程序清單如下:,,,,鍵操作及功能處理(續(xù)),JMPTBL: AJMPAAA;2 字節(jié)指令散轉(zhuǎn)到16個功能鍵處理 AJMPBBB; 程序入口 AJMPCCC AJMPDDD AJ
31、MPEEE AJMPFFF AJMPGGG AJMPHHH AJMPIII AJMPJJJ AJMPKKK AJMPLLL AJMPMMM AJMPNNN AJMPOOO AJMPPPP,9.3.2 各種專用的鍵盤/顯示器接口芯片簡介,使用鍵盤接口專用芯片,可省去編寫鍵盤/顯示器動態(tài)掃描程序以及鍵盤去抖動程序編寫的繁瑣工作。 目前各種專用接口芯片種類繁多,各有特點,總體趨勢是并行接口芯片逐漸退出,串行接口芯片越來越多的得到應(yīng)用。 早期的較為流行的鍵盤/顯示器芯片8279,目前流行的鍵盤/顯示器接口芯片均采用串行通信方式,占用口線少。常見的芯片有:周立功公司的ZLG7289A、ZLG7290B、
32、MAX7219、南京沁恒公司的CH451、HD7279和BC7281等。,可編程鍵盤/顯示器接口芯片8279,8279是一種專用于鍵盤/顯示器的可編程接口電路,能對鍵盤自動掃描,給出閉合鍵的鍵碼,能自動向數(shù)碼管顯示器輸出顯示代碼和位代碼。 其中鍵盤接口電路可與64鍵點陣式鍵盤聯(lián)接,具有二鍵封鎖或N鍵巡回功能,可自動消除按鍵抖動。 顯示器接口電路可與8位或16位數(shù)碼管顯示器聯(lián)接。,8279內(nèi)部結(jié)構(gòu),電路邏輯分為三個部分: (1)芯片接口控制邏輯 數(shù)據(jù)緩沖器 I/O控制電路 (2)鍵盤接口控制邏輯 掃描計數(shù)器 掃描回送電路 鍵盤去抖動與控制電路 88FIFO/傳感器RAM與狀態(tài)電路 控制與時序寄存
33、器及時序控制電路,8279內(nèi)部結(jié)構(gòu),(3)顯示器接口控制邏輯 168顯示用RAM 顯示寄存器 顯示地址寄存器,電路邏輯結(jié)構(gòu)示于圖9-15,8279內(nèi)部結(jié)構(gòu),,圖9-15 8279的邏輯結(jié)構(gòu),8279內(nèi)部結(jié)構(gòu)圖,控制與定時寄存器:寄存鍵盤及顯示器工作方式,完成控制功能 定時控制:包括基本的計數(shù)器是可編程N計數(shù)器,N由編程指定(231),對CLK分頻,獲得內(nèi)部所需100kHz工作時鐘;其他再分頻,為鍵盤及顯示器掃描提供掃描時鐘,4位的計數(shù)器,有譯碼、編碼兩種方式,由編程設(shè)定 譯碼方式:最低兩位經(jīng)譯碼,由SL03輸出,作為鍵盤及顯示器的掃描信號.(任何時刻, SL03只有一個信號有效,實現(xiàn)4
34、選1) 編碼方式:計數(shù)器的狀態(tài)由SL03直接輸出,再經(jīng)外部譯碼,才能作為掃描信號.(實現(xiàn)16選1),(1)芯片接口控制邏輯,實現(xiàn) 8279 和單片機接口,主要包括: 數(shù)據(jù)緩沖器 雙向、三態(tài)的數(shù)據(jù)緩沖器用于芯片內(nèi)部總線和系統(tǒng)總線的連接,進行單片機和 8279 之間的數(shù)據(jù)傳送,信號引腳為 DBODB7。 I/O控制電路 I / O 控制電路用于接收單片機方面送來的控制信號,并產(chǎn)生所需的8279內(nèi)部控制信號,例如控制數(shù)據(jù)緩沖器的數(shù)據(jù)輸入輸出等。 中斷請求產(chǎn)生電路 根據(jù)鍵盤存儲區(qū)的狀態(tài)產(chǎn)生中斷請求信號。,(2)鍵盤接口控制邏輯,掃描計數(shù)器 掃描計數(shù)器電路用于為鍵盤提供掃描信號, 4 位掃描信號從掃描線
35、 SL3SL0輸出,并具有兩種輸出形式 譯碼方式(也稱內(nèi)部譯碼形式) 指掃描代碼直接由掃描線SL0SL3輸出,每次只有1位是低電平(4選1) 編碼方式(也稱外部譯碼形式) 指掃描代碼經(jīng)SL0SL3外接譯碼器輸出 SL3SL0輸出波形見圖9-16,圖9-16 掃描輸出波形,(2)鍵盤接口控制邏輯(續(xù)),控制與時序寄存器及時序控制電路 用于對鍵盤掃描進行控制。 時序控制部件包括基本定時計數(shù)器,其中第一個N計數(shù)器是一個N預(yù)分頻定標器,可通過編程使內(nèi)部時序與CPU相適應(yīng)。 預(yù)分頻定標器的分頻系數(shù)可由程序設(shè)定為231。使內(nèi)部計數(shù)頻率為100KHz時,給出5.1mS的鍵盤掃描時間和10.3mS的去抖動時間
36、。 其它計數(shù)器將此基本計數(shù)頻率再分頻,以提供適當?shù)逆I掃描、行掃描、鍵盤矩陣掃描及顯示器掃描時間。,(2)鍵盤接口控制邏輯(續(xù)),回送緩沖器與鍵盤去抖動和控制電路 輸入每次掃描的列線RL0 RL7狀態(tài),以進行閉合鍵的搜索。 回送緩沖器具有鎖存功能,對回送線RL7RL0上的信息進行緩沖和鎖存。 在鍵盤工作方式下,對回送線逐條掃描,以確定該行中哪一個鍵閉合。當去抖動電路測得某一按鍵閉合后,等待10mS,然后再重新檢查該鍵是否閉合,如果仍然閉合,那么該鍵在陣列中的地址及SHIFT和CNTL的狀態(tài)被送入先進先出寄存器FIFO。 在掃描傳感器矩陣方式下,每次掃描按鍵時直接把回送線上的內(nèi)容送入傳感器RAM的
37、相應(yīng)單元中去。 在選通輸入方式下,回送線的狀態(tài)將在控制/選通線上的脈沖上升沿送入先進先出寄存器。,(2)鍵盤接口控制邏輯(續(xù)),FIFO/傳感器RAM與狀態(tài)電路 FIFO/傳感器RAM是一個雙功能88 RAM,在鍵盤或選通輸入方式下是一個先進先出寄存器(FIFO); 信息輸入時,每一組信息寫入RAM中的下一單元,然后按寫入順序讀出; FIFO狀態(tài)電路存放FIFO中的字符數(shù)目以及FIFO滿或空的狀態(tài); FIFO寫入或讀出次數(shù)超過FIFO的容量時,視為出錯; 在掃描傳感器矩陣方式下,該存儲器用作傳感器RAM; 當檢測到一個傳感器狀態(tài)發(fā)生變化時,IRQ變?yōu)楦唠娖剑駽PU發(fā)中斷請求,(3)顯示器接口
38、控制邏輯,顯示存儲區(qū) 8279 可連接8位和16位的 LED 顯示器; 為給每位顯示器提供顯示數(shù)據(jù),在8279 芯片中有一個168的RAM存儲區(qū),其中每一個8位 RAM 單元對應(yīng)一位LED顯示器,即0 到 15 地址對應(yīng) LED 顯示器的015 位,顯示器的0位在最左邊, 15 位在最右邊。 顯示緩沖器(顯示更新寄存器) 用于為顯示器提供段控數(shù)據(jù); 使用時,8279 自動對顯示器掃描,將顯示緩沖器中的數(shù)據(jù)輸出在顯示器上顯示出來。,顯示器地址寄存器及顯示用RAM,顯示器地址寄存器用來存放CPU正在讀/寫的字節(jié)地址,以及正在顯示的兩個4位的半字節(jié)地址。 讀/寫地址由編程設(shè)定,也可設(shè)定每次讀/寫后地
39、址自動加1。 在設(shè)定適當?shù)墓ぷ鞣绞胶偷刂芬院螅珻PU可直接讀出顯示用RAM中的內(nèi)容。 A、B兩個半字節(jié)地址由8279自動刷新,以便與CPU輸出值相對應(yīng)。 A、B兩半字節(jié)可以分別輸出,也可作為一個字節(jié)輸出,由工作方式確定。 數(shù)據(jù)送顯示器的方式可設(shè)定為左端送入,也可以設(shè)定為右端輸入。,8279 的信號引腳,8279共有40個引腳,采用雙列直插式封裝(見圖9-17),圖9-17 8279引腳與邏輯符號圖,8279的引腳功能如下:,(1)數(shù)據(jù)線 DB7DB0:數(shù)據(jù)輸入/輸出線,雙向,在接口電路中與系統(tǒng)數(shù)據(jù)總線相連,用以傳送CPU和8279之間的數(shù)據(jù)和命令。 (2)地址線 CS#:片選線。CS#=0,選
40、中8279。 A0:信息特征線。當A0=1時,為命令字及狀態(tài)字地址;當A0=0時,為片內(nèi)數(shù)據(jù)地址,故8279芯片占用2個端口地址。 (3)控制線 CLK:時鐘脈沖輸入端。,(3)控制線,RD#:讀信號,輸入,低電平有效,將緩沖器中的數(shù)據(jù)讀出,送外部數(shù)據(jù)總線。 WR#:寫信號,輸入,低電平有效,將外部數(shù)據(jù)總線上的數(shù)據(jù)寫入內(nèi)部單元。 IRQ:中斷請求,輸出,高電平有效。當鍵被按下,F(xiàn)IFO RAM中有數(shù)據(jù)時,該信號有效。 SL3SL0:掃描輸出線,用來掃描按鍵開關(guān)或傳感器矩陣以及顯示器的各位數(shù)字。 RL7RL0:鍵掃描輸入(回送)線,通過按鍵或傳感器開關(guān)與掃描線聯(lián)接,內(nèi)設(shè)上拉電路,使之保持為高電平
41、。當某一按鍵閉合時,其中一條變?yōu)榈碗娖?。在選通輸入方式下可作為8條輸入線。,(3)控制線,SHIFT:換檔線。來自外部鍵盤或傳感器矩陣的輸入信號,它是8279鍵盤數(shù)據(jù)的次高位即D6位的狀態(tài),該位狀態(tài)控制鍵盤上/下檔功能。在傳感器方式和選通方式中,該引腳無用。 CNTL/STB:控制/選通輸入線,高電平有效。鍵盤方式時,鍵盤數(shù)據(jù)最高位(D7)的信號輸入到該引腳,以擴充鍵功能;選通方式時,當該引腳信號上升沿到時,把RL0RL7的數(shù)據(jù)存入FIFO RAM中。 OUTA30,OUTB30:是164顯示器更新寄存器的兩個輸出端,輸出數(shù)據(jù)與掃描線(SL3SL0)同步,以供多路轉(zhuǎn)換數(shù)字顯示器使用。兩個端口可
42、并為一個8位端口使用。 OUTA30:通常作為顯示信號的高4位輸出線; OUTB30:通常作為顯示信號的低4位輸出線。,(3)控制線,BD#:空格顯示,輸出,低電平有效。在數(shù)字切換過程中使顯示器熄滅,或者由顯示熄滅命令使顯示器熄滅。 RESET:復(fù)位信號輸入端,高電平有效。 Vcc:5V電源。 Vss:地。,8279的工作方式,(1) 鍵盤工作方式 8279在鍵盤工作方式時,可設(shè)置為雙鍵互鎖方式和N鍵循回方式 雙鍵互鎖方式: 若有兩個或多個鍵同時按下時,不管按鍵先后順序如何,只能識別最后一個被釋放的鍵,并把該鍵值送入FIFO RAM中。 N鍵循回方式: 一次按下任意個鍵均可被識別,按鍵值按掃描
43、次序被送入FIFO RAM中。,(2)傳感器(掃描)方式,FIFO RAM中8個單元用于寄存?zhèn)鞲衅鞯默F(xiàn)時狀態(tài),又稱傳感器RAM,其地址編號與掃描線順序一致; 傳感器方式是把傳感器的開關(guān)狀態(tài)送入傳感器RAM中。 當CPU對傳感器陣列掃描時,一旦發(fā)現(xiàn)傳感器陣列(最多為88位)中某一位狀態(tài)發(fā)生變化時,產(chǎn)生IRQ(高電平),中斷響應(yīng)后轉(zhuǎn)入中斷處理程序。,(3)選通輸入方式 與8255A通輸入端口的功能完全一樣,CNTL/STB作為選通信號,上升沿鎖存RL0RL7到FIFO RAM;,(4) 顯示方式,8279的顯示方式又可分為左端入口和右端入口方式; 顯示數(shù)據(jù)只要寫入顯示RAM則可由顯示器顯示出來,因
44、此顯示數(shù)據(jù)寫入顯示RAM的順序,決定了顯示的次序; 左端入口方式:顯示位置從顯示器最左端1位(最高位)開始,以后顯示的字符逐個向右順序排列; 顯示器位置編號與顯示RAM地址一一對應(yīng)(0號單元顯示在0號顯示器上); 右端入口方式:顯示位置從顯示器最右端1位(最低位)開始,已顯示的字符逐個向左移位。 但無論左右入口,后輸入的總是顯示在最右邊。,8279的寄存器,8279共有三個寄存器: 命令寄存器 狀態(tài)寄存器 數(shù)據(jù)寄存器 命令和狀態(tài)寄存器對應(yīng)同一個地址。 (1)命令寄存器 命令寄存器是8位寄存器,只能寫,不能讀; 高3位( D7 、 D6、 D5)是命令的特征位,8種不同的狀態(tài)組合代表著不同的命令
45、。 命令的格式見表9-8,8279的寄存器(續(xù)),(2)狀態(tài)寄存器 8279 的狀態(tài)寄存器為 8 位寄存器,只能讀,不能寫; 用于在鍵輸入及選通輸入方式中,指出鍵數(shù)據(jù)緩沖器 FIFO RAM 中的數(shù)據(jù)字節(jié)個數(shù)和是否出錯。 狀態(tài)字格式如表9-3,DU:顯示無效標志, 當清除命令尚未完成時,該位置1 S/E:鍵盤輸入方式下作特殊錯誤標志,=1:多鍵同時按下 O:溢出標志,向已滿的FIFO RAM寫時置1 U:不足標志,從已空的FIFO RAM讀時置1 F:表示 FIFO RAM 已滿(存有 8 個鍵碼) N2N1N0:FIFO RAM中字符的個數(shù),,表9-3 8279的狀態(tài)字格式,8279的寄存器
46、(續(xù)),狀態(tài)寄存器各位的意義 D2,D1,D0(N2,N1,N0):其值為 FIFO RAM 中數(shù)據(jù)的個數(shù); D3(F):D3=1,表示 FIFO RAM 已滿(存有 8 個鍵碼) D4(U):D4=1,表示“不足”錯誤; D5(O):D5=1,表示“超出”錯誤; D6(S/E):用于傳感器矩陣輸入方式,D6=1表示多鍵同時閉合; D7(Du):顯示無效標志。 當清除命令尚未完成時,該位置1。,,8279的寄存器(續(xù)),(3)數(shù)據(jù)寄存器 數(shù)據(jù)寄存器實際上就是 FIFO RAM 中最前面的那個單元,其內(nèi)容為被按鍵的信息,通過讀它把鍵盤信息輸入單片機。 該寄存器的數(shù)據(jù)格式如表9-4所示: D2D1
47、D0:閉合鍵的列號(由RL7 RL0值確定); D5 D4D3:閉合鍵的行號(掃描計數(shù)值); D6: 換擋健 SHIFT 的狀態(tài); D7:控制健 CNTL 的狀態(tài)。 注意,在傳感器掃描方式和選通輸入方式中,輸入數(shù)據(jù)即為 RL7RL0的輸入狀態(tài)。,8279數(shù)據(jù)輸入/輸出格式,輸入/輸出數(shù)據(jù)不僅要先確定地址口,而且數(shù)據(jù)存放也要按一定格式,其格式在鍵盤和傳感器方式有所不同。,(1) 鍵盤掃描方式數(shù)據(jù)輸入格式(見表9-4),,D7:控制鍵 “CNTL”狀態(tài) D6:控制鍵 “SHIFT”狀態(tài) D5 D4 D3:被按鍵所在列號(由SL0---SL2)狀態(tài)確定) D2 D1 D0:被按鍵所在行號(由RL0-
48、--RL7)狀態(tài)確定,表9-4 鍵盤掃描方式數(shù)據(jù)輸入格式,8279數(shù)據(jù)輸入/輸出格式(續(xù)),(2)傳感器方式及選通方式數(shù)據(jù)輸入格式,,此種方式8位輸入數(shù)據(jù)為RL0---RL7的狀態(tài) 數(shù)據(jù)輸入格式見表9-5,表9-5 傳感器及選通方式的數(shù)據(jù)輸入格式,8279的命令字及其格式,8279的各種工作方式都要通過對命令寄存器的設(shè)置來實現(xiàn)。 8279共有8種命令,通過這些命令設(shè)置工作寄存器,選擇各種工作方式。 命令寄存器共8位,格式如下:,8279的命令字及其格式(續(xù)),8279的一條命令由兩大部分組成; 命令寄存器高3位D7D5為命令特征位,表征命令類型。D7D5三位的狀態(tài)可組合出8種形式,對應(yīng)8類命令
49、。 命令寄存器的低5位D4D0為命令的具體內(nèi)容。,8279的命令字類型設(shè)置,每種特征所代表的命令如表9-6所示,,表9-6 8279命令特征,(1) 鍵盤/顯示命令:(特征位 D7D6D5=000),D4、D3兩位用來設(shè)定4種顯示方式; D2、D1、D0三位用以設(shè)定8種鍵盤/顯示掃描方式 鍵盤/顯示命令格式見表9-7,,,,,,,,,,設(shè)置工作方式,00:8字符,左入口 01:16字符,左入口 10:8字符,右入口 11:16字符,右入口,00:鍵盤,雙鍵鎖定 01:鍵盤,N鍵輪回 10:傳感器掃描 11:選通輸入,0:編碼掃描 1:譯碼掃描,,表9-7 8279的鍵盤/顯示命令格式,顯示器方
50、式設(shè)置(見表9-8),,(1) 鍵盤/顯示命令(續(xù)),,鍵盤方式設(shè)置:,,(1) 鍵盤/顯示命令(續(xù)),譯碼掃描(內(nèi)譯碼):指掃描代碼直接由掃描線SL0SL3輸出,每次只有1位是低電平(4選1); 編碼掃描(外譯碼):是指掃描代碼經(jīng)SL0SL3外接譯碼器輸出 由于鍵盤最大88=64個鍵,由SL0SL2接3:8譯碼器,譯碼器的8位輸出作為鍵盤掃描輸出線(列線),RL0RL7為輸入線(行線)。 8279最多驅(qū)動16位顯示器,故可由SL0SL3接4:16譯碼器,譯碼器的16位輸出作為顯示掃描輸出線(16選1),決定第幾位顯示。 顯示字段碼由OUTA0OUTA3和OUTB0OUTB3輸出。,例9-1:
51、若希望設(shè)置8279為鍵盤譯碼掃描方式、N鍵輪回,顯示8個字符、右端入口方式,確定其命令字。 根據(jù)題目要求可進行分析,因為具有下列條件: 是鍵盤/顯示命令特征位:D7 D6 D5=000 (表9-6) ; 8個字符右端入口顯示:D4 D3=10(表9-8); 鍵盤譯碼掃描,N鍵輪回:D2 D1 D0=011(表9-9); 所以8位命令器存器狀態(tài)D7D0=00010011B,即該命令字13H送入命令寄存器口地址則可滿足題目要求。 例9-2:若已知命令字為08H,判斷8279工作方式。 因為命令字為08H,即D7D0=00001000B,顯然D7 D6 D5=000,該條命令為鍵盤/顯示命令,D4D
52、3=01為16字符左端入口顯示方式,D2D1D0=000,鍵盤為編碼掃描、雙鍵鎖定方式。,(2)內(nèi)部時鐘設(shè)置命令( D7D6D5001 ),例9-3:若8279 CLK的輸入信號頻率為3.1 MHz,則分頻系數(shù)應(yīng)為31D=1FH,于是 D4D0=11111,控制字為:D7D0=00111111B=3FH,,,分頻目的:得到100KHz的基本工作時鐘,,(2)內(nèi)部時鐘設(shè)置命令(續(xù))(D7D6D5001),8279的內(nèi)部時鐘信號是由外部輸入的時鐘信號經(jīng)過分頻產(chǎn)生; 分頻系數(shù)由D4D0來設(shè)定,分頻系數(shù)范圍在231之間 有的設(shè)計會用單片機的ALE端接8279的CLK端,但ALE端輸出的脈沖頻率比827
53、9所需工作時鐘頻率(100KHz)高出很多,通過設(shè)置分頻系數(shù)就可使8279得到所需的時鐘頻率。,例9-4 已知80C51的fosc=12MHz,要求8279的內(nèi)部時鐘信號頻率為100kHz,求分頻系數(shù)N。 【解】: fosc=12MHz,fALE=1/6 fosc=2MHz = fCLK N=2MHz/100kHz =20D=10100B 因此,時鐘編程命令字:00110100B=34H。,(3)讀FIFO/傳感器RAM命令(D7D6D5=010)(表9-12),D2D0:為8279中FIFO及傳感器RAM的首地址 D3: 無效位。 D4 :控制RAM地址自動加1位: D4=1時,CPU讀
54、完一個數(shù)據(jù),RAM地址自動加1,準備讀下一個單元數(shù)據(jù); D4=0時,CPU讀完一個數(shù)據(jù),地址不變。,鍵盤方式無效,寫0,0:讀出后地址不變 1:每次讀出地址自動加1,,例9-5:欲編程使單片機連續(xù)讀8279內(nèi)FIFO/傳感器RAM中000-111單元的數(shù)據(jù),設(shè)置讀命令。,分析: 因為要連續(xù)讀數(shù),地址又連續(xù)。所以最好設(shè)置為自動加1方式,即D4=1; RAM內(nèi)首地址000,即D2D0=000,再加上特征位,所以該命令控制字為:D7D0=01010000B=50H (無用位D3設(shè)為0); 送入50H控制字,在執(zhí)行讀命令時,先從FIFO/傳感器RAM中000單元讀數(shù),讀完一個數(shù),地址自動加1,又從00
55、1單元讀數(shù),依次類推,直到讀完所需數(shù)據(jù)。,(4)讀顯示緩沖器(RAM)命令(D7D6D5011),從 8279 向單片機讀出顯示數(shù)據(jù)(用于檢查)之前,應(yīng)先執(zhí)行該命令。命令格式如前表9-11 命令中 D3D0表示起始地址, D4位為自動增量標志 D41時,每次讀出后,RAM地址自動加 1 D40時,每次讀出后,RAM地址不加 1,例9-6 欲讀顯示RAM中1000單元地址,求命令字。 分析:因為只讀一個數(shù),地址不需自動加1,即設(shè)置: D4=0,特征位為011,地址為1000, 所以其控制命令字為:D7D0=01101000B=68H。,,(5)寫顯示RAM命令(D7D6D5 = 100),從單片
56、機向 8279 寫入顯示數(shù)據(jù)之前應(yīng)先執(zhí)行該命令命令中 D3D0表示起始地址,數(shù)據(jù)寫入按左輸入或右輸入方式進行; D4:地址自動加1控制位,為自動增量標志 D41時,每次寫入后地址自動加 1。 D4=0,地址不加1。,,D3D0是欲寫入的RAM地址,若連續(xù)寫入則表示RAM的首地址。 命令格式同讀顯示RAM(參考表9-11)。,,(6)寫入和消隱屏蔽命令( D7D6D5101 )格式見表9-12,,,,,,,,,1:相應(yīng)顯示RAM禁止寫入,,1:消隱,,,(6)寫入和消隱屏蔽命令(續(xù)),設(shè)置了這條命令使接口的四位顯示器相互獨立。 D3、 D2位用于寫入屏蔽; D31時,屏蔽A組,B可以寫入數(shù)據(jù)且不
57、影響A組; D21時,屏蔽B組,A可以寫入數(shù)據(jù)且不影響B(tài)組; 兩位同時為“ 1 ”時則不進行寫入屏蔽。 D1、D0位用于消隱屏蔽; D11 時,消隱A組; D01 時,消隱B組; 兩位同時為“ 1 ”時則不進行消隱屏蔽。,,例9-6 假設(shè)A、B兩組燈均已被點亮,現(xiàn)在希望A組燈繼續(xù)亮,B組燈熄滅,確定其命令字。,分析: 根據(jù)命令格式,A組燈繼續(xù)亮應(yīng)禁止A組RAM再寫入其他數(shù)據(jù),故D3=1; B組顯示熄滅D0=1, 除特征位外其余位設(shè)為“0”。 故其控制命令字為:D7D0=10101001B=A9H,(7)清除顯示RAM和FIFO中的內(nèi)容命令(D7D6D5110),該命令用于清除顯示、清除鍵輸入標
58、志和中斷請求標志 命令中的 D4、D3 、D2位用于設(shè)置清除方式 D4D3D210,將顯示RAM 置成00H; D4D3D2110 ,將顯示RAM置成20H; D4D3D2111 ,將顯示RAM置成FFH; D4D3D20,不清除顯示 RAM 。 D1:清除標志位。 D11,清除FIFO 狀態(tài)標志,F(xiàn)IFO被置為空狀態(tài)(無數(shù)據(jù)),并復(fù)位中斷請求線 IRQ 。 D0:總清除。D01,清除包括FIFO RAM和顯示RAM。 清除顯示RAM 大約需100s,在此期間,單片機不能向顯示RAM寫入數(shù)據(jù)。,,例:將全部顯示RAM清0, 其命令字為:D7D0=11010001B=D1H,,(7)清除(顯示R
59、AM和FIFO中的內(nèi)容)命令(續(xù)),(8)結(jié)束中斷錯誤方式設(shè)置命令(D7D6D5111),在傳感器工作方式下,該命令用于結(jié)束傳感器 RAM 的中斷請求。 此外,該命令還用于設(shè)置一種特定的錯誤工作方式。 命令字格式如表9-13所示,,,,,D4=1時(其D3---D0位任意)有兩種不同作用。,,結(jié)束中斷錯誤方式設(shè)置命令的作用,作為結(jié)束中斷命令。在傳感器工作方式中,每當傳感器狀態(tài)出現(xiàn)變化時,掃描檢測電路接將其狀態(tài)寫入傳感器RAM,并啟動中斷邏輯,使IRQ變高,向CPU請求中斷。并且禁止寫入傳感器RAM。此時,如傳感器RAM讀出地址的自動遞增特征沒有置位(AI=0),則中斷請求IRQ在CPU第一次從
60、傳感器RAM讀出數(shù)據(jù)時就被清除。若自動遞增特征已置位(AI=1),則CPU對傳感器RAM的讀出并不能清除IRQ,而必須通過給8279寫入結(jié)束中斷/錯誤方式設(shè)置命令才能使IRQ變低。因此,在傳感器工作方式中,此命令用來結(jié)束傳感器RAM的中斷請求。,結(jié)束中斷錯誤方式設(shè)置命令的作用,作為特定錯誤方式的設(shè)置命令。在8279已被設(shè)定為鍵盤掃描N鍵輪回方式以后,如果CPU給8279又寫入結(jié)束中斷/錯誤方式設(shè)置命令(E=1)。則8279的消振周期內(nèi),如果發(fā)現(xiàn)有多個鍵被同時按下,則FIFO狀態(tài)字中的錯誤特征位S/E將置位。并產(chǎn)生中斷請求信號和阻止寫入FIFO RAM。 錯誤特征位S/E在讀出FIFO狀態(tài)字時被
61、讀出。而在執(zhí)行CF=1的清除命令時被復(fù)位,8279的編程通常編3個程序段:初始化、鍵盤服務(wù)程序和顯示器服務(wù)程序,(1) 初始化:寫入3個命令字 清除控制字: 考慮到應(yīng)允許清除顯示器,并將FIFO和RAM復(fù)位或清零(0D1H)。 設(shè)置鍵盤和顯示方式控制字 設(shè)置時鐘頻率控制字:(34H) 設(shè)內(nèi)部時鐘時鐘頻率100KHZ,CLK輸入時鐘頻率2MHZ,8279的編程使用,(2) 鍵盤服務(wù)程序:3個部分,寫入讀FIFO/傳感器RAM控制字,由按下鍵產(chǎn)生的的字符允許通過FIFO讀??; 寫入上述控制字后,再從狀態(tài)口讀取狀態(tài)字,查詢FIFO/傳感器RAM的狀態(tài)(是否有數(shù)據(jù)), 若有,則從數(shù)據(jù)口讀取掃描值SL0
62、SL3,回送RL0RL7,形成一個字節(jié)數(shù)據(jù); 修改地址指針,依次輸入n個鍵盤字,形成一個n字節(jié)的數(shù)據(jù)塊 。,(3) 顯示器服務(wù)程序,寫入顯示RAM控制字 將字形碼從數(shù)據(jù)口用指令輸出,才能實現(xiàn)顯示,,8279與單片機的一般接口方法(連線圖見圖9-17),圖9-17 51單片機用8279擴展I/O連接鍵盤與8段顯示器,初始化8279; 把顯示字符送到8279內(nèi)部的一個16字節(jié)寄存器內(nèi); 將字符轉(zhuǎn)換成段碼,經(jīng)A0A3、B0B3線把段碼送到顯示器; 同時經(jīng)SL0SL3線發(fā)出4位數(shù)位選通碼; 4-16譯碼器對選通碼進行譯碼后輪流選通各位顯示器。 SL0SL2線同時連到3-8譯碼器,該譯碼器的輸出用于掃描
63、鍵盤8行; 8279經(jīng)8根返回線(RL0RL7)讀取鍵盤的狀態(tài); 如果發(fā)現(xiàn)按鍵閉合則等待10ms,顫動過去后再檢驗按鍵是否閉合;,工作流程,若按鍵仍然閉合,則把被按鍵的鍵值選通輸入8279內(nèi)部的先進先出(FIFO)存儲器,同時經(jīng)INT線發(fā)出一個高電平,指出FIFO內(nèi)已經(jīng)有一個字符; INT線連接到CPU的中斷請求輸入線。當單片機接收到中斷請求后,若開中斷,則轉(zhuǎn)到鍵盤服務(wù)程序,從FIFO中讀取按鍵的鍵值。 在這種接口中,單片機要做的事僅是初始化8279、送出要顯示的字符、接到中斷請求后讀取按鍵的鍵值,其它工作均由8279自動完成。,工作流程,8279應(yīng)用舉例(連線圖見圖9-18),接口與地址,P
64、2.0=1,對應(yīng)命令/狀態(tài)寄存器; P2.0=0,對應(yīng)數(shù)據(jù)寄存器。,P2.7=0:8279被選通,則 命令/狀態(tài)寄存器的地址:7FFFH(A0=1); 數(shù)據(jù)寄存器的地址:7EFFH(A0=0)。,圖9-18 用8279擴展I/O口連接鍵盤與8段顯示器,按照圖設(shè)計一個程序,在6位LED數(shù)碼管上依次顯示從05這6個數(shù),START:MOVDPTR ,#7FFFH;8279命令口地址 MOVA,#90H ;8279寫顯示RAM命令字 MOVXDPTR ,A;送命令字 MOVR0 ,#0;清零 MOVR1 ,#6;顯示位數(shù) D1:MOVDPTR ,#TAB;調(diào)用顯示數(shù)據(jù) MOVA ,R0 MOVCA ,
65、A+DPTR MOVDPTR ,#7EFFH;8279數(shù)據(jù)口地址 MOVXDPTR ,A ;寫顯示RAM INC R0;寄存器內(nèi)容加1 DJNZR1 ,D1;R1內(nèi)容減1不為0則繼續(xù)執(zhí) LJMPSTART;D1,為零則結(jié)束。 TAB:DB 3FH,06H,5BH,4FH,66H DB 6DH, 7DH,07H,7FH,6FH,按照圖設(shè)計一個程序,讀入鍵盤輸入,并判斷是哪個按鍵被按下。,MOVDPTR, #7FFFH ;8279命令口地址 MOVA,#0D1H ;8279清顯示RAM命令字 MOVXDPTR,A LOOP:MOVXA,DPTR;讀狀態(tài)字 ANLA,#0FH JZLOOP;有鍵按下
66、?沒有則返回 MOVA,#0A0H;顯示/消隱命令 MOVXDPTR,A MOV A,#40H;讀FIFO命令 MOVXDPTR,A MOVDPTR, #7EFFH ;讀鍵值 MOVXA,DPTR MOVR1,A,單片機與8279的具體接口電路(見圖9-19),圖9-19 51單片機用8279擴展I/O接口連接鍵盤與8段顯示器,分析,8031的P2.7接到8279的片選端,最低位地址A0接到8279的C/D端,因此該接口對用戶來說只有二個口地址: 命令口地址:7FFFH 數(shù)據(jù)口地址:7FFEH 圖中8279外接48鍵盤和8位共陰極LED顯示器,采用編碼掃描方式,譯碼器74LS138對掃描線譯碼后一方面接鍵盤的列線,同時通過驅(qū)動器接到顯示器上。,INI79:MOVDPTR ,7FFFH ;清除命令8279 MOVA ,0D1H MOVXDPTR,A WNDU:MOVXA,DPTR;等8279清除結(jié)束 JBACC.7,WNDU MOVA,0 ;方式命令8279 MOVXDPTR,A MOVA,34H;掃描頻率設(shè)置命令8279 MOVXDPTR,A MOVIE,84H;允許8031中斷 RE
- 溫馨提示:
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)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案