1、HD7279串行接口8位LED数码管及64键键盘智能控制芯片 图5.13 HD7279(A)是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵。 HD7279内部含有译码器,可直接接受16进制码,HD7279A还同时具有2种译码方式,HD7279(A)还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。 特点: ·串行接口 ·各位独立控制译码/不译码及消隐和闪烁属性 ·(循环)左移/(循环)右移指令 ·具有段寻址指令,方便控制独立LED ·64键键盘控
2、制器,内含去抖动电路 控制指令 HD7279的控制指令分为二大类——纯指令和带有数据的指令。 ·纯指令 1、复位(清除)指令 D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 0 1 0 0 当HD7279收到该指令后,将所有的显示清除,所有设置的字符消隐、闪烁等属性也被一起清除。执行该指令后,芯片所处的状态与系统上电后所处的状态一样。 2、测试指令 D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 1 1 1 1 1 该指令使所有的LED全部点亮,并处于闪烁状态,主要用于测试。 3、左移指
3、令 D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 0 0 0 1 使所有的显示自右向左(从第1位向第8位)移动一位(包括处于消隐状态的显示位),但对各位所设置的消隐及闪烁属性不变。移动后,最右边一位为空(无显示)。例如,原显示为 4 2 5 2 L P 3 9 其中第2位‘3’和第4位‘L’为闪烁显示,执行了左移指令后,显示变为 2 5 2 L P 3 9 第二位‘9’和第四位‘P’为闪烁显示。 4、右移指令 D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 0
4、 0 0 0 与左移指令类似,但所做移动为自左向右(从第8位向第1位)移动,移动后,最左边一位为空。 5、循环左移指令 D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 0 0 1 1 与左移指令类似,不同之处在于移动后原最左边一位(第8位)的内容显示于最右位(第1位)。在上例中,执行完循环左移指令后的显示为 2 5 2 L P 3 9 4 第二位‘9’和第四位‘P’为闪烁显示。 6、循环右移指令 D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 0 0 1 0 与循
5、环左移指令类似,但移动方向相反。 ·带有数据的指令 1、下载数据且按方式0译码 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 0 0 a2 a1 a0 DP X X X d3 d2 d1 d0 X=无影响 命令由二个字节组成,前半部分为指令,其中a2 ,a1,a0为位地址,具体分配如下: a2 a1 a0 显示位 0 0 0 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0
6、1 6 1 1 0 7 1 1 1 8 d0—d3为数据,收到此指令时,HD7279(A)按以下规则(译码方式0)进行译码,如下表: 十六进制 d3 d2 d1 d0 7段显示 00H 0 0 0 0 0 01H 0 0 0 1 1 02H 0 0 1 0 2 03H 0 0 1 1 3 04H 0 1 0 0 4 05H 0 1 0 1 5 06H 0 1 1 0 6 07H 0 1 1 1 7 08H 1 0 0 0 8 09H 1 0 0
7、 1 9 0AH 1 0 1 0 - 0BH 1 0 1 1 E 0CH 1 1 0 0 H 0DH 1 1 0 1 L 0EH 1 1 1 0 P 0FH 1 1 1 1 空(无显示) 小数点的显示由DP位控制,DP=1时,小数点显示,DP=0时,小数点不显示。 2、下载数据且按方式1译码(仅对HD7279A有效) D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 1 1 0 0 1 a2 a1 a0 DP
8、 X X X d3 d2 d1 d0 X=无影响 此指令与上一条指令基本相同,所不同的是译码方式,且只有HD7279A才具有此指令。该指令的译码按下表进行: 十六进制 d3 d2 d1 d0 7段显示 00H 0 0 0 0 0 01H 0 0 0 1 1 02H 0 0 1 0 2 03H 0 0 1 1 3 04H 0 1 0 0 4 05H 0 1 0 1 5 06H 0 1 1 0 6 07H 0 1 1 1 7 08H 1 0 0 0
9、 8 09H 1 0 0 1 9 0AH 1 0 1 0 A 0BH 1 0 1 1 b 0CH 1 1 0 0 C 0DH 1 1 0 1 d 0EH 1 1 1 0 E 0FH 1 1 1 1 F 3、下载数据但不译码 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 1 0 a2 a1 a0 DP A B C D E F G 其中,a2 ,a1,a0为位地址(参见
10、‘下载数据且译码’指令),A-G和DP为显示数据,分别对应7段LED数码管的各段。 4、闪烁控制 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 0 1 0 0 0 d8 d7 d6 d5 d4 d3 d2 d1 此命令控制各个数码管的闪烁属性。d1- d8分别对应数码管1-8,0=闪烁,1=不闪烁。开机后,缺省的状态为各位均不闪烁。 5、消隐控制 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4
11、D3 D2 D1 D0 1 0 0 1 1 0 0 0 d8 d7 d6 d5 d4 d3 d2 d1 此命令控制各个数码管的消隐属性。d1- d8分别对应数码管1-8,1=显示,0=消隐。当某一位被赋予了消隐属性后,HD7279在扫描时将跳过该位,因此在这种情况下无论对该位写入何值,均不会被显示,但写入的值将被保留,在将该位重新设为显示状态后,最后一次写入的数据将被显示出来。当无需用到全部8个数码管显示的时候,将不用的位设为消隐属性,可以提高显示的亮度。 注意:至少应有一位保持显示状态,如果消隐控制指令中d1- d8全部为0,该指令将不被接受,H
12、D7279保持原来的消隐状态不变。 6、段点亮指令 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 1 1 1 0 0 0 0 0 X X d5 d4 d3 d2 d1 d0 此为段寻址指令,作用为点亮数码管中某一指定的段,或LED矩阵中某一指定的LED。 指令中,X=无影响;d0- d5为段地址,范围从00H—3FH,具体分配为: 第1个数码管的G段地址为00H,F段为01H,……A段为06H,小数点DP为07H,第2个数码管的G段为08H,F段为09H,……,
13、依此类推直至第8个数码管的小数点DP地址为3FH。 7、段关闭指令 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 1 1 0 0 0 0 0 0 X X d5 d4 d3 d2 d1 d0 段寻址命令,作用为关闭(熄灭)数码管中的某一段,指令结构与‘段点亮指令’相同,请参阅上文。 8、读键盘数据指令 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 1 0
14、 1 0 1 d7 d6 d5 d4 d3 d2 d1 d0 该指令从HD7279读出当前的按键代码。与其它指令不同,此命令的前一个字节00010101B为微控制器传送到HD7279的指令,而后一个字节d0- d7则为HD7279返回的按键代码,其范围是0-3FH(无键按下时为0xFF),各键键盘代码的定义,请参阅图2。 此指令的前半段,HD7279的DATA引脚处于高阻输入状态,以接受来自微处理器的指令;在指令的后半段,DATA引脚从输入状态转为输出状态,输出键盘代码的值。故微处理器连接到DATA引脚的I/O口应有一从输出态到输入态的转换过程,详情请参阅本文‘串行
15、接口’一节的内容。 当HD7279检测到有效的按键时,KEY引脚从高电平变为低电平,并一直保持到按键结束。在此期间,如果HD7279接收到‘读键盘数据指令’,则输出当前按键的键盘代码;如果在收到‘读键盘指令’时没有有效按键,HD7279将输出FFH (11111111B)。 串行接口 HD7279采用串行方式与微处理器通讯, 串行数据从DATA引脚送入芯片,并由CLK端同步。当片选信号变为低电平后,DATA引脚上的数据在CLK引脚的上升沿被写入HD7279的缓冲寄存器。 HD7279的指令结构有三种类型:1、不带数据的纯指令,指令的宽度为8个BIT,即微处理器需发送8个CLK脉冲。2、
16、带有数据的指令,宽度为16个BIT,即微处理器需发送16个CLK脉冲。3、读取键盘数据指令,宽度为16个BIT,前8个为微处理器发送到HD7279的指令,后8个BIT为HD7279返回的键盘代码。执行此指令时,HD7279的DATA端在第9个CLK脉冲的上升沿变为输出状态,并与第16个脉冲的下降沿恢复为输入状态,等待接收下一个指令。 串行接口的时序如下图: 1、纯指令 2、带数据指令 8位指令(高位在前) 8位数据(高位在前) 3、读键盘指令 读键盘指令(8位,高位在前) HD7279输出的键盘代码(8位,高位在前) 2、EM7
17、8P156 接口程序 硬件连接如图,EM78P156所用时钟频率4MHz, 选4个时钟周期为一个指令周期, ;转移指令用2个指令周期。程序使用ASM456编译程序编译通过。程序中延时时间 ;以HD7279A外接R=1.5K, C=15pF为准,如使用不同的CPU时钟频率或R/C参数, ;请注意调整延时时间。 图 5.14 EM78P156与HD7279A 的硬件连接 ;********************************** ; 寄存器定义 ;********************************** STATUS
18、 0X03 P5 == 5 C == 0 BIT_COUNT == 0X10 DATA_OUT == 0X11 DATA_IN == 0X12 TEN == 0X13 TIMER == 0X14 TIMER1 == 0X15 ;********************************** ; I/O口定义 ;********************************** CS == 0 ;CS连接于EM78P156的P50 CLK == 1 ;CLK连接于EM78P156的P51 DAT == 2 ;DAT连接于EM78P
19、156的P52 KEY == 3 ;KEY连接于EM78P156的P53 ORG 0x00 JMP START ORG 0X10 ;******************************************* ; 延时子程序 ;******************************************* LONG_DELAY: MOV A,@16 ;设定延时时间为约50uS MOV TIMER,A DELAY_LOOP: DJZ TIMER JMP DELAY_LOOP RET SHORT_DELAY
20、 MOV A,@3 ;设定延时时间为约9uS MOV TIMER,A SHORT_LP: DJZ TIMER JMP SHORT_LP RET ;******************************************* ; 发送1个字节到HD7279,高位在前 ;******************************************* SEND: MOV DATA_OUT,A ;待发送数据存入DATA_OUT MOV A,@8 MOV BIT_COUNT,A ;设定位记数器=8 BC P5,CS ;设CS为低电平
21、 CALL LONG_DELAY ;长延时 SEND_LOOP: BC STATUS,C RLC DATA_OUT ;输出1位 BC P5,DAT JBC STATUS,C BS P5,DAT BS P5,CLK ;设CLK为高电平 CALL SHORT_DELAY ;短延时 BC P5,CLK ;设CLK为低电平 CALL SHORT_DELAY DJZ BIT_COUNT ;检查是否8位均发送完毕 JMP SEND_LOOP ;未发送完,发送下一位 BC P5,DAT RET ;发送完毕,返回 ;**
22、 ; 从HD7279接收一个字节,高位在前 ;******************************************* RECEIVE: MOV A,@8 MOV BIT_COUNT,A ;设定位记数器=8 MOV A,@0B11111100 ;设P5.2(DATA)口为输入状态 IOW P5 CALL LONG_DELAY ;长延时 RECEIVE_LOOP: BS P5,CLK ;置CLK为高电平 CALL SHORT_DELAY ;短延时 BS S
23、TATUS,C JBS P5,DAT BC STATUS,C RLC DATA_IN ;读取一位数据 BC P5,CLK ;置CLK为低电平 CALL SHORT_DELAY DJZ BIT_COUNT ;是否已接收8位数据 JMP RECEIVE_LOOP MOV A,@0B11111000 ;重新设P52(DATA)口为输出态 IOW P5 RET ;******************************************* ; 初始化 ;*********************************
24、 START: MOV A,@0B11111000 ;I/O口初始化 IOW P5 MOV A,@0B11111001 MOV P5,A MOV A,@0X19 ;延时约25MS MOV TIMER,A START_DELAY: MOV A,@0XFF MOV TIMER1,A START_DELAY1: DJZ TIMER1 JMP START_DELAY1 DJZ TIMER JMP START_DELAY MOV A,@0B10100100 ;发复位(清除)指令 CALL SEND BS
25、 P5,CS ;恢复CS为高电平 ;******************************************* ; 主程序 ;******************************************* MAIN: JBC P5,KEY ;检测是否有键按下 JMP MAIN MOV A,@0B00010101 ;有键按下,发送读键盘指令 CALL SEND ;发送读键盘指令 CALL RECEIVE ;从HD7279A读键盘代码 BS P5,CS ;设CS为高电平 ;***************************
26、 ; 16进制——BCD码转换 ;******************************************* CLR TEN GET_DEC MOV A,@10 SUB A,DATA_IN JBS STATUS,C JMP OVER MOV DATA_IN,A INC TEN JMP GET_DEC ;******************************************* ;发送按键的BCD码到HD7279A ;**********************************
27、 ;发2次左移指令,使当前显示内容左移,留出空 ;位供显示新数据 OVER MOV A,@0B10100001 ;左移指令 CALL SEND ;发送指令到HD7279A MOV A,@0B10100001 ;左移指令 CALL SEND ;发送指令到HD7279A MOV A,@0B10000001 ;下载数据且译码指令(第2位) CALL SEND ;发送指令到HD7279A MOV A,TEN CALL SEND ;发送十位数字到HD7279A MOV A,@0B10000000 ;下载数据且译码指令(第1位) CALL SEND ;发送指令到HD7279A MOV A,DATA_IN CALL SEND ;发送个位数字到HD7279A BS P5,CS WAIT JBS P5,KEY ;等待按键放开 JMP WAIT JMP MAIN ;EOP 10 第 页
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818