广州周立功单片机发展有限公司 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 -