ETC ZLG7289A

广州周立功单片机发展有限公司
Tel
020
38730916 38730917 38730976 38730977
Fax:38730925
zlg7289A
串行接口 8 位 LED 数码管及 64 键键盘智能控制芯片
zlg7289A 是一片具有串行接口的 可同时驱动 8 位共阴式数码管 或 64 只独立 LED
的智能显示驱动芯片 该芯片同时还可连接多达 64 键的键盘矩阵 单片即可完成 LED 显
示﹑键盘接口的全部功能
zlg7289A 内部含有译码器 可直接接受 BCD 码或 16 进制码 并同时具有 2 种译码方
式 参看后文 此外 还具有多种控制指令 如消隐﹑闪烁﹑左移﹑右移﹑段寻址等
zlg7289A 具有片选信号 可方便地实现多于 8 位的显示或多于 64 键的键盘接口
典型应用
仪器仪表 工业控制器 条形显示器 控制面板
特点
串行接口 无需外围元件可直接驱动 LED
各位独立控制译码/不译码及消隐和闪烁属性
循环 左移/ 循环 右移指令
具有段寻址指令 方便控制独立 LED
64 键键盘控制器 内含去抖动电路
电特性
符号
VCC
ICC
ICC
VIH
VIL
TKEY
IKO
IKI
T1
T2
T3
T4
T5
T6
T7
T8
VCC=5.0V
Fosc=16MHz,TA=25
参数
电源电压
工作电流
工作电流
逻辑输入高电平
逻辑输入低电平
按键响应时间
KEY 引脚输出电流
KEY 引脚吸入电流
从 CS 下降沿至 CLK 脉冲时间
传送指令时 CLK 脉冲宽度
字节传送中 CLK 脉冲时间间隔
指令与数据时间间隔
读键盘指令中指令与输出数据
时间间隔
输出键盘数据建立时间
读键盘数据时 CLK 脉冲宽度
读键盘数据完成后 DATA 转为
输入状态时间
:
测试条件
最小
4.5
不接 LED
LED 全亮 ISEG=10mA
含去抖动时间
-1-
典型
5.0
3
60
2.0
0
10
18
25
5
5
15
15
50
8
8
25
25
5
5
8
8
最大
5.5
5
100
5.5
0.8
40
7
10
250
250
250
250
250
单位
V
mA
mA
V
V
mS
mA
mA
uS
uS
uS
uS
uS
250
5
uS
uS
uS
广州周立功单片机发展有限公司
引脚说明
引脚 名称
1 2 VDD
3 5 NC
4
VSS
6
/CS
7
CLK
8
DATA
9
/KEY
10-16
17
18-25
SG-SA
DP
DIG0DIG7
OSC2
OSC1
/RESET
26
27
28
Tel
020
38730916 38730917 38730976 38730977
Fax:38730925
说明
正电源
悬空
接地
片选输入端 此引脚为低电平时 可向芯片发送指令及读取键盘数据
同步时钟输入端 向芯片发送数据及读取键盘数据时 此引脚电平上
升沿表示数据有效
串行数据输入/输出端 当芯片接收指令时 此引脚为输入端 当读取
键盘数据时 此引脚在 读 指令最后一个时钟的下降沿变为输出端
按键有效输出端 平时为高电平 当检测到有效按键时 此引脚变为
低电平
段 g—段 a 驱动输出
小数点驱动输出
数字 0 数字 7 驱动输出
振荡器输出端
振荡器输入端
复位端
控制指令
zlg7289A 的控制指令分为二大类
纯指令
纯指令和带有数据的指令
1.复位 清除 指令
D7 D6 D5 D4 D3 D2 D1 D0
1
0
1
0
0
1
0
0
当 zlg7289A 收到该指令后 将所有的显示清除 所有设置的字符消隐 闪烁等属性也
被一起清除 执行该指令后 芯片所处的状态与系统上电后所处的状态一样
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 位 移动一位 包括处于消隐状态的显示位
但对各位所设置的消隐及闪烁属性不变 移动后 最右边一位为空 无显示 例如 原显
示为
1
2
3
4
5
6
7
8
其中第 2 位 2 和第 4 位 4 为闪烁显示 执行了左移指令后 显示变为
2
3
4
5
6
7
8
第二位 3 和第四位
5 为闪烁显示
-2-
广州周立功单片机发展有限公司
4. 右移指令
D7 D6 D5
1
0
1
D4
0
Tel
D3
0
020
D2
0
38730916 38730917 38730976 38730977
D1
0
Fax:38730925
D0
0
与左移指令类似 但所做移动为自左向右 从第 8 位向第 1 位 移动 移动后
边一位为空
5. 循环左移指令
D7 D6 D5
1
0
1
D4
0
D3
0
D2
0
D1
1
D0
1
与左移指令类似 不同之处在于移动后原最左边一位 第 8 位
第 1 位 在上例中 执行完循环左移指令后的显示为
2
3
4
5
第二位 3 和第四位
6. 循环右移指令
D7 D6 D5
1
0
1
6
7
最左
8
1
D1
1
D0
0
的内容显示于最右位
5 为闪烁显示
D4
0
D3
0
D2
0
与循环左移指令类似 但移动方向相反
带有数据的指令
1.下载数据且按方式 0 译码
D7
D6
D5
D4
D3
D2
D1
1
0
0
0
0
a2
a1
D0
a0
D7
DP
X=无影响
命令由二个字节组成 前半部分为指令 其中 a2
显示位编号请参阅典型应用电路图
a2
0
0
0
0
1
1
1
1
a1
0
0
1
1
0
0
1
1
a0
0
1
0
1
0
1
0
1
显示位
1
2
3
4
5
6
7
8
-3-
D6
X
a1
D5
X
D4
X
D3
d3
D2
d2
D1
d1
a0 为位地址 具体分配如下
D0
d0
广州周立功单片机发展有限公司
d0
Tel
020
38730916 38730917 38730976 38730977
Fax:38730925
d3 为数据 收到此指令时 zlg7289A 按以下规则 译码方式 0 进行译码 如下表
d3
d2
d1
d0
d0 d3 (十六进制)
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 译码
D7
1
D6
1
D5
0
D4
0
D3
1
D2
a2
D1
a1
D0
a0
D7
DP
D6
X
D5
X
D4
X
D3
d3
D2
d2
D1
d1
D0
d0
X=无影响
此指令与上一条指令基本相同 所不同的是译码方式 该指令的译码按下表进行
d3
d2
d1
d0
d0 d3 (十六进制)
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
1
D6
0
D5
0
D4
1
D3
0
D2
a2
D1
a1
D0
a0
D7
DP
D6
A
D5
B
D4
C
D3
D
D2
E
D1
F
D0
G
其中 a2
a1
a0 为位地址 参见 下载数据且译码 指令
A-G 和 DP 为显示数
据 分别对应 7 段 LED 数码管的各段 数码管各段的定义见下图 当相应的数据位为 1
时 该段点亮 否则不亮
-4-
广州周立功单片机发展有限公司
4. 闪烁控制
D7 D6 D5
1
0
0
D4
0
D3
1
Tel
D2
0
020
D1
0
38730916 38730917 38730976 38730977
D0
0
D7
d8
此命令控制各个数码管的消隐属性 d1
开机后 缺省的状态为各位均不闪烁
5. 消隐控制
D7 D6 D5
1
0
0
D4
1
D3
1
D2
0
D1
0
D6
d7
D5
d6
D4
d5
d8 分别对应数码管 1
D0
0
D7
d8
D6
d7
D5
d6
D3
d4
Fax:38730925
D2
d3
D1
d2
D0
d1
8 0=闪烁 1=不闪烁
D4
d5
D3
d4
D2
d3
D1
d2
D0
d1
此命令控制各个数码管的消隐属性 d1 d8 分别对应数码管 1 8 1=显示 0=消隐
当某一位被赋予了消隐属性后 zlg7289A 在扫描时将跳过该位 因此在这种情况下无论对
该位写入何值 均不会被显示 但写入的值将被保留 在将该位重新设为显示状态后 最
后一次写入的数据将被显示出来 当无需用到全部 8 个数码管显示的时候 将不用的位设
为消隐属性 可以提高显示的亮度
注意 至少应有一位保持显示状态 如果消隐控制指令中 d1 d8 全部为 0 该指令将不被
接受 zlg7289A 保持原来的消隐状态不变
6. 段点亮指令
D7 D6 D5 D4
1
1
1
0
D3
0
D2
0
D1
0
D7
X
D0
0
D6
X
D5
d5
D4
d4
D3
d3
D2
d2
D1
d1
D0
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
1
1
0
段寻址命令
同 请参阅上文
D4
0
D3
0
D2
0
作用为关闭
8. 读键盘数据指令
D7 D6 D5 D4
0
0
0
1
D3
0
D2
1
D1
0
熄灭
D1
0
D0
0
D7
X
D6
X
数码管中的某一段
D0
1
D7
d7
D6
d6
D5
d5
D4
d4
D3
d3
指令结构与
D5
d5
D4
d4
D3
d3
D2
d2
D1
d1
D0
d0
段点亮指令
相
D2
d2
D1
d1
D0
d0
该指令从 zlg7289A 读出当前的按键代码 与其它指令不同 此命令的前一个字节
0001010B 为微控制器传送到 zlg7289A 的指令 而后一个字节 d0 d7 则为 zlg7289A 返回的
按键代码 其范围是 0
3FH 无键按下时为 0xFF 各键键盘代码的定义 请参阅图 2
此指令的前半段 zlg7289A 的 DATA 引脚处于高阻输入状态 以接受来自微处理器的
指令 在指令的后半段 DATA 引脚从输入状态转为输出状态 输出键盘代码的值 故微
处理器连接到 DATA 引脚的 I/O 口应有一从输出态到输入态的转换过程 详情请参阅本文
-5-
广州周立功单片机发展有限公司
Tel
020
38730916 38730917 38730976 38730977
Fax:38730925
串行接口 一节的内容
当 zlg7289A 检测到有效的按键时 KEY 引脚从高电平变为低电平 并一直保持到按
键结束 在此期间 如果 zlg7289A 接收到 读键盘数据指令 则输出当前按键的键盘代
码 如果在收到 读键盘指令 时没有有效按键 zlg7289A 将输出 FFH 11111111B
串行接口
zlg7289A 采用串行方式与微处理器通讯 串行数据从 DATA 引脚送入芯片 并由 CLK
端同步 当片选信号变为低电平后 DATA 引脚上的数据在 CLK 引脚的上升沿被写入
zlg7289A 的缓冲寄存器
zlg7289A 的指令结构有三种类型 1.不带数据的纯指令 指令的宽度为 8 个 BIT 即
微处理器需发送 8 个 CLK 脉冲 2.带有数据的指令 宽度为 16 个 BIT 即微处理器需发
送 16 个 CLK 脉冲 3.读取键盘数据指令 宽度为 16 个 BIT 前 8 个为微处理器发送到
zlg7289A 的指令 后 8 个 BIT 为 zlg7289A 返回的键盘代码 执行此指令时 zlg7289A 的
DATA 端在第 9 个 CLK 脉冲的上升沿变为输出状态 并与第 16 个脉冲的下降沿恢复为输
入状态 等待接收下一个指令
串行接口的时序如下图
-6-
广州周立功单片机发展有限公司
Tel
020
38730916 38730917 38730976 38730977
Fax:38730925
应用
zlg7289A 的典型应用图如下所示
zlg7289A 应连接共阴式数码管 应用中 无需用到的数码管和键盘可以不连接 省去
数码管和对数码管设置消隐属性均不会影响键盘的使用
如果不用键盘 则典型电路中连接到键盘的 8 只 10K 电阻和 8 只 100K 下拉电阻均可
以省去 如果使用了键盘 则电路中的 8 只 10K 电阻和 8 只 100K 下拉电阻均不得省略
除非不接数码管 否则串入 DP 及 SA-SG 连线的 8 只电阻均不能省去
实际应用中 8 只下拉电阻和 8 只键盘连接位选线 DIG0-DIG7 的 8 只电阻 位选电阻
应遵从一定的比例关系 下拉电阻应大于位选电阻的 5 倍而小于其 50 倍 典型值为 10 倍
下拉电阻的取值范围是 10K-100K 位选电阻的取值范围是 1K-10K 在不影响显示的前提
下 下拉电阻应尽可能的取较小的值 这样可以提高键盘部分的抗干扰能力
因为采用循环扫描的工作方式 如果采用普通的数码管 亮度有可能不够 采用高亮
或超高亮的型号 可以解决这个问题 数码管的尺寸 也不宜选的过大 一般字符高度不
超过 1 英寸 如使用大型的数码管 应使用适当的驱动电路
zlg7289A 需要一外接晶体振荡电路供系统工作 其典型值分别为 F=16MHz C=15P
如果芯片无法正常工作 请首先检查此振荡电路 在印刷电路板布线时 所有元件 尤其
是振荡电路的元件应尽量靠近 zlg7289A 并尽量使电路联线最短
zlg7289A 的 RESET 复位端在一般应用情况下 可以直接和 VCC 相连 在需要较高可
靠性的情况下 可以连接一外部复位电路 或直接由 MCU 控制 在上电或 RESET 端由低
电平变为高电平后 zlg7289A 大约要经过 18-25MS 的时间才会进入正常工作状态
上电后 所有的显示均为空 所有显示位的显示属性均为 显示 及 不闪烁 当有
键按下时 KEY 引脚输出低电平 此时如果接收到 读键盘 指令 zlg7289A 将输出所按
下键的代码 键盘代码的定义 请参阅图 2 图中代码以 10 进制表示 如果在没有按键的
情况下收到 读键盘 指令 zlg7289A 将输出 0FFH 255
程序中 尽可能地减少 CPU 对 zlg7289A 的访问次数 可以使得程序更有效率
因为芯片直接驱动 LED 数码管显示 电流较大 且为动态扫描方式 故如果该部分电
路电源连线较细较长 可能会引入较大的电源噪声干扰 在电源的正负极并入一 47U 到 220U
的电容可以提高电路抗干扰的能力
注意 如果有 2 个键同时按下 zlg7289A 将只能给出其中一个键的代码 因此 zlg7289A
-7-
广州周立功单片机发展有限公司
Tel
020
38730916 38730917 38730976 38730977
Fax:38730925
不适于应用在需要 2 个或 2 个以上键同时按下的场合
接口程序实例
下面给出 PHILIPS 公司的 P87LPC764 及 MICROCHIP 公司的 PIC16C54 与 zlg7289A 连
接的应用实例 2 个程序所完成的功能相同 均为等待键盘输入 然后将所读到的键盘码
转换成 10 进制后 送回 zlg7289A 显示 同时将前面的显示内容左移 并使当前按键值闪
烁
1. P87LPC764 接口程序
硬件连接如图 P87LPC764 所用时钟频率为 6MHz 程序编译通过并经过验证 程序
中延时时间以 zlg7289A 外接 12MHz 晶体振荡器为准
BIT_CNT
DELAY1
DECIMAL
REC_BUF
SEND_BUF
DATA
DATA
DATA
DATA
DATA
30H
31H
32H
20H
21H
CS
CLK
DIO
KEY
BIT
BIT
BIT
BIT
P0.1
P0.2
P0.3
P0.4
ORG
AJMP
ORG
00H
RESET
80H
RESET:
MOV
MOV
MOV
MOV
SETB
SETB
SETB
MOV
RST_DELAY1:
MOV
,#40H
P0M1,#00010000B
P0M2,#00000000B
WDCON,#00010101B
CS
KEY
DIO
DELAY,#25
; 设 定 P1.4 为输 入 口 , 其 他为 准双 向 口
;设定看门狗溢出时间为 1 秒
;延时 25MS
WDRST,#01EH
-8-
广州周立功单片机发展有限公司
MOV
DJNZ
DJNZ
MOV
CALL
SETB
MAIN_LP:
MOV
MOV
JB
MOV
CALL
CALL
SETB
MOV
MOV
DIV
MOV
MOV
CALL
SETB
MOV
CALL
SETB
MOV
CALL
MOV
CALL
SETB
MOV
CALL
MOV
CALL
SETB
MOV
CALL
MOV
CALL
SETB
MAIN_LP2:
JNB
AJMP
Tel
020
WDRST,#0E1H
DELAY1,RST_DELAY1
DELAY,RST_DELAY1
SEND_BUF,#10100100B
SEND
CS
WDRST,#O1EH
WDRST,#0E1H
KEY,MAIN_LP
SEND_BUF,#00010101B
SEND
RECEIVE
CS
B,#10
A,REC_BUF
AB
DECIMAL,A
SEND_BUF,#10100001B
SEND
CS
SEND_BUF,#10100001B
SEND
CS
SEND_BUF,#10000001B
SEND
SEND_BUF,DECIMAL
SEND
CS
SEND_BUF,#10000000B
SEND
SEND_BUF,B
SEND
CS
SEND_BUF,#10001000B
SEND
SEND_BUF,#11111100B
SEND
CS
KEY,MAIN_LP2
MAIN_LP
38730916 38730917 38730976 38730977
;初始化命令
;清除看门狗定时器
;有键按下,发送读键盘命令
;读键盘
;10 进制转换
;左移 2 次.
;下载数据且译码.
;发送 10 位数到 zlg7289A 显示
;下栽数据且译码.
;发送个位数据到 zlg7289A
;设定刚发送数据显示为闪烁
;等待键松开.
-9-
Fax:38730925
广州周立功单片机发展有限公司
Tel
020
38730916 38730917 38730976 38730977
;---------------------------------------------------;发送一字节到 zlg7289A,高位在前.
;---------------------------------------------------SEND:
MOV
BIT_CNT,#8
;设发送位数为 8 位.
CLR
CS
CALL LONG_DELAY
;延时 50 微秒.
SEND_LP:
MOV
A,SEND_BUF
RLC
A
MOV
SEND_BUF,A
MOV
DIO,C
NOP
NOP
SETB CLK
CALL SHORT_DELAY
;延时 10 微秒.
CLK
CLK
CALL SHORT_DELAY
;延时 10 微秒.
DJNZ BIT_CNT,SEND_LP
CLR
DIO
RET
;------------------------------------------------;由 zlg7289A 接收一字节数据,高位在前.
;------------------------------------------------RECEIVE:
MOV
BIT_CNT,#8
;定义接收 8 位.
SETB DAT
CALL LONG_DELAY
;延时 50 微秒.
RECEIVE_LP:
SETB CLK
CALL SHORT_DELAY
;延时 10 微秒.
MOV
C,DIO
;接收数据送 REC_BUF 低位.
MOV
A,REC_BUF
RLC
A
MOV
REC_BUF,A
CLR
CLK
CALL SHORT_DELAY
;延时 10 微秒.
DJNZ BIT_CNT,RECEIVE_LP
CLR
DIO
RET
LONG_DELAY:
MOV
DELAY,#25
DJNZ DELAY,$
RET
- 10 -
Fax:38730925
广州周立功单片机发展有限公司
Tel
020
38730916 38730917 38730976 38730977
Fax:38730925
SHORT_DELAY:
MOV
DELAY,#4
DJNZ DELAY,$
RET
2. PIC16C54 接口程序
硬件连接如图 PIC16C54 所用时钟频率 4MHz 程序使用 MICROCHIP 公司的 MPASM
编译程序编译通过 并经过验证 程序中延时时间以 zlg7289A 外接 12MHz 晶体振荡器为
准 如使用不同的 CPU 时钟频率或 zlg7289A 振荡参数 请注意调整延时时间
RA0
RA1
RA2
RA3
PIC16C54
/CS
CLK
DATA
KEY
zlg7289A
zlg7289A TEST
TITLE
LIST
P=16C54
INCLUDE P16C5X.INC
;---------------------------------------------------------------------;寄存器定义
;--------------------------------------------------------------------BIT-COUNT
EQU 0X07
DATA-OUT
EQU
0X08
DATA-IN
EQU
0X09
TEN
EQU
0X0A
TIMER
EQU
0X0B
TIMER1
EQU
0X0C
;---------------------------------------------------------------------;I/O 口定义
;--------------------------------------------------------------------CS
EQU
0
;CS 连接于 16C54 的 RA0
CLK
EQU
1
;CLK 连接于 16C65 的 RA1
DAT
EQU
2
;DAT 连接于 16C54 的 RA2
KEY
EQU
3
;KEY 连接于 16C54 的 RA3
ORG
1FFH
GOTO
RESET
ORG
00H
;-----------------------------------------------;延时子程序
;-----------------------------------------------LONG_DELAY
MOVLW
D‘16’
;设定延时时间为约 50uS
MOVWF
TIMER
- 11 -
广州周立功单片机发展有限公司
Tel
020
38730916 38730917 38730976 38730977
DELAY_LOOP
Fax:38730925
DECFSZ
TIMER
GOTO
DELAY-LOOP
RETLW
0
;设定延时时间为 8uS
SHORT-DELAY MOVLW
D 3
MOVWF
TIMER
SHORT-LP
DECFSZ
TIMER
GOTO
SHORT-LP
RETLW
0
-----------------------------------------------发送 1 个字节到 zlg7289A 高位在前
-----------------------------------------------待发送数据存入 DATA-OUT
SEND
MOVWF
DATA-OUT
MOVLW
D 8
MOVWF
BIT-COUNT
设定位计数器=8
设 CS 为低电平
BCF
PORTA CS
长延时
CALL
LONG-DELAY
SEND-LOOP
BCF
STATUS C
输出 1 位
RLF
DATA-OUT
BCF
PORTA DAT
BTFSC
STATUS C
BSF
PORTA DAT
设 CLK 为高电平
BSF
PORTA CLK
短延时
CALL
SHORT-DELAY
设 CLK 为低电平
BCF
PORTA CLK
CALL
SHORT-DELAY
检查是否 8 位均发送完毕
DECFSZ
BIT-COUNT
未发送完 发送下一位
GOTO
SEND-LOOP
BCF
PORTA DAT
发送完毕 返回
RETLW
0
----------------------------------------------从 zlg7289A 接收一个字节 高位在前
----------------------------------------------RECEIVE
MOVLW
D 8
MOVWF
BIT-COUNT
设定位计数器=8
设 RA2 DATA 口为输入状态
MOVLW
B 11111100
TRIS
PORTA
长延时
CALL
LONG-DELAY
置 CLK 为高电平
RECEIVE-LOOP BSF
PORTA CLK
短延时
CALL
SHORT-DELAY
BSF
STATUS C
BTFSS
PORTA DAT
BCF
STATUS C
读取一位数据
RLF
DATA-IN
置 CLK 为低电平
BCF
PORTA CLK
- 12 -
广州周立功单片机发展有限公司
Tel
020
38730916 38730917 38730976 38730977
Fax:38730925
CALL
SHORT-DELAY
是否己接收 8 位数据
DECFSZ
BIT-COUNT
GOTO
RECEIVE-LOOP
重新设 RA2 DATA 口为输出态
MOVLW
B 11111000
TRIS
PORTA
RETIW
0
--------------------------------------------------初始化
--------------------------------------------------I/O 口初始化
RESET
MOVLW
B 11111000
TRIS
PORTA
MOVLW
B 11111001
MOVWF
PORTA
MOVLW
PORTA
延时约 25mS
MOVLW
0X19
MOVWF
TIMER
START-DELAY MOVLW
0XFF
MOVWF
TIMER1
START-DELAY1 DECFSZ
TIMER1
GOTO
START-DELAY1
DECFSZ
TIMER
GOTO
START-DELAY
发复位 清除 指令
MOVLW
B 10100100
CALL
SEND
恢复 CS 为高电平
BSF
PORTA CS
--------------------------------------------------主程序
--------------------------------------------------检测是否有键按下
MAIN
BTFSC
PORTA KEY
GOTO
MAIN
有键按下 发送读键盘指令
MOVLW
B 00010101
发送读键盘指令
CALL
SEND
从 zlg7289A 读键盘代码
CALL
RECEIVE
设 CS 为高电平
BSF
PORTA CS
--------------------------------------------------;16 进制 BCD 码转换
--------------------------------------------------CLRF
TEN
GET-DEC
MOVLW
D 10
SUBWF
DATA-IN W
SKPC
GOTO
ORER
MOVWF
DATA-IN
INCF
TEN
- 13 -
广州周立功单片机发展有限公司
Tel
020
38730916 38730917 38730976 38730977
Fax:38730925
GOTO
GET-DEC
--------------------------------------------------发送按键的 BCD 码到 zlg7289A
--------------------------------------------------发 2 次左移指令 使当前显示内容
左移 留出空位供显示新数据
左移指令
OVER
MOVLW
B‘10100001’
发送指令到 zlg7289A
CALL
SEND
左移指令
MOVLW
B‘10100001’
发送指令到 zlg7289A
CALL
SEND
下载数据且译码指令 第 2 位
MOVLW
B 10000001’
CALL
SEND
发送指令到 zlg7289A
MOVFW
TEN
发送十位数字到 zlg7289A
CALL
SEND
下载数据且译码指令 第 1 位
MOVLW
B 10000000
CALL
SEND
发送指令到 zlg7289A
MOVFW
DATA-IN
发送个位数字到 zlg7289A
CALL
SEND
BSF
PORTA CS
等待按键放开
WAIT
BTFSS
PORTA KEY
GOTO
WAIT
GOTO
MAIN
;
END
- 14 -