第十章 人机交互接口
任课教师:刘忠国 山东大学课程中心网站: http://course.sdu.edu.cn/G2S/stcmcu.cc 宏晶官方网站:http://www.stcmcu.com STC单片机编译(汇编)/编程(烧录)/仿真工具说 明书; stc15系列单片机器件手册等 keil μvision软件下载及指导手册(Help→μvision Help) http://www.keil.com/ Keil Software –Cx51 编译器用户手册: Cx51编译 器--对传统和扩展的8051微处理器的优化的C 编译器和库参考
第十章 人机交互接口 本章学习目标 掌握键盘接口技术 掌握数码、液晶显示技术 了解数码管显示驱动和键盘扫描控制专用芯片 第十章 人机交互接口 本章学习目标 掌握键盘接口技术 掌握数码、液晶显示技术 了解数码管显示驱动和键盘扫描控制专用芯片 人机交互接口是指人与计算机之间建立联系、交换 信息的输入/输出设备的接口,设备包括键盘、显示 器、打印机、鼠标器等。 主要介绍键盘输入接口设计、显示原理及接口技术。
第十章 人机交互接口 10.1 键盘接口技术 10.1.1 简易键盘接口的实现 10.1.2 矩阵键盘接口的实现 10.2 显示技术 10.2.1 数码LED显示技术 10.2.2 液晶显示技术 10.3 数码管显示驱动和键盘扫描控制专用芯片
10.3 数码管显示驱动和键盘扫描控制专用芯片 在单片机应用系统中, 为节省I/O口资源, 提高CPU效 率, 设计键盘和显示接口时, 常用数码管显示驱动和 键盘扫描专用芯片 (键盘/显示扩展芯片)。 常见的键盘/显示扩展芯片有CH451、ZLG7289A等。 1、CH451简介 CH451是一个整合了数码管显示驱动、键盘扫描控 制以及微处理器监控的多功能外围芯片。 三个功能之间相互独立,单片机可以通过操作命令 分别启用、关闭、设定CH451 的任何一个功能。
1、CH451简介 CH451内置RC振荡电路,可以动态驱动8位数码 管或者64只LED发光管,具有BCD译码、闪烁、 移位等功能; 还可以进行64键的键盘扫描; CH451通过可级联的串行接口与单片机等交换数 据,其串行接口是由硬件实现的,单片机可以频 繁地通过串行接口进行高速操作,而不会降低 CH451 的工作效率。
2、CH451特点 ——(1)显示驱动 内置大电流驱动级,段电流不小于25mA,字电流 不小于150mA。 动态显示扫描控制,直接驱动8 位数码管或者64 只 发光管LED。 可选数码管的段与数据位相对应的不译码方式或者 BCD译码方式。 数码管的字数据左移、右移、左循环、右循环。 各数码管数字独立闪烁控制。 任意段位寻址,独立控制各个LED 或者各数码管的 各个段的亮与灭。
2、CH451特点——(1)显示驱动 (2)键盘控制 内置64键键盘控制器,基于8×8矩阵键盘扫描。 通过占空比设定提供16级亮度控制。 支持段电流上限调整,可以省去所有限流电阻。 扫描极限控制,支持1到8个数码管,只为有效数 码管分配扫描时间。 (2)键盘控制 内置64键键盘控制器,基于8×8矩阵键盘扫描。 内置按键状态输入的下拉电阻,内置去抖动电路。 键盘中断,低电平有效输出。 提供按键释放标志位,可供查询按键按下与释放。
2、CH451特点——(3)其它 高速4线串行接口, 可多片级联, 时钟速度0~10MHz。 串行接口中DIN和DCLK信号线可与其它接口电路 共用, 节约引脚。 完全内置时钟振荡电路, 不需外接晶体或者阻容振荡。 内置上电复位和看门狗Watch-Dog, 提供高电平有 效和低电平有效复位输出。 支持低功耗睡眠, 节电, 可被按键或命令操作唤醒。 支持3V~5V电源电压。 提供SOP28和DIP24S两种无铅封装,兼容RoHS。
3、封装: SOP28和DIP24S 提供SOP28和DIP24S两种封装分别如图所示 图10-11 CH451的两种封装形式
4、引脚 表10-4 CH451两种封装形式的引脚及引脚说明 SOP28引脚 DIP24S引脚 引脚名称 类型 引脚说明 23 2 VCC 电源 正电源端,持续电流不小于200mA 9 15 GND 公共接地端,持续电流不小于200mA 25 4 LOAD 输入 串行接口的数据加载,内置上拉电阻 26 5 DIN 串行接口的数据输入,内置上拉电阻 27 6 DCLK 串行接口的数据时钟,内置上拉电阻 同时用于看门狗的清除输入 24 3 DOUT 输出 串行接口的数据输出和键盘中断 22~15 1、 24~18 SEG7 ~SEG0 三态输出 及输入 数码管的段驱动, 高电平有效, 键盘扫描输入, 高电平有效, 内置下拉 1~8 7~14 DIG7~DIG0 数码管的字驱动,低电平有效, 键盘扫描输出,高电平有效 12 16 RST 上电复位和看门狗复位,高电平有效 13 不支持 RST# 上电复位和看门狗复位,低电平有效 28 RST1 外部手工复位输入, 高电平有效, 内置下拉电阻 14 ADJ 段电流上限调整,内置强下拉电阻 11 CLKO 内部系统时钟输出 10 建议接GND 17 NC. 空脚 未使用,禁止连接
5、CH451功能说明 (1)显示驱动 CH451对数码管和发光管采用动态扫描驱动,顺序 为DIG0至DIG7,当其中一个引脚吸入电流时,其 它引脚则不吸入电流。 CH451内部有大电流驱动级, 可直接驱动0.5~2in共阴 数码管, 段驱动脚SEG0~SEG6分别对应数码管段G~段A 段驱动引脚SEG7对应数码管的小数点 字驱动引脚DIG7~DIG0分别连接8个数码管阴极。
(1)显示驱动 CH451可连接8×8矩阵的发光二级管LED阵列或 者64个独立发光管; 当扫描极限设定为1时,唯一的数码管DIG0 将得 到所有的动态驱动时间,从而等同于静态驱动; 当扫描极限设定为8时,8个数码管DIG7~DIG0各 得到1/8的动态驱动时间;
(1)显示驱动 当扫描极限设定为4时,4个数码管DIG3~DIG0各 得到1/4的动态驱动时间,此时各数码管的平均驱 动电流将比扫描极限为8时增加一倍,所以降低扫 描极限可以提高数码管的显示亮度。 CH451将分配给每个数码管的显示驱动时间进一 步细分为16等份,通过设定显示占空比支持16级 亮度控制。 占空比的值从1/16至16/16,占空比越大,数码管 的平均驱动电流越大,显示亮度也就越高,但占 空比与显示亮度之间是非线性关系。
(1)显示驱动 CH451内部具有8个8位的数据寄存器,用于 保存8个字数据,分别对应于CH451所驱动 的8个数码管或者8组每组8个的发光二极管。 CH451支持数据寄存器中的字数据左移、右 移、左循环、右循环,并且支持各数码管的 独立闪烁控制,在字数据左右移动或者左右 循环移动的过程中,闪烁控制的属性不会随 数据移动。
(1)显示驱动 CH451默认情况下工作于不译码方式 8个数据寄存器中字数据的位7~位0分别对应8个 数码管的小数点和段G~段A,对于发光二极管阵 列,则每个字数据的数据位唯一地对应一个发光二 级管。 当数据位为1时,对应的数码管的段或者发光管就 会点亮; 当数据位为0时,则对应的数码管的段或者发光管 就会熄灭。例如,第三个数据寄存器的位0为1,所 以对应的第三个数码管的段A点亮。
(1)显示驱动 通过设定,CH451可以工作于BCD译码方式 该方式主要应用于数码管驱动,单片机只要给出 二进制数BCD码,由CH451将其译码后直接驱动 数码管显示对应的字符。 BCD 译码方式是指对数据寄存器中字数据的位4~ 位0进行BCD译码,控制段驱动引脚SEG6~SEG0 的输出,对应于数码管的段G~段A,同时用字数 据的位7控制段驱动引脚SEG7的输出,对应于数码 管的小数点,字数据的位6和位5不影响BCD译码。
(1)显示驱动 位4~位0进行BCD译码所对应的段G~段A及数码管显示字符
(1)显示驱动 参考表,如果需要在数码管上显示字符0,只要置入 数据0xx00000B 或者00H; 数据0xx11010B或者1AH 对应于字符. (小数点); 数据0xx10000B 或者10H 对应于字符 (空格,数 码管没有显示)。
图10-12 CH451段驱动引脚SEG7~SEG0的内部电路简图 (1)显示驱动 CH451的段驱动引脚SEG7~SEG0的内部电路简图 SEGMENT-DATA SEG A 与非 与 按键编码 或非 非 50mA @ 2V 25mA @ 3V . 1mA @ 4V 15mA ADJ BCD-DECODE KEYB-SCAN DISPLAY-ENABLE 100K 用电压控制电流 VCC 2×15mA 图10-12 CH451段驱动引脚SEG7~SEG0的内部电路简图
图10-13 CH451的字驱动引脚DIG7~DIG0的内部电路简图 (1)显示驱动 CH451字驱动引脚DIG7~DIG0的内部电路简图: 非 DIG KEYB-SCAN DISP-SCAN DISP-ENABLE INTENSITY SPARKLING VCC 5mA 8×20mA 图10-13 CH451的字驱动引脚DIG7~DIG0的内部电路简图
(2)键盘扫描 CH451键盘扫描功能支持8×8矩阵64键键盘。 在键盘扫描期间,DIG7~DIG0引脚用于 列扫描输出 SEG7~SEG0引脚都带有内部下拉电阻, 用于行扫描输入 当启用键盘扫描功能后,DOUT引脚的功 能由串行接口的数据输出变为键盘中断以 及数据输出。
(2)键盘扫描 CH451插入键盘扫描过程(显示驱动扫描过程 中定期扫描键盘) 在键盘扫描期间,DIG7~DIG0引脚按照 DIG0至DIG7的顺序依次输出高电平,其余7 个引脚输出低电平; SEG7~SEG0引脚输出被禁止, 当无键被按下 时, SEG7~SEG0都被下拉为低电平; 当有键 被按下时, 如连接DIG3与SEG4的键被按下, 则 当DIG3输出高电平时SEG4检测到高电平。
(2)键盘扫描 为防止因为按键抖动或者外界干扰而产生误码, CH451实行两次扫描,只有当两次键盘扫描的结果 相同时,按键才会被确认有效。 如果CH451检测到有效的按键,则记录下该按键代 码,并通过DOUT引脚产生低电平有效的键盘中断, 此时单片机可通过串行接口读取按键代码; 在没有检测到新的有效按键之前,CH451不再产生 任何键盘中断。CH451不支持组合键,也就是说, 同一时刻,不能有两个或者更多的键被按下;如果 多个键同时按下,那么按键代码较小的按键优先。
(2)键盘扫描 CH451所提供的按键代码为7位 位2~位0是列扫描码, 位5~位3是行扫描码; 位6是状态码(键按下为1, 键释放为0) 位2~位0是列扫描码, 位5~位3是行扫描码; 位6是状态码(键按下为1, 键释放为0) DIG7~DIG0与SEG7~SEG0之间的键被按下时, 按键代码如下: 表10-6 按键与按键代码的对应关系 按键代码 DIG7 DIG6 DIG5 DIG4 DIG3 DIG2 DIG1 DIG0 SEG0 47H 46H 45H 44H 43H 42H 41H 40H SEG1 4FH 4EH 4DH 4CH 4BH 4AH 49H 48H SEG2 57H 56H 55H 54H 53H 52H 51H 50H SEG3 5FH 5EH 5DH 5CH 5BH 5AH 59H 58H SEG4 67H 66H 65H 64H 63H 62H 61H 60H SEG5 6FH 6EH 6DH 6CH 6BH 6AH 69H 68H SEG6 77H 76H 75H 74H 73H 72H 71H 70H SEG7 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H
(2)键盘扫描 例,按下DIG3与SEG4间的键, 按键代码是1100011B 或63H, 键被释放后, 按键代码是0100011B或23H; 其 中, 对应DIG3的列扫描码为011B, 对应SEG4的行扫 描码为100B。 可在任何时候读按键代码, 但一般在CH451检测到有 效按键而产生键盘中断时读取按键代码,此时按键 代码位6总是1。若要看按键是否释放, 可通过查询方 式定期读取按键代码,直到按键代码的位6为0。 若需键被释放的按键代码, 可将表中按键代码位6置0, 即将表中按键代码减40H。
(3)μP监控 CH451提供的μP监控包括上电复位和看门狗 Watch-Dog。 单片机或微处理器的复位输入引脚可根据需要直接 连接到CH451的RST引脚或者RST#引脚, 当CH451 通电或看门狗溢出时, RST引脚输出高电平有效的 复位脉冲信号,RST#引脚输出低电平有效的复位 脉冲信号。 CH451的上电复位脉冲信号同时作用于CH451芯片 的内部电路,而看门狗复位脉冲信号不会对CH451 芯片的内部电路起作用。
(3)μP监控 CH451的上电复位是指上电过程(从断电状态变为正 常供电状态的过程) 中产生的复位脉冲。 为减少CH451驱动大电流而产生的电源干扰, 应在紧 靠CH451芯片的正负电源间并联一组电源退耦电容 (包括独石或瓷片电容≥0.1uF和电解电容≥100uF)。 CH451启用看门狗后, 只要引脚DCLK的电平无变化, 看门狗计时器就会计时,当计满溢出周期时,就会 产生看门狗复位脉冲信号。 为避免计时溢出产生复位信号, 应定期改变DCLK电 平,及时清除看门狗的计时。
(3)μP监控 CH451的看门狗计时可被下述任何一个操作清除: 上电复位 RSTI引脚的手工复位 DCLK从低变为高 DCLK从高变为低等 启用看门狗功能后, 当单片机程序失控而使DCLK的 电平长时间保持不变时, CH451就会输出看门狗复 位脉冲信号。
(4)串行接口 CH451具有硬件实现的高速4线串行接口, 包括4个信 号线: 串行数据输入线DIN 串行数据时钟线DCLK 串行数据加载线LOAD 串行数据输出线DOUT DIN、DCLK、LOAD是带上拉的输入信号线, 默认 是高电平; DOUT在未启用键盘扫描功能时作为串 行数据输出线, 在启用键盘扫描功能后作为键盘中 断和数据输出线,默认是高电平。
(4)串行接口 CH451的串行接口框图如图所示。 命 令 译码 图10-14 CH451的串行接口框图 LOAD CK D 寄存器 Q DCLK DOUT LOAD CK 非 DIN D 寄存器 Q D10 D11 D9 D0 命 令 译码 D11-D0 Q 1 S 选择器 KEYB-DATA KEYB-INTER KEYB-ENABLE 图10-14 CH451的串行接口框图
(4)串行接口 单片机向CH451输出串行数据的过程 (不是唯一过程, 可有很多变化)是: 单片机向CH451输出一位数据, 即向DIN输出最低 位数据D0, 并向DCLK输出低电平脉冲(从高电平变 为低电平再恢复为高电平), 其中包括一个上升沿使 CH451输入位数据; 以同样的方式,输出位数据D1~D11; 向LOAD输出低电平脉冲,其中包括一个上升沿使 CH451加载串行数据。 用D0^D1^D2^D3^D4^D5^D6^D7^D8^ D9^D10^D11^↑作 为上述过程的简化描述;
(4)串行接口 用D0^D1^D2^D3^D4^D5^D6^D7^D8^ D9^D10^D11^↑ 作为上述过程的简化描述; 其中, ^代表 DCLK 的上升沿,↑代表 LOAD 的上升 沿,D0~D11 分别代表 1 位数据,如果是字符 0 或 1 则对应 DIN 输入的位数据,如果是字符 L 或 H 则对 应 DOUT 输出的位数据 0 或 1 。例如: 1^0^0^0^0^0^0^0^0^1^0^0^↑表示向 CH451 发送了 一组 12 位的串行数据 001000000001B; 1^1^1^0^↑H^H^L^L^L^H^H^表示先向 CH451 发 送了一组 4 位串行数据 0111B,然后接收了一组 7 位 的串行数据 1100011B。
(4)串行接口 未启用键盘扫描功能时, 单片机通过串行接口向CH451发 送12位数据的波形示意图如图所示。 DOUT 用于输出串行数据, 移位寄存器中的最低位数据总是在 DCLK 的下降沿出现在 DOUT 引脚。 LOAD DOUT D0 D1 D3 D2 D4 D5 D6 D7 D8 D10 D11 D9 DIN DCLK 1 0 0 0 0 0 0 0 0 1 0 0 图10-15 未启用键盘扫描功能时CH451发送12位数据的波形示意图
启用键盘扫描后, DOUT 作键盘中断和数据输出。CH451查到有 效按键, DOUT 输出低电平有效中断;单片机中断, 发读按键代码 命令, CH451 在 LOAD上升沿后从 DOUT 输出 7 位按键代码最高 位,单片机继续输出串行时钟, DCLK 每个下降沿, CH451 依次从 DOUT 输出 7 位按键代码剩余 6 位, 高位在前; 按键代码输出完毕 后,无论 DCLK 如何变化, CH451 都将 DOUT 恢复为默认高电平。 (4)串行接口 DIN LOAD DCLK DOUT MCU 中断 读取按键代码命令 输入按键代码 D8 D9 D10 D11 1 1 1 0 K6 K5 K4 K3 K2 K1 K0 H H L L L H H L 单片机 读取按键代码: 0111xxxxxxxxB 图10-16 单片机从CH451获得按键代码的过程
(4)串行接口具体过程是: ①输出一位数据,即向DIN输出读取按键代码命令的最 低位数据D0,并向DCLK输出低电平脉冲; ②以同样方式, 输出读按键代码命令的位数据D1~D11; ③向LOAD输出低电平脉冲, 其中包括一个上升沿使 CH451加载串行数据, CH451分析出是读按键代码命 令, 立即在DOUT输出按键代码的最高位数据K6; ④读取一位数据,即从DOUT输入按键代码的最高位 数据K6,并向DCLK输出低电平脉冲; ⑤以同样方式,输入按键代码的位数据K5~K0。
(4)串行接口 实际上,CH451的读取按键代码命令只有位数据 D8~D11是有效的,所以单片机不必发出读取按 键代码命令的D0~D7。 例如,按键代码是63H,则上述过程的简化描述是 1^1^1^0^↑H^H^L^L^L^H^H^,即先向CH451 发出读取按键代码命令0111xxxxxxxxB,然后从 DOUT接收按键代码1100011B。
表10-7 CH451的各个操作命令所对应的12位串行数据 (5)操作命令 CH451的各个操作命令所对应的12位串行数据如表所示。 表10-7 CH451的各个操作命令所对应的12位串行数据
(5)操作命令 1)空操作:0000xxxxxxxxB 空操作命令不对CH451产生任何影响。该命令可在 多个CH451级联的应用中,透过前级CH451向后级 CH451 发送操作命令而不影响前级的状态。 例, 要将操作命令001000000001B 发给两级级联电路 中的后级CH451(后级CH451 的DIN接前级CH451的 DOUT), 就在该命令后加空操作命令000000000000B 再发送, 即1^0^0^0^0^0^0^0^0^1^0^0^0^0^0^0^0^ 0^0^0^0^0^0^0^↑; 则该操作命令将经过前级CH451 到达后级CH451, 而空操作命令留给了前级CH451。
(5)操作命令 2)段位寻址清0:000110[BIT_ADDR]B 另外,为了在不影响CH451的前提下改变DCLK以 清除看门狗计时,也可发送空操作命令,在非级联 的应用中,空操作命令可以只发送有效数据D8~ D11,简化描述是0^0^0^0^↑。 2)段位寻址清0:000110[BIT_ADDR]B 段位寻址清0 命令用于将指定地址的发光管(或者 数码管的指定段或者小数点)熄灭,该命令一次 只能熄灭指定地址的一个发光管,并且完全不影 响其它发光管的状态。
段位寻址的编址顺序(矩阵编址表)如表所示。 2)段位寻址清0:000110[BIT_ADDR]B 段位寻址的编址顺序(矩阵编址表)如表所示。 表10-8 矩阵编址表 矩阵编址 DIG7 DIG6 DIG5 DIG4 DIG3 DIG2 DIG1 DIG0 SEG0 38H 30H 28H 20H 18H 10H 08H 00H SEG1 39H 31H 29H 21H 19H 11H 09H 01H SEG2 3AH 32H 2AH 22H 1AH 12H 0AH 02H SEG3 3BH 33H 2BH 23H 1BH 13H 0BH 03H SEG4 3CH 34H 2CH 24H 1CH 14H 0CH 04H SEG5 3DH 35H 2DH 25H 1DH 15H 0DH 05H SEG6 3EH 36H 2EH 26H 1EH 16H 0EH 06H SEG7 3FH 37H 2FH 27H 1FH 17H 0FH 07H 例如, 命令数据000110111010B 表示将编址为3AH 的 发光管熄灭。
(5)操作命令 3)段位寻址置1:000111[BIT_ADDR]B 段位寻址置1 命令用于将指定地址的发光管(或者 数码管的指定段或者小数点)点亮,该命令一次只 能点亮指定地址的一个发光管,并且完全不影响 其它发光管的状态。段位寻址的编址顺序请参考 矩阵编址表。 例如,命令数000111000110B 表示将编址为06H 的 发光管点亮。
(5)操作命令 4)芯片内部复位:001000000001B 内部复位命令将CH451 的各个寄存器和各 种参数复位到默认的状态。 芯片上电时,CH451总是被复位,此时各个 寄存器均复位为0,各种参数均恢复为默认 值。
(5)操作命令 5)进入睡眠状态:001000000010B 进入睡眠状态命令使CH451 暂停显示驱动和键盘 扫描,并进入低功耗睡眠状态,从而可以节约电 能。 执行该命令之前,应该先用设定系统参数命令关 闭CH451的显示驱动使能和按键扫描使能,并且 执行该命令本身必须在20uS 之内完成,发出命令 后DCLK 引脚必须保持不变。
(5)操作命令 处于低功耗睡眠状态中的CH451 可以被下述两种 事件中的任何一种唤醒, 第一种事件是检测到SEG3~SEG0上的按键,有 效按键代码是40H 到5FH; 第二种事件是接收到单片机发出的操作命令(通 常是空操作命令), 或者检测到DCLK 引脚的状态 变化。 睡眠和唤醒操作本身不会影CH451 的工作状态。
(5)操作命令 6)字数据左移:001100000000B 字数据左移命令将CH451 的字数据左移一次,即 从DIG0 向DIG7 移动一位,然后最右边的DIG0补 进数据00H。 例如,在数码管DIG7~DIG0 显示“87654321”时, 执行字数据左移命令,显示变为“7654321 ”(不 译码方式)或者“76543210”(BCD 译码方式)。
(5)操作命令 7)字数据右移:001100000010B 字数据右移命令将CH451 的字数据右移一次,即 从DIG7 向DIG0 移动一位,然后最左边的DIG7补 进数据00H。 例如,在数码管DIG7~DIG0 显示“87654321”时, 执行字数据右移命令,显示变为“ 8765432”(不 译码方式)或者“08765432”(BCD 译码方式)。
(5)操作命令 8)字数据左循环:001100000001B 字数据左循环命令将CH451 的字数据左循环一次, 即从DIG0 向DIG7 移动一位,然后最右边的DIG0 补进原DIG7 的数据。 例如,在数码管DIG7~DIG0 显示“87654321”时, 执行字数据左循环命令,显示变为“76543218”。
(5)操作命令 9)字数据右循环:001100000011B 字数据右循环命令将CH451 的字数据右循环一次, 即从DIG7 向DIG0 移动一位,然后最左边的DIG7 补进原DIG0 的数据。 例如,在数码管DIG7~DIG0 显示“87654321”时, 执行字数据右循环命令,显示变为“18765432”。
10)自定义BCD 码:00111[SELF_BCD]B 自定义BCD码命令用于自行定义常规BCD译码中未 实现的特殊字符, CH451支持一个自定义BCD码, 其 BCD值为1EH, 显示编码由该命令指定, 编码共7 位, 分别对应于数码管的7 个段, 而小数点由BCD 值的最 高位单独控制。 例, 命令数据001110111110B 表示自定义BCD字符U (对应的段显示数据为3EH) 在BCD译码方式下: 当单片机要求显示BCD 值1EH 时, CH451会在对应的数码管中显示字符U 当单片机要求显示BCD 值9EH 时, CH451 会在对应 的数码管中显示字符U.(含小数点)。
(5)操作命令 11) 设定系统参数: 0100000[CKHF]0[WDOG][KEYB][DISP]B 设定系统参数命令用于设定CH451 的系统级参数: 输 出高频时钟CKHF(选择快速闪烁), 看门狗使能WDOG, 键盘扫描使能KEYB, 显示驱动使能DISP。各参数均 通过1位数据控制, 将相应的数据位置为1 则启用该功 能, 否则关闭该功能(默认值)。 例如,命令数据010000000011B 表示选择低频时钟、 关闭看门狗的功能、启用键盘扫描的功能、启用显示 扫描驱动的功能。
12)设定显示参数:0101[MODE][LIMIT][INTENSITY]B 该命令用于设定CH451 的显示参数: 译码方式MODE, 扫描极限LIMIT, 显示亮度INTENSITY。 译码方式MODE 通过1 位数据控制,置1 时选择BCD 译码方式,置0 时选择不译码方式 (默认值)。 扫描极限LIMIT 通过3 位数据控制, 数据001B~111B 和000B分别设定扫描极限为1~7 和8 (默认值)。 显示亮度INTENSITY通过4位数据控制, 数据0001B~ 1111B和0000B 分别设定显示驱动占空比为1/16~ 15/16 和16/16(默认值)。
(12)设定显示参数:0101[MODE][LIMIT][INTENSITY]B 例如 命令数据010101110000B 表示选择不译码 方式、扫描极限为7、显示驱动占空比为 16/16; 命令数据010110001010B 表示选择BCD 译 码方式、扫描极限为8、显示驱动占空比为 10/16。
(5)操作命令 13)设定闪烁控制: 0110[D7S][D6S][D5S][D4S][D3S][D2S][D1S][D0S]B 设定闪烁控制命令用于设定CH451 的闪烁显示属性: D7S~D0S 分别对应于8 个字驱动DIG7~DIG0。闪 烁属性D7S~D0S 分别通过1 位数据控制,将相应的 数据位置为1 则使能闪烁显示,否则为正常显示, 不闪烁(默认值)。 例, 命令数据011000100001B 表示设定数码管DIG5 和DIG0 闪烁显示, 其余数码管正常显示, 不闪烁。
1[DIG_ADDR][DIG_DATA]B (5)操作命令 14)加载字数据: 1[DIG_ADDR][DIG_DATA]B 该命令用于将字数据DIG_DATA 写入DIG_ADDR 指定地址的数据寄存器中。DIG_ADDR 通过3 位数 据指定数据寄存器的地址,数据000B~111B 分别指 定地址0~7,对应于DIG0~DIG7 引脚驱动的8 个 数码管。DIG_DATA 是8 位的字数据。
(5)操作命令 14)加载字数据: 1[DIG_ADDR][DIG_DATA]B 例如 命令数据100001111001B 表示将字数据79H写入 第1 个数据寄存器,如果是不译码方式,则DIG0 引脚驱动的数码管将显示E; 命令数据110010001000B 表示将字数据88H 写入 第5 个数据寄存器,如果是BCD 译码方式,则 DIG4 引脚驱动的数码管将显示8.。
(5)操作命令 15)读取按键代码:0111xxxxxxxxB 读取按键代码命令用于获得CH451 最近检测到的 有效按键的按键代码。 该命令是唯一的具有数据返回的命令,CH451从 DOUT引脚输出按键代码,按键代码总是7 位数据, 最高位是状态码,位5~位0 是扫描码。 读取按键代码命令的位数据D0~D7 可以是任意值, 所以单片机可以将该操作命令缩短为4 位数据 D8~D11。
(5)操作命令 15)读取按键代码:0111xxxxxxxxB 例如,CH451 检测到有效按键并中断,按键代码 是5EH,简化描述 1^1^1^0^↑H^L^H^H^H^H^L^表示先向CH451 发出读取按键代码命令0111xxxxxxxxB,然后从 DOUT 获得按键代码5EH。
图10-17 CH451通过串行接口与单片机相连接的电路
2)CH451驱动数码管 图10-18 CH451驱动数码管的电路 CH451 驱动数 码管的 电路如 图所示。
3)8×8键盘扫描 CH451连接8×8键盘的电路图如图所示。CH451 具有64键的键盘扫描功能,如果应用中只需要很 少的按键,则可以在8×8 矩阵中任意去掉不用的 按键。 为了防止键被按下后在SEG信号线与DIG信号线 之间形成短路,影响显示,一般应该在CH451的 DIG0~DIG7 引脚与键盘矩阵之间串接限流电阻 R2,其阻值为1KΩ至10KΩ。
3)8×8键盘扫描 图10-19 CH451连接8×8键盘电路图
图10-20单片机由CH451驱动8个共阴数码管, 并扫描64个按键的完整电路图: 4)完整的应用电路 由CH451驱动8个共阴数码管, 并扫描64按键的完整电路: STC15F2K60S2 图10-20单片机由CH451驱动8个共阴数码管, 并扫描64个按键的完整电路图:
4)完整的应用电路 由于某些数码管在较高工作电压时存在反向漏电 现象,容易被CH451误认为是某个按键一直按下, 所以建议使用二级管D1-D8 防止数码管反向漏电, 并提高键盘扫描时SEG0~SEG7输入信号的电平, 确保键盘扫描更可靠。 当电源电压较低时(例如VCC=3.3V),应去掉这些二 级管以避免影响显示亮度。 当数码管多于8个时,可以采用多个CH451进行驱 动。多个CH451与单片机的连接电路及使用方法 请参阅CH451手册,在此从略。