器件:TM1623

1 tm1623

  TM1623是带按键扫描接口的LED驱动控制器;为了驱动数码管量身定制的,顺带也可以直接驱动led;tm1623也20岁了;

  按键驱动最大支持10*3矩阵,即30个按键;

  led驱动支持11段7位-14段4位,8级辉度可调;常见数码管是8段,从11段开始那不是摆明浪费吗?

2 引脚定义

  左起逆时针排序,数据引脚,Kx键扫值锁存,SEGx和KSx为P管开漏输出;右起顺时针GRIDx为N管开漏输出;

  SPI的DIN输出数据时为开漏输出,所以建议上拉个10k电阻;手册建议DIN和DOUT连接在一块用;

  SEG和GRID是怎么让led亮的呢?就像IO电路,led接到P管和N管分压电阻点的上面,这样就只有P管和N管都通的时候才亮;

  KSx和Kx又是如何和扫描键值的呢?P管搭配键扫值锁存寄存器,键扫寄存器扫一遍需要两个显示周期约10ms;

3 指令控制

  tm1623的cmd可以分为4种cmd,以cmd-bit[7:6]来指定

  [7:6] 00b 显示模式设置 >> 段位设置;led的设置;

  [7:6] 01b 数据命令设置 >> 读写模式和地址模式设置;led驱动为写模式;键扫为固定地址读模式;

  [7:6] 11b 地址设置        >> 显示寄存器的地址映射;led的设置;

  [7:6] 10b 显示控制设置 >> 显示开关和亮度设置;led的设置;

  

  led驱动则按"地址增加模式"或"固定地址模式"根据datasheet-page10的时序来写数据;在page11还给了两个流程图;

  键值扫描则直接cmd<0x42>+ [data1-5] 来读数据;扫描周期8ms内只有第一次按键有效;

  所以这里还有几个指令的截图,我懒的截,本小结要结合p10-11看;

4 LED段位操作

  段:segment;位:grid;seg只能接LED阳极,grid只能接LED阴极,电流始终由seg流向grid;(段位+-)

  显示寄存器的一个地址可以操作8个seg段数据;不论共阴还是共阳,要点亮对应位段,则向如下对应地址bit写1;

  比如想点亮位段seg1-grid1,那么就向0xc0的bit0写1;

  显示寄存器的上电默认值为不定值,数码管会显示乱码;所以建议上电后向地址0xc0-0xcd写入数据0;

  

5 键盘扫描

  

6 典型电路

  没啥,可以看看,具体见手册;

7 code  

  后续看看,会不会补充;

8 小结

  这个器件也没啥,其实花两个小时完整看一遍就可以了,因为我整了整,所以多花了三四个小时;

  控制led通过SEGx和GRIDx的阵列来批量控制led,猜测像IO电路那样,Led排在P管和分压电阻点之间;

  键盘扫描就是P管+Kx数值锁存寄存器;按键排在P管和锁存器之间;扫描一遍要两个周期,约8ms,期间只会锁存一次按键值;

  SPI数据上升沿有效,下降沿变化;写就是写LED,读就是读键扫;cmd见p10-11; 

  这个器件的主要学习点在于理解P管开漏和N管开漏的电路用法;

posted @ 2025-07-25 16:05  rls_v  阅读(47)  评论(0)    收藏  举报