数码管显示驱动和键盘扫描控制器CH451及其应用
● 设定系统参数:010000000[WDOG][KEYB][DISP]B
该命令用于设定CH451的系统级参数如看门狗使能WDOG、键盘扫描使能KEYB、显示驱动使能DISP等。各个参数均可通过1位数据来进行控制,将相应的数据位置为1可启用该功能,否则关闭该功能(默认值)。
● 设定显示参数:0101[MODE][LIMIT][INTENSITY]B
此命令用于设定CH451的显示参数,如译码方式MODE(1位)、扫描极限LIMIT(3位)、显示亮度INTENSITY(4位)等。译码方式MODE为1时选择BCD译码方式,为0时选择不译码方式。CH451默认工作于不译码方式,此时8个数据寄存器中字节数据的位7~位0分别对应8个数码管的小数点和段G~段A,当数据位为1时,对应的数据段(或发光管)点亮;数据位为0时熄灭。CH451工作于BCD译码方式主要应用于数码管驱动,单片机只要给出二进制数的BCD码,便可由CH451将其译码并直接驱动数码管以显示对应的字符。BCD译码方式是对数据寄存器中字节数据的位4~位0进行兼容BCD的译码,可用于控制段驱动引脚SEG6~SEG0的输出,它们对应于数码管的段G~段A,同时可用字节数据的位7控制段来驱动引脚SEG7的输出以对应数码管的小数点,字节数据的位6和位5不影响BCD译码的输出,它们可以是任意值。将位4~位0进行BCD译码可显示以下28个字符,其中00000B~01111B分别对应于“0~F”、10000B~11010B分别对应于“ ”空格 、“+”+或加号 、“-”负号或减号 、“=”等于号 、“"左方括号 、“”右方括号 、“_”下划线 、“H” 、“L” 、“P” 、“.”小数点 、其余值为空格。
扫描极限LIMIT控制位001B~111B和000B(默认值)可分别设定扫描极限1~7和8。显示亮度INTENSITY控制位的0001B~1111B和0000B(默认值)则用于分别设定显示驱动占空比1/16~15/16 和16/16,以实现16级显示亮度控制。
●设定闪烁控制:0110[D7S][D6S][D5S][D4S][D3S][D2S][D1S][D0S]B
设定闪烁控制命令用于设定CH451的闪烁显示属性,其中D7S~D0S 分别对应于8个字驱动DIG7~DIG0。闪烁属性D7S~D0S分别通过1位数据控制,将相应的数据位置为1可使能闪烁显示,否则为正常显示,不闪烁(默认值)。
●加载字数据:1[DIG_ADDR][DIG_DATA]B
加载字数据命令用于将字节数据DIG_DATA(8位)写入DIG_ADDR(3位)指定的数据寄存器中。DIG_ADDR的000B~111B分别用于指定数据寄存器的地址0~7,并分别对应于DIG0~DIG7引脚驱动的8个数码管。DIG_DATA为待写入的字节数据。
●读取按键代码:0111xxxxxxxxB
读取按键代码命令用于获得CH451最近检测到的有效按键的按键代码。该命令是唯一的具有数据返回的命令,CH451通常从DOUT引脚输出按键代码,按键代码总是7位数据,最高位是状态码,位5~位0是扫描码。读取按键代码命令的位数据B7~B0可以是任意值,所以控制器可以将该操作命令缩短为4位数据B11~B8。例如,CH451检测到有效按键并中断时,如按键代码是5EH,则先向CH451发出读取按键代码命令0111B,然后再从DOUT获得按键代码5EH。
CH451所提供的按键代码为7位,位2~位0是列扫描码,位5~位3是行扫描码,位6是状态码(键按下为1,键释放为0)。例如,连接DIG3与SEG4的键被按下时,按键代码为63H,键被释放后,按键代码是23H。单片机可以在任何时候读取按键代码,但一般在CH451检测到有效按键而产生键盘中断时读取按键代码,此时按键代码的位6总是1。另外,如果需要了解按键何时释放,单片机可以通过查询方式定期读取按键代码,直到按键代码的位6为0。表2是连接在DIG7~DIG0与SEG7~SEG0之间的键被按下时,CH451所提供的按键代码。这些按键代码具有一定的规律,如果需要键被释放时的按键代码,可将表2中的按键代码的位6 置0,也可将表中的按键代码减去40H。应注意的是:CH451不支持组合键,也就是说,同一时刻,不能有两个或者更多的键被按下。
表2 CH451的键盘编码表
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 串行接口应用电路
C