可編程數(shù)碼管/鍵盤(pán)串行接口芯片HD7279A的原理與應(yīng)用
該指令的格式如下:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 0 | 1 | 0 | a2 | a1 | a0 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DP | A | B | C | D | E | F | G |
在該指令格式中,a2,a1,a0為位地址,A~G和DP為顯示數(shù)據(jù),分別對(duì)應(yīng)7段LED數(shù)碼管的各段。當(dāng)相應(yīng)的數(shù)據(jù)位為1時(shí),該段點(diǎn)亮,否則,該段不亮。實(shí)際上,此指令是比較靈活的,設(shè)計(jì)時(shí)可以通過(guò)造字形表來(lái)顯示用戶所需的字符。
(4)閃爍控制88H
此命令用于控制各個(gè)數(shù)碼管的閃爍屬性,d1~d8分別對(duì)應(yīng)數(shù)碼管1~8。在相應(yīng)的各位中0表示閃爍,1表示不閃爍。開(kāi)機(jī)后的缺省狀態(tài)為各位均不閃爍。具體指令格式如下:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
d8 | d7 | d6 | d5 | d4 | d3 | d2 | d1 |
(5)讀鍵盤(pán)數(shù)據(jù)指令15H
該指令的格式如下:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
d7 | d6 | d5 | d4 | d3 | d2 | d1 | d0 |
該指令主要用于從HD7279A讀出當(dāng)前的按鍵代碼。與其它指令不同的是,此命令的前一個(gè)字節(jié)00010101B為微控制器傳送到HD7279A的指令,而后一個(gè)字節(jié)d0~d7才是HD7279A返回的按鍵代碼,該代碼的具體范圍是0~3FH(當(dāng)無(wú)鍵按下時(shí),為0xFF)。
當(dāng)HD7279A檢測(cè)到有效按鍵時(shí),KEY引腳從高電平變?yōu)榈碗娖?,并一直保持到按鍵結(jié)束。在此期間,如果HD7279A接收到“讀鍵盤(pán)數(shù)據(jù)指令”,則輸出當(dāng)前按鍵的鍵盤(pán)代碼;而如果在接收到“讀鍵盤(pán)指令”時(shí)沒(méi)有有效按鍵被按下時(shí),HD7279A則輸出FFH(11111111B)。
綜上所述在HD7279A的指令結(jié)構(gòu)類(lèi)型中不帶數(shù)據(jù)的純指令的指令寬度為8BIT,即微處理器需發(fā)送8?jìng)€(gè)CLK脈沖。而帶有數(shù)據(jù)的指令寬度為16BIT,即微處理器需發(fā)送16個(gè)CLK脈沖。但其中的讀取鍵盤(pán)數(shù)據(jù)指令寬度也是16BIT的前8?jìng)€(gè)BIT為微處理器發(fā)送到HD7279A的指令,后8?jìng)€(gè)BIT為HD7279A返回的鍵盤(pán)代碼。執(zhí)行此指令時(shí),HD7279A的DATA端在第9個(gè)CLK脈沖的上升沿變?yōu)檩敵鰻顟B(tài),并于第16個(gè)脈沖的下降沿恢復(fù)為輸入狀態(tài),以等待接收下一個(gè)指令。圖1是HD7229A的3種指令接口時(shí)序圖。
圖2
4 HD7279A的應(yīng)用
4.1 硬件電路
HD7279A的典型應(yīng)用電路如圖2所示,使用時(shí)HD7279A應(yīng)連接共陰式數(shù)碼管,無(wú)需用到的鍵盤(pán)和數(shù)碼管可以不連接。如果不用鍵盤(pán),則典型電路圖中連接到鍵盤(pán)的8只10kΩ電阻和8只100kΩ下拉電阻均可以省去。而如果使用鍵盤(pán),則電路中的8只100kΩ下拉電阻則不能省略。除非不接入數(shù)碼管,否則連接至DP及SA~SG的8只200Ω電阻也不能省去。
4.2 軟件編程
通過(guò)下面的一些子程序可對(duì)鍵盤(pán)進(jìn)行監(jiān)視,并在有鍵按下時(shí)讀取按鍵代碼,以便調(diào)用顯示程序?qū)⒃撴I值顯示在LED顯示器上。在圖2所示的接口電路中,HD7279A的外接振蕩元件可使用典型值。AT89C51的晶振頻率為6MHz。
如果將P1.0接到CS,P1.1接到CLK,P1.2接到DATA,而將P1.3接KEY,那么,其具體的軟件程序代碼如下:
(1) 發(fā)送一字節(jié)子程序:(發(fā)送數(shù)存于A中)
STFS: MOV R7,#08H
LP1: RLC A
MOV P1.2,C
SETB P1.1
MOV R6#02H
LP2: DJNZ R6, LP2 ;延時(shí)8μs
CLR P1.1
MOV R6, #02H
LP3:DJNZ R6,LP3 ;延時(shí)8μs
DJNZ R7,LP1
RET
(2)接收一字節(jié)子程序:(接收字符存于A中)
STJS: MOV R7,#08H
LP1:SETB P1.1
SETB P1.2
MOV R6,#02H
LP2: DJNZ R6,LP2 ;延時(shí)8μs
MOV C, P1.2
RLC A
CLR P1.1
MOV R6,#01H
LP3: DJNZ R6,LP3 ;延時(shí)
DJNZ R7,LP1
評(píng)論