可编程数码管/键盘串行接口芯片HD7279A的原理与应用
检测到有效按键时,KEY引脚从高电平变为低电平,并一直保持到按键结束。在此期间,如果HD7279A接收到“读键盘数据指令”,则输出当前按键的键盘代码;而如果在接收到“读键盘指令”时没有有效按键被按下时,HD7279A则输出FFH(11111111B)。
3.3串行接口时序
综上所述?在HD7279A的指令结构类型中?不带数据的纯指令的指令宽度为8BIT,即微处理器需发送8个CLK脉冲。而带有数据的指令宽度为16BIT,即微处理器需发送16个CLK脉冲。但其中的读取键盘数据指令?宽度也是16BIT?的前8个BIT为微处理器发送到HD7279A的指令,后8个BIT为HD7279A返回的键盘代码。执行此指令时,HD7279A的DATA端在第9个CLK脉冲的上升沿变为输出状态,并于第16个脉冲的下降沿恢复为输入状态,以等待接收下一个指令。图1是HD7229A的3种指令接口时序图。
图2
4HD7279A的应用
4.1硬件电路
HD7279A的典型应用电路如图2所示,使用时HD7279A应连接共阴式数码管,无需用到的键盘和数码管可以不连接。如果不用键盘,则典型电路图中连接到键盘的8只10kΩ电阻和8只100kΩ下拉电阻均可以省去。而如果使用键盘,则电路中的8只100kΩ下拉电阻则不能省略。除非不接入数码管,否则连接至DP及SA~SG的8只200Ω电阻也不能省去。
4.2软件编程
通过下面的一些子程序可对键盘进行监视,并在有键按下时读取按键代码,以便调用显示程序将该键值显示在LED显示器上。在图2所示的接口电路中,HD7279A的外接振荡元件可使用典型值。AT89C51的晶振频率为6MHz。
如果将P1.0接到CS,P1.1接到CLK,P1.2接到DATA,而将P1.3接KEY,那么,其具体的软件程序代码如下:
(1)发送一字节子程序:(发送数存于A中)
STFS:MOVR7,#08H
LP1:RLCA
MOVP1.2,C
SETBP1.1
MOVR6?#02H
LP2:DJNZR6,LP2;延时8μs
CLRP1.1
MOVR6,#02H
LP3:DJNZR6,LP3;延时8μs
DJNZR7,LP1
RET
(2)接收一字节子程序:(接收字符存于A中)
STJS:MOVR7,#08H
LP1:SETBP1.1
SETBP1.2
MOVR6,#02H
LP2:DJNZR6,LP2;延时8μs
MOVC,P1.2
RLCA
CLRP1.1
MOVR6,#01H
LP3:DJNZR6,LP3;延时
DJNZR7,LP1
RET
(3)显示程序(采用下载数据但不译码方式,其字形表由用户根据需要和硬件连线来确定,指令码为90~97):
DTR:MOVR5,#05H
MOVR0,#40H
MOVR1,#95H
LP1:CLRP1.0(CS=0)
MOVR6,#0CH
LP2:DJNZR6,LP2;延时50μs
MOVA,R1
ACALLSTFS;发指令
MOVR6,#04H
LP3:DJNZR6,LP3;延时25μs
MOVA,@R0
ADDA,#0DH
MOVCA,@A+PC
ACALLSTFS;发显示代码
MOVR6,#02H
LP4:DJNZR6,LP4;延时8μs
SETBP1.0;CS=1
INCR0
DECR1
DJNZR5,LP1
RET
TABDB7EH,30H,6DH,79H,33H,5BH,5FH,70H,7FH,7BH,
DB77H,1FH,4EH,3DH,4FH,47H,00H,67H
(4)读键值子程序:所读的键值保存在A、B单元中,其值与按键在键盘中的位置及硬件连线有关。
ST:ACALLKEY1
CJNEA,#0FFH,LP1
CLR00H
RET
LP1:JB00H,LP2
SETB00H
RET
LP2:MOVB,#FFH
RET
KEY1:CLRP1.0;CS=0
MOVR6,#0CH
LP1:DJNZR6,LP1;延时50μs
MOVA?#15H
ACALLSTFS;发指令
MOVR6,#06 《可编程数码管/键盘串行接口芯片HD7279A的原理与应用(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/170323.html
3.3串行接口时序
综上所述?在HD7279A的指令结构类型中?不带数据的纯指令的指令宽度为8BIT,即微处理器需发送8个CLK脉冲。而带有数据的指令宽度为16BIT,即微处理器需发送16个CLK脉冲。但其中的读取键盘数据指令?宽度也是16BIT?的前8个BIT为微处理器发送到HD7279A的指令,后8个BIT为HD7279A返回的键盘代码。执行此指令时,HD7279A的DATA端在第9个CLK脉冲的上升沿变为输出状态,并于第16个脉冲的下降沿恢复为输入状态,以等待接收下一个指令。图1是HD7229A的3种指令接口时序图。
图2
4HD7279A的应用
4.1硬件电路
HD7279A的典型应用电路如图2所示,使用时HD7279A应连接共阴式数码管,无需用到的键盘和数码管可以不连接。如果不用键盘,则典型电路图中连接到键盘的8只10kΩ电阻和8只100kΩ下拉电阻均可以省去。而如果使用键盘,则电路中的8只100kΩ下拉电阻则不能省略。除非不接入数码管,否则连接至DP及SA~SG的8只200Ω电阻也不能省去。
4.2软件编程
通过下面的一些子程序可对键盘进行监视,并在有键按下时读取按键代码,以便调用显示程序将该键值显示在LED显示器上。在图2所示的接口电路中,HD7279A的外接振荡元件可使用典型值。AT89C51的晶振频率为6MHz。
如果将P1.0接到CS,P1.1接到CLK,P1.2接到DATA,而将P1.3接KEY,那么,其具体的软件程序代码如下:
(1)发送一字节子程序:(发送数存于A中)
STFS:MOVR7,#08H
LP1:RLCA
MOVP1.2,C
SETBP1.1
MOVR6?#02H
LP2:DJNZR6,LP2;延时8μs
CLRP1.1
MOVR6,#02H
LP3:DJNZR6,LP3;延时8μs
DJNZR7,LP1
RET
(2)接收一字节子程序:(接收字符存于A中)
STJS:MOVR7,#08H
LP1:SETBP1.1
SETBP1.2
MOVR6,#02H
LP2:DJNZR6,LP2;延时8μs
MOVC,P1.2
RLCA
CLRP1.1
MOVR6,#01H
LP3:DJNZR6,LP3;延时
DJNZR7,LP1
RET
(3)显示程序(采用下载数据但不译码方式,其字形表由用户根据需要和硬件连线来确定,指令码为90~97):
DTR:MOVR5,#05H
MOVR0,#40H
MOVR1,#95H
LP1:CLRP1.0(CS=0)
MOVR6,#0CH
LP2:DJNZR6,LP2;延时50μs
MOVA,R1
ACALLSTFS;发指令
MOVR6,#04H
LP3:DJNZR6,LP3;延时25μs
MOVA,@R0
ADDA,#0DH
MOVCA,@A+PC
ACALLSTFS;发显示代码
MOVR6,#02H
LP4:DJNZR6,LP4;延时8μs
SETBP1.0;CS=1
INCR0
DECR1
DJNZR5,LP1
RET
TABDB7EH,30H,6DH,79H,33H,5BH,5FH,70H,7FH,7BH,
DB77H,1FH,4EH,3DH,4FH,47H,00H,67H
(4)读键值子程序:所读的键值保存在A、B单元中,其值与按键在键盘中的位置及硬件连线有关。
ST:ACALLKEY1
CJNEA,#0FFH,LP1
CLR00H
RET
LP1:JB00H,LP2
SETB00H
RET
LP2:MOVB,#FFH
RET
KEY1:CLRP1.0;CS=0
MOVR6,#0CH
LP1:DJNZR6,LP1;延时50μs
MOVA?#15H
ACALLSTFS;发指令
MOVR6,#06 《可编程数码管/键盘串行接口芯片HD7279A的原理与应用(第2页)》