HD7279串行接口8位LED数码管及64键及程序.docx

上传人:b****6 文档编号:7084884 上传时间:2023-01-17 格式:DOCX 页数:14 大小:64.89KB
下载 相关 举报
HD7279串行接口8位LED数码管及64键及程序.docx_第1页
第1页 / 共14页
HD7279串行接口8位LED数码管及64键及程序.docx_第2页
第2页 / 共14页
HD7279串行接口8位LED数码管及64键及程序.docx_第3页
第3页 / 共14页
HD7279串行接口8位LED数码管及64键及程序.docx_第4页
第4页 / 共14页
HD7279串行接口8位LED数码管及64键及程序.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

HD7279串行接口8位LED数码管及64键及程序.docx

《HD7279串行接口8位LED数码管及64键及程序.docx》由会员分享,可在线阅读,更多相关《HD7279串行接口8位LED数码管及64键及程序.docx(14页珍藏版)》请在冰豆网上搜索。

HD7279串行接口8位LED数码管及64键及程序.docx

HD7279串行接口8位LED数码管及64键及程序

HD7279串行接口8位LED数码管及64键键盘智能控制芯片

图5.13

HD7279(A)是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵。

HD7279内部含有译码器,可直接接受16进制码,HD7279A还同时具有2种译码方式,HD7279(A)还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。

特点:

·串行接口

·各位独立控制译码/不译码及消隐和闪烁属性

·(循环)左移/(循环)右移指令

·具有段寻址指令,方便控制独立LED

·64键键盘控制器,内含去抖动电路

控制指令

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、左移指令

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

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

与循环左移指令类似,但移动方向相反。

·带有数据的指令

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

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

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

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

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为位地址(参见‘下载数据且译码’指令),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

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,该指令将不被接受,HD7279保持原来的消隐状态不变。

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,……,依此类推直至第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

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口应有一从输出态到输入态的转换过程,详情请参阅本文‘串行接口’一节的内容。

当HD7279检测到有效的按键时,KEY引脚从高电平变为低电平,并一直保持到按键结束。

在此期间,如果HD7279接收到‘读键盘数据指令’,则输出当前按键的键盘代码;如果在收到‘读键盘指令’时没有有效按键,HD7279将输出FFH(11111111B)。

串行接口

HD7279采用串行方式与微处理器通讯,串行数据从DATA引脚送入芯片,并由CLK端同步。

当片选信号变为低电平后,DATA引脚上的数据在CLK引脚的上升沿被写入HD7279的缓冲寄存器。

HD7279的指令结构有三种类型:

1、不带数据的纯指令,指令的宽度为8个BIT,即微处理器需发送8个CLK脉冲。

2、带有数据的指令,宽度为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、EM78P156接口程序

硬件连接如图,EM78P156所用时钟频率4MHz,选4个时钟周期为一个指令周期,

;转移指令用2个指令周期。

程序使用ASM456编译程序编译通过。

程序中延时时间

;以HD7279A外接R=1.5K,C=15pF为准,如使用不同的CPU时钟频率或R/C参数,

;请注意调整延时时间。

图5.14EM78P156与HD7279A的硬件连接

;**********************************

;寄存器定义

;**********************************

STATUS==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连接于EM78P156的P52

KEY==3;KEY连接于EM78P156的P53

ORG0x00

JMPSTART

ORG0X10

;*******************************************

;延时子程序

;*******************************************

LONG_DELAY:

MOVA,@16;设定延时时间为约50uS

MOVTIMER,A

DELAY_LOOP:

DJZTIMER

JMPDELAY_LOOP

RET

SHORT_DELAY:

MOVA,@3;设定延时时间为约9uS

MOVTIMER,A

SHORT_LP:

DJZTIMER

JMPSHORT_LP

RET

;*******************************************

;发送1个字节到HD7279,高位在前

;*******************************************

SEND:

MOVDATA_OUT,A;待发送数据存入DATA_OUT

MOVA,@8

MOVBIT_COUNT,A;设定位记数器=8

BCP5,CS;设CS为低电平

CALLLONG_DELAY;长延时

SEND_LOOP:

BCSTATUS,C

RLCDATA_OUT;输出1位

BCP5,DAT

JBCSTATUS,C

BSP5,DAT

BSP5,CLK;设CLK为高电平

CALLSHORT_DELAY;短延时

BCP5,CLK;设CLK为低电平

CALLSHORT_DELAY

DJZBIT_COUNT;检查是否8位均发送完毕

JMPSEND_LOOP;未发送完,发送下一位

BCP5,DAT

RET;发送完毕,返回

;*******************************************

;从HD7279接收一个字节,高位在前

;*******************************************

RECEIVE:

MOVA,@8

MOVBIT_COUNT,A;设定位记数器=8

MOVA,@0B11111100;设P5.2(DATA)口为输入状态

IOWP5

CALLLONG_DELAY;长延时

RECEIVE_LOOP:

BSP5,CLK;置CLK为高电平

CALLSHORT_DELAY;短延时

BSSTATUS,C

JBSP5,DAT

BCSTATUS,C

RLCDATA_IN;读取一位数据

BCP5,CLK;置CLK为低电平

CALLSHORT_DELAY

DJZBIT_COUNT;是否已接收8位数据

JMPRECEIVE_LOOP

MOVA,@0B11111000;重新设P52(DATA)口为输出态

IOWP5

RET

;*******************************************

;初始化

;*******************************************

START:

MOVA,@0B11111000;I/O口初始化

IOWP5

MOVA,@0B11111001

MOVP5,A

MOVA,@0X19;延时约25MS

MOVTIMER,A

START_DELAY:

MOVA,@0XFF

MOVTIMER1,A

START_DELAY1:

DJZTIMER1

JMPSTART_DELAY1

DJZTIMER

JMPSTART_DELAY

MOVA,@0B10100100;发复位(清除)指令

CALLSEND

BSP5,CS;恢复CS为高电平

;*******************************************

;主程序

;*******************************************

MAIN:

JBCP5,KEY;检测是否有键按下

JMPMAIN

MOVA,@0B00010101;有键按下,发送读键盘指令

CALLSEND;发送读键盘指令

CALLRECEIVE;从HD7279A读键盘代码

BSP5,CS;设CS为高电平

;*******************************************

;16进制——BCD码转换

;*******************************************

CLRTEN

GET_DECMOVA,@10

SUBA,DATA_IN

JBSSTATUS,C

JMPOVER

MOVDATA_IN,A

INCTEN

JMPGET_DEC

;*******************************************

;发送按键的BCD码到HD7279A

;*******************************************

;发2次左移指令,使当前显示内容左移,留出空

;位供显示新数据

OVERMOVA,@0B10100001;左移指令

CALLSEND;发送指令到HD7279A

MOVA,@0B10100001;左移指令

CALLSEND;发送指令到HD7279A

MOVA,@0B10000001;下载数据且译码指令(第2位)

CALLSEND;发送指令到HD7279A

MOVA,TEN

CALLSEND;发送十位数字到HD7279A

MOVA,@0B10000000;下载数据且译码指令(第1位)

CALLSEND;发送指令到HD7279A

MOVA,DATA_IN

CALLSEND;发送个位数字到HD7279A

BSP5,CS

WAITJBSP5,KEY;等待按键放开

JMPWAIT

JMPMAIN

;EOP

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1