1 主要特性
HD7279A是比高公司生產(chǎn)的單片具有串行接口,、可同時驅(qū)動8位共陰式數(shù)碼管(或64只獨立LED)的智能顯示驅(qū)動芯片,,該芯片同時可連接多達(dá)64鍵的鍵盤矩陣,一片即可完成LED顯示及鍵盤接口的全部功能,。HD7279A和微處理器之間采用串行接口,,其接口和外圍電路比較簡單,且占用口線少,,加之它具有較高的性能價格比,,因此,在微型控制器,、智能儀表,、控制面板和家用電器等領(lǐng)域獲得了日益廣泛的應(yīng)用。
HD7279A的主要特點如下:
●帶有串行接口,,無需外圍元件便可直接驅(qū)動LED,;
●各位可獨立控制譯碼/不譯碼,、消隱和閃爍等屬性;
●具有(循環(huán))左移/(循環(huán))右移指令,;
●具有段尋址指令,,可方便地用來控制獨立的LED顯示管,;
●64鍵鍵盤控制器內(nèi)含去抖動電路,。
2 引腳說明
HD7279A一共有28個引腳,各引腳的主要功能如下:
RESET:復(fù)位端,。當(dāng)該端由低電平變成高電平,,并保持25ms后,復(fù)位過程結(jié)束,。通常,,該端接+5V電源;
DIG0~DIG7:8個LED管的位驅(qū)動輸出端,;
SA~SG:LED數(shù)碼管的A段~G段的輸出端,;
DP:小數(shù)點的驅(qū)動輸出端;
RC:外接振蕩元件連接端,,其中電阻的典型值為1.5kΩ電容的典型值為15pF,。
HD7279A與微處理器僅需4條接口線,其中CS為片選信號(低電平有效),。DATA為串行數(shù)據(jù)端,,當(dāng)向HD7279A發(fā)送數(shù)據(jù)時,DATA為輸入端,;當(dāng)HD7279A輸出鍵盤代碼時,,DATA為輸出端。CLK為數(shù)據(jù)串行傳送的同步時鐘輸入端,,時鐘的上升沿表示數(shù)據(jù)有效,。KEY為按鍵信號輸出端,該端在無鍵按下時為高電平,;而在有鍵按下時變?yōu)榈碗娖?,并一直保持到按鍵釋放為止。
3 控制指令和接口時序
HD7279A的控制指令分為純指令和帶有數(shù)據(jù)的指令兩大類,,以下分別給予介紹,。
3.1 純指令
HD7279A控制指令中的純指令有復(fù)位(清除)指令A4H、左移指令A1H和右移指令A0H,。其中,,復(fù)位(清除)指令A4H用于清除所有的顯示,同時清除所有設(shè)置的字符消隱和閃爍等屬性,。執(zhí)行該指令后,,芯片所處的狀態(tài)與系統(tǒng)上電后所處的狀態(tài)一樣,。左移指令A1H可使所有的顯示自右向左(從第1位向第8位)移動一位(包括處于消隱狀態(tài)的顯示位),但對各位所設(shè)置的消隱及閃爍屬性不起作用,。右移指令A0H與左移指令類似,,但所做移動為自左向右(從第8位向第1位)移動,移動后,,最左邊一位為空,。
3.2 帶有數(shù)據(jù)的指令
帶有數(shù)據(jù)的指令包括以下5種:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 0 | 0 | 0 | a2 | a1 | a0 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DP | X | X | X | d3 | d2 | d1 | d0 |
(1)下載數(shù)據(jù)且按方式0譯碼
這種指令的格式為:
該命令由二字節(jié)組成,前半部分為指令,,其中a2~a0為位地址,,d0~d3為數(shù)據(jù),收到此指令時,,HD7279A將按照以下規(guī)則(譯碼方式0)進(jìn)行譯碼,。即:
0000:顯示0 ; 1001:顯示9
1010:顯示 -,; 1111:顯示空白
(2)下載數(shù)據(jù)且按方式1譯碼
此指令與上一條指令基本相同,,所不同的只是譯碼方式。該指令的譯碼方式為:d0~d3的值對應(yīng)于0~9和A~F,。格式如下:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 1 | 0 | 0 | 1 | a2 | a1 | a0 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DP | X | X | X | d3 | d2 | d1 | d0 |
(3)下載數(shù)據(jù)但不譯碼
該指令的格式如下:
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ù),分別對應(yīng)7段LED數(shù)碼管的各段,。當(dāng)相應(yīng)的數(shù)據(jù)位為1時,,該段點亮,否則,,該段不亮,。實際上,此指令是比較靈活的,,設(shè)計時可以通過造字形表來顯示用戶所需的字符,。
(4)閃爍控制88H
此命令用于控制各個數(shù)碼管的閃爍屬性,d1~d8分別對應(yīng)數(shù)碼管1~8,。在相應(yīng)的各位中0表示閃爍,,1表示不閃爍。開機(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)讀鍵盤數(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)前的按鍵代碼,。與其它指令不同的是,此命令的前一個字節(jié)00010101B為微控制器傳送到HD7279A的指令,,而后一個字節(jié)d0~d7才是HD7279A返回的按鍵代碼,,該代碼的具體范圍是0~3FH(當(dāng)無鍵按下時,,為0xFF)。
當(dāng)HD7279A檢測到有效按鍵時,,KEY引腳從高電平變?yōu)榈碗娖?,并一直保持到按鍵結(jié)束。在此期間,,如果HD7279A接收到“讀鍵盤數(shù)據(jù)指令”,,則輸出當(dāng)前按鍵的鍵盤代碼;而如果在接收到“讀鍵盤指令”時沒有有效按鍵被按下時,,HD7279A則輸出FFH(11111111B),。
3.3 串行接口時序
綜上所述在HD7279A的指令結(jié)構(gòu)類型中不帶數(shù)據(jù)的純指令的指令寬度為8BIT,,即微處理器需發(fā)送8個CLK脈沖,。而帶有數(shù)據(jù)的指令寬度為16BIT,即微處理器需發(fā)送16個CLK脈沖,。但其中的讀取鍵盤數(shù)據(jù)指令寬度也是16BIT的前8個BIT為微處理器發(fā)送到HD7279A的指令,,后8個BIT為HD7279A返回的鍵盤代碼。執(zhí)行此指令時,,HD7279A的DATA端在第9個CLK脈沖的上升沿變?yōu)檩敵鰻顟B(tài),,并于第16個脈沖的下降沿恢復(fù)為輸入狀態(tài),以等待接收下一個指令,。圖1是HD7229A的3種指令接口時序圖,。
圖2
4 HD7279A的應(yīng)用
4.1 硬件電路
HD7279A的典型應(yīng)用電路如圖2所示,使用時HD7279A應(yīng)連接共陰式數(shù)碼管,,無需用到的鍵盤和數(shù)碼管可以不連接,。如果不用鍵盤,則典型電路圖中連接到鍵盤的8只10kΩ電阻和8只100kΩ下拉電阻均可以省去,。而如果使用鍵盤,,則電路中的8只100kΩ下拉電阻則不能省略。除非不接入數(shù)碼管,,否則連接至DP及SA~SG的8只200Ω電阻也不能省去,。
4.2 軟件編程
通過下面的一些子程序可對鍵盤進(jìn)行監(jiān)視,并在有鍵按下時讀取按鍵代碼,,以便調(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 ,;延時8μs
CLR P1.1
MOV R6,, #02H
LP3:DJNZ R6,LP3 ;延時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 ,;延時8μs
MOV C,, P1.2
RLC A
CLR P1.1
MOV R6,#01H
LP3: DJNZ R6,LP3 ,;延時
DJNZ R7,LP1
RET
(3)顯示程序(采用下載數(shù)據(jù)但不譯碼方式,,其字形表由用戶根據(jù)需要和硬件連線來確定,指令碼為90~97):
DTR: MOV R5,,#05H
MOV R0,,#40H
MOV R1,#95H
LP1: CLR P1.0 (CS=0)
MOV R6,#0CH
LP2: DJNZ R6,,LP2 ,;延時50μs
MOV A,R1
ACALL STFS ,;發(fā)指令
MOV R6,,#04H
LP3: DJNZ R6,LP3 ;延時25μs
MOV A,@R0
ADD A,#0DH
MOVC A,@A+PC
ACALL STFS ,;發(fā)顯示代碼
MOV R6,#02H
LP4: DJNZ R6,,LP4 ;延時8μs
SETB P1.0 ,;CS=1
INC R0
DEC R1
DJNZ R5,,LP1
RET
TAB DB 7EH,30H,,6DH,,79H,33H,,5BH,,5FH,70H,,7FH,,7BH,
DB 77H,,1FH,,4EH,,3DH,4FH,,47H,,00H,67H
(4) 讀鍵值子程序:所讀的鍵值保存在A,、B單元中,,其值與按鍵在鍵盤中的位置及硬件連線有關(guān)。
ST: ACALL KEY1
CJNE A,#0FFH,LP1
CLR 00H
RET
LP1: JB 00H,,LP2
SETB 00H
RET
LP2: MOV B, #FFH
RET
KEY1:CLR P1.0 ,;CS=0
MOV R6,#0CH
LP1: DJNZ R6,LP1 ,;延時50μs
MOV A#15H
ACALL STFS ,;發(fā)指令
MOV R6,#06H
LP2 DJNZ R6,LP2 ;延時25μs
ACALL STJS ,;讀鍵值
MOV B, A
SETB P1.0 ,;CS=1
RET