找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1090|回复: 21
打印 上一主题 下一主题
收起左侧

有没有类似TM1638的能单独控制某一位的亮度的数码管驱动芯片?

[复制链接]
跳转到指定楼层
楼主
大小尺寸混合使用比较麻烦
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1064915 发表于 2025-9-25 14:09 | 只看该作者
某一位还是想说某一段
回复

使用道具 举报

板凳
ID:712097 发表于 2025-9-25 16:40 | 只看该作者
据我所知,没有这种功能,看下能不能通过在位驱动脚(GR1-GR8)串接电阻实现,注意测量电流,计算功率,使用功率相匹配的电阻。
回复

使用道具 举报

地板
ID:1109793 发表于 2025-9-25 17:55 | 只看该作者
chxelc 发表于 2025-9-25 16:40
据我所知,没有这种功能,看下能不能通过在位驱动脚(GR1-GR8)串接电阻实现,注意测量电流,计算功率,使 ...

在国芯那边机器人回复有单独位甚至段都可以的,可惜价格都高的离谱了。
看来串电阻是比较好的方法了。
结论,还是用164+三极管吧,亮度随便搞,甚至可以共阴共阳混着用
回复

使用道具 举报

5#
ID:69038 发表于 2025-9-25 17:57 | 只看该作者
先刷一个亮度为0的点亮全屏LED的数据,再刷一个亮度为7的点高亮LED的数据。
如此反复,估计就成了。最好能开个定时器,自动动刷,你试试。
回复

使用道具 举报

6#
ID:584814 发表于 2025-9-25 17:57 | 只看该作者
TM1638 能单独控制某一位的亮度么 ?
回复

使用道具 举报

7#
ID:1133081 发表于 2025-9-25 19:50 | 只看该作者
xiaobendan001 发表于 2025-9-25 17:55
在国芯那边机器人回复有单独位甚至段都可以的,可惜价格都高的离谱了。
看来串电阻是比较好的方法了。
...

没有见过类似TM系列芯片可以按位控制数码管亮度的芯片。如果确有此需求完全可以用MCU直接驱动按位控制数码管亮度,大尺寸数码管可以加晶体管功率放大驱动。只要把原来的位驱动固定脉冲宽度改PWM调宽即可
回复

使用道具 举报

8#
ID:69038 发表于 2025-9-25 21:10 | 只看该作者
可以实现!
我用FD650测试过了,请看视频:
https://b23.tv/Zv2aJ2f

回复

使用道具 举报

9#
ID:1133081 发表于 2025-9-25 21:17 | 只看该作者
xiaobendan001 发表于 2025-9-25 17:55
在国芯那边机器人回复有单独位甚至段都可以的,可惜价格都高的离谱了。
看来串电阻是比较好的方法了。
...

用限流电阻降低数码管某一位的亮度当然可以,但要调整合适的阻值,电阻要放在段驱动端,不宜放在位驱动端,否则会因数码笔段不同亮度也变化。另一个方法是在原电路的基础上在需要降低亮度的那个位端串接1N4007以降低电压来降低亮度,1个二极管不够再加一两个,直到亮度合适。
回复

使用道具 举报

10#
ID:1109793 发表于 2025-9-26 07:35 | 只看该作者
zhuls 发表于 2025-9-25 17:57
先刷一个亮度为0的点亮全屏LED的数据,再刷一个亮度为7的点高亮LED的数据。
如此反复,估计就成了。最好能 ...

不行,我试过,会闪,除非能和它的扫描同步估计能行,问题是主控刷新的时候是不定时的,在主循环里面的。
即便定时刷新,也一样不可能同步吧。
而且刷新一次用时也比较长。放定时器里面估计不行。
回复

使用道具 举报

11#
ID:1109793 发表于 2025-9-26 07:35 | 只看该作者
man1234567 发表于 2025-9-25 17:57
TM1638 能单独控制某一位的亮度么 ?

不能,只能整体控制
回复

使用道具 举报

12#
ID:1109793 发表于 2025-9-26 07:38 | 只看该作者
WL0123 发表于 2025-9-25 21:17
用限流电阻降低数码管某一位的亮度当然可以,但要调整合适的阻值,电阻要放在段驱动端,不宜放在位驱动端 ...

那样要重做板子,我只在上面实现了164+三极管和1650,没有电阻,164后面有电阻,但是所有数码管共享的。
还是用164的吧,毕竟也不贵,关键我还有很多。
回复

使用道具 举报

13#
ID:1109793 发表于 2025-9-26 07:40 | 只看该作者
zhuls 发表于 2025-9-25 21:10
可以实现!
我用FD650测试过了,请看视频:
https://b23.tv/Zv2aJ2f

这是怎么实现的?就是不断的刷内容实现的?亮度几级可调?650是4位的,刷新速度可能比较快吧
回复

使用道具 举报

14#
ID:69038 发表于 2025-9-26 09:43 | 只看该作者
对,就是不停地刷数据。。
我想,这跟驱动几位LED没关系,只跟你送的数据有关系。。//这个可以看看我在你前一贴中的分析数据。。。
1638的板,我好象有过,得找来再试一下。

视频看上去会闪、亮度不均,但祼眼视觉良好。


显示内容是“-000”,前3位普亮,设亮度值为“0”,第4 位高亮设亮度值为“7”。。

刷显流程:
1、设亮度值为0
2、全屏显示内容发一次
3、设亮度值为7
4、发送高亮位的数据,非高亮位的数据都为不显(“0”态)
为了突显,第4 步可酌情增加次数。
因为任务比较简单,视频中的扫显代码是放在main中,并没有开定时器。如放进定时中断里,效果可能会更好。。待验证。

回复

使用道具 举报

15#
ID:1109793 发表于 2025-9-26 14:12 | 只看该作者
zhuls 发表于 2025-9-26 09:43
对,就是不停地刷数据。。
我想,这跟驱动几位LED没关系,只跟你送的数据有关系。。//这个可以看看我在你 ...

测试了一下650芯片
在主循环中
  1.                 liangdu = 2;
  2.                 TM_WrCmd((liangdu<<4)|0x01);
  3.                 for(i=0;i<4;i++){
  4.                         TM_WrDat(disdata_add[i],disdatas[i]);
  5.                 }
  6.                 liangdu = 2;
  7.                 TM_WrCmd((liangdu<<4)|0x01);
  8.                 for(i=0;i<4;i++){
  9.                         if(i==1)TM_WrDat(disdata_add[i],disdatas[i]);else TM_WrDat(disdata_add[i],0);
  10.                 }
复制代码

不知道这样对不对
测试结果就是亮的位正常,暗的在闪。
而且不需要改动亮度。暗的位只是因为在第二个循环中有写入了0数据产生的。因为刷新比较慢吧,所有看起来有点闪。
我用的AIP650E,可能厂家不一样刷新率不一样?
又或者我的代码耗时有点长?我尝试主频从11改为22,没有效果,还是闪,但是闪的比较整齐点。
那个改变亮度的指令应该是即时改变所有位的亮度。所以什么时候写入应该没有影响。
在芯片资料里面没有内部结构图。
回复

使用道具 举报

16#
ID:69038 发表于 2025-9-26 18:45 | 只看该作者
xiaobendan001 发表于 2025-9-26 14:12
测试了一下650芯片
在主循环中

这是我的刷显代码:
  1. void display_led_all()//显示刷新4位LED
  2. {
  3.   FD650_send(0x48,init_1650_0);// 开启显示、0级亮度
  4.   FD650_send(0X68,led_buf[0]);   //GID1  
  5.   FD650_send(0X6A,led_buf[1]);   //GID2  
  6.   FD650_send(0X6c,led_buf[2]);   //GID3
  7.   FD650_send(0X6e,led_buf[3]);   //GID4

  8.   FD650_send(0x48,init_1650_7);// 开启显示、7级亮度

  9.   FD650_send(0X68,0x00);   //GID1  
  10.   FD650_send(0X6A,0x00);   //GID2  
  11.   FD650_send(0X6c,0x00);   //GID3
  12.   FD650_send(0X6e,led_buf[3]);   //GID4

  13.   FD650_send(0X68,0x00);   //GID1  
  14.   FD650_send(0X6A,0x00);   //GID2  
  15.   FD650_send(0X6c,0x00);   //GID3
  16.   FD650_send(0X6e,led_buf[3]);   //GID4

  17. }
复制代码
回复

使用道具 举报

17#
ID:1109793 发表于 2025-9-27 08:07 | 只看该作者
zhuls 发表于 2025-9-26 18:45
这是我的刷显代码:

你尝试一下第3行也设置7级亮度看看啥效果。
难道我是用数组循环导致刷新速度太慢了造成的闪?
另外如果亮度分时设置有效的话,你第11行往后也不不要写入00,还按之前那样写入正常数据就应该好使。
所以我觉得就是不行,就是你那个芯片刷新速度快,并且你这代码刷新也比较快(可能是SEND函数里面用的延时比较少)所以看起来不闪。
还有,我记得650设置亮度0是最亮的,1是最按的好像,也可能我记错了?
回复

使用道具 举报

18#
ID:57657 发表于 2025-9-27 17:17 | 只看该作者
楼主可以考虑用1颗FPGA或CPLD实现此功能,控制亮度位码给高频PWM信号,十几通道高频PWM需求单片机难以实现。
回复

使用道具 举报

19#
ID:69038 发表于 2025-9-27 20:54 | 只看该作者
xiaobendan001 发表于 2025-9-27 08:07
你尝试一下第3行也设置7级亮度看看啥效果。
难道我是用数组循环导致刷新速度太慢了造成的闪?
另外如果 ...

如你所言,同等亮度下,不发送 FD650_send(0x48,init_1650_x),即把3行与9行同行关了,一样效果。
但GID1-GID3不设为0x00,无效。
你也可以重建一份代码,只做显示,无其它任务试一下。。

我的MCU是8H1k08,11.0592M..
回复

使用道具 举报

20#
ID:69038 发表于 2025-9-27 21:06 | 只看该作者
xiaobendan001 发表于 2025-9-27 08:07
你尝试一下第3行也设置7级亮度看看啥效果。
难道我是用数组循环导致刷新速度太慢了造成的闪?
另外如果 ...

另外,若不重设亮度,普亮的LED祼眼见闪。
手册上bit4:bit6这3个位,000说是8级,最高,因为001是1级,是最低的。
回复

使用道具 举报

21#
ID:1109793 发表于 2025-9-28 07:33 | 只看该作者
zhuls 发表于 2025-9-27 21:06
另外,若不重设亮度,普亮的LED祼眼见闪。
手册上bit4:bit6这3个位,000说是8级,最高,因为001是1级, ...

对,我记得应该是0是最亮,但是1638应该是0最暗好像
回复

使用道具 举报

22#
ID:146733 发表于 2025-9-28 09:14 | 只看该作者
其实增加一级类似放大电路,比如某一位,单独高电压供电,然后通过MOS开关控制。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表