CH455是一款用于驱动数码管(LED)和矩阵键盘扫描控制芯片。能够动态驱动4位数码管或者32个LED。同时支持7x4的键盘扫描。单片机通过I2C对CH455进行读写,同时包括一个#INT中断引脚,任何一个按键按下都会触发中断,在INT引脚上产生低电平脉冲。
主要特点:
- 内置较大电流的驱动器,段电流达25mA,位电流达160mA
- 支持8x4或7x4,能够直接控制4位数码管或32个LED
- 能够设置8种亮度,由内部PWM驱动LED
- 提供低电平有效的键盘中断,提供按键释放标志位,可通过该位来判断按键是否按下和释放。
- 供电电压范围2.7~5V
CH455内部的显示驱动电路和按键扫描电路是独立开的,两部分电路使用相同的引脚,分时对引脚进行驱动和读取。在显示驱动中,插入键盘键值读取操作。
显示驱动
显示驱动原理与HT1612段码屏驱动原理类似,都是以SEG[n:0]和DIG[m:0]分别作为行、列,组成一个寄存器矩阵,一共(n+1)*(m+1)位数据。将单个LED要显示的状态对应写进寄存器,芯片内部电路会按照寄存器中数据进行动态扫描输出。
CH455对数码管和LED采用动态扫描驱动,顺序为DIG0~DIG3,当其中一个引脚吸入电流时,其他引脚不吸入电流。
如下图中,若硬件上将SEG0~7的公共端接到DIG0时,若要左侧共阴数码管显示0,在要在SEG0地址寄存器中写入0B00111111,即0x3F。芯片会按照寄存器的值来驱动左侧数码管显示。
寄存器地址:
键盘扫描
键盘扫描时,DIG3~DIG0引脚用于列扫描输出,SEG6~SEG0引脚带有内部下拉电阻,用于行扫描输入。在键盘扫描期间,DIG0~DIG3一次输出高电平,其余引脚输出低电平,该状态下SEG0~SEG6引脚的输出被禁止。 CH455内部带有消抖功能,连续两次判断有按键按下才会被确认。当检测到按键后,会讲按键值存储在寄存器中,并在#INT引脚上产生低电平中断。
注:当多个按键按下时,按键码较小的按键优先。
按键码格式:bit7一直为0, bit2一直为1,bit[1:0]为列扫描码,bit[5:3]为行扫描码,bit6位状态码(按键按下为1,按键松开为0,判断该位的值来判断按键是否松开)。如连接DIG2和SEG5的按键被按下,则bit[1:0]=10,bit[5:3]=101,bit6=1,有
Key = 0B01101110 (0x6E)
对应按键码如下,因为按下立即读键码寄存器是bit6=1,所以需要在按键编码上加上0x40