搜索
bottom↓
回复: 49

数码管公共脚接电阻,如何解决因亮多段而引起的亮度不同

[复制链接]

出0入0汤圆

发表于 2013-5-16 21:46:53 | 显示全部楼层 |阅读模式
目前公司提出节约成本,故而提出把数码管的8段码的电阻取消,改为在公共脚串接.但在写程序出现开多段和少段时亮度不同的情况.现在我有想到反过来扫描,即扫段码(通常我们是扫描位码).但想了很久也没有想出应该如何编写程序.不知各位有没有更好的程序方法来解决这种问题.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出20入22汤圆

发表于 2013-5-16 21:51:13 | 显示全部楼层
可以查表,根据笔画多少调整扫描时间,几个电阻都省,这蛋疼的公司产品

出0入8汤圆

发表于 2013-5-16 21:52:26 来自手机 | 显示全部楼层
就差几个电阻钱?太能搞了吧

出0入0汤圆

 楼主| 发表于 2013-5-16 21:54:18 | 显示全部楼层
gyzzg2030 发表于 2013-5-16 21:51
可以查表,根据笔画多少调整扫描时间,几个电阻都省,这蛋疼的公司产品

这个没办法呀,上面一句话,下面就得跑断腿了.
你的意思还是扫描位码?

出0入0汤圆

发表于 2013-5-16 21:54:55 | 显示全部楼层
如果是共阴极数码管,先给A高电平,然后哪一位数码管A需要亮就给哪个com低电平,不需要亮给高电平,再给B高电平...........
这样需要扫描8次才能完成一次显示,这种方法适合数码管大于8位时用。

出0入0汤圆

发表于 2013-5-16 21:56:06 | 显示全部楼层
可以用二极管降压,这样亮度变化小

出0入0汤圆

发表于 2013-5-16 21:56:37 | 显示全部楼层
原理上行不通

出0入0汤圆

 楼主| 发表于 2013-5-16 22:02:16 | 显示全部楼层
.titrwh 发表于 2013-5-16 21:54
如果是共阴极数码管,先给A高电平,然后哪一位数码管A需要亮就给哪个com低电平,不需要亮给高电平,再给B高 ...

最开始我也是这样想的,但试了很久也没有想出如何把将段码拆分出来扫描.不知可否讲解下如何送值.比如:有4个dis_buf存放段码,如何才能拆出里面的段码和位码对应?

出0入0汤圆

发表于 2013-5-16 22:03:23 | 显示全部楼层
问题的关键在于,数码管总共有多少位?

出0入0汤圆

 楼主| 发表于 2013-5-16 22:05:27 | 显示全部楼层
turf456 发表于 2013-5-16 21:56
原理上行不通

不会呀,我有见过别人产品用过这样的原理,但是显示1和显示8的亮度差不多(肉眼很难看出亮度不同)

出0入0汤圆

 楼主| 发表于 2013-5-16 22:10:01 | 显示全部楼层
eduhf_123 发表于 2013-5-16 22:03
问题的关键在于,数码管总共有多少位?

这个也没有定,2---5位吧,位数再多就没有太多必要了,加个数码管驱动芯片就行了

出0入0汤圆

发表于 2013-5-16 22:11:35 | 显示全部楼层
段数多了就扫描时间长一些,反之少一些,使表现出来的亮度相同。
不过这种硬件方式有弊端:8字段LED并联驱动,遇到Vf离散性较大,那就一笔亮,一笔暗,基本上就报废了。。。

出0入0汤圆

 楼主| 发表于 2013-5-16 22:17:49 | 显示全部楼层
zhiwei 发表于 2013-5-16 22:11
段数多了就扫描时间长一些,反之少一些,使表现出来的亮度相同。
不过这种硬件方式有弊端:8字段LED并联驱 ...

不是并联使用,是几位8字数码管,接法上是公共脚接限流电阻.

出0入0汤圆

发表于 2013-5-16 22:29:01 | 显示全部楼层
5楼的思路很好,学习了!
其实就是把段控制作为位控制、位控制作为段控制来用。是否可以这样:
先给A高电平(设数码管是共阴),然后查询显示缓冲里所有A段是高的位,有高的位输出低,没有的输出高,这样就实现了A段的驱动。后面的依次进行。。
但是5楼说高于8位才适用我不认同。位数多了,还不如用段限流电阻+传统解码驱动的方式来做,这样位数再多也就是7个电阻。如果按楼主的设计,8位显示就是8个电阻,不如不改!

出0入0汤圆

发表于 2013-5-16 22:39:39 来自手机 | 显示全部楼层
很有意思的帖子,我的思路又开阔了。

出0入0汤圆

发表于 2013-5-16 23:04:48 | 显示全部楼层
5L的方法好
软件的话用位运算很容易实现

出0入0汤圆

发表于 2013-5-16 23:10:21 | 显示全部楼层
我是段码+循环移位的掩码解决,亮度特别纯匀,等于是一次只扫一个灯

出0入0汤圆

发表于 2013-5-16 23:10:38 | 显示全部楼层
换一种扫描方法,每次所有数码管显示同一段,当然,某位数字里没有那一段的就不用显示了。

出0入0汤圆

发表于 2013-5-16 23:21:02 | 显示全部楼层
  1. #define led_dat_len 3
  2. uc data led_dat[led_dat_len];
  3. uc code led_seg[]={
  4. 0x05,0x7D,0x46,0x54,0x3C,0x94,0x84,0x5D,0x04,0x14,0x0C,0xA4,0x87,0x64,0x86,0x8E};
  5. void kd_scan()
  6. {
  7.         H0=H1=H2=H3=0;//¹ØÊýÂë¹ÜËùÓÐλѡ
  8.         P1=0xff;HA=0;//Êý¾Ý¿Úתµ½ÊäÈë״̬
  9.         seg_mask<<=1;if(seg_mask==0){seg_mask=1;}//Éú³ÉÑ­»·×óÒÆÑÚÂë
  10.         XD0=P1;HA=1;//¶ÁIO״̬
  11.         if(kd_cnt>=led_dat_len)kd_cnt=0;
  12.         P1=(~seg_mask)|led_seg[led_dat[kd_cnt]];
  13.         if(kd_cnt==0)H0=1;
  14.         if(kd_cnt==1)H1=1;
  15.         if(kd_cnt==2)H2=1;
  16.         if(kd_cnt==3)H3=1;
  17.         kd_cnt++;
  18. }
复制代码

出0入0汤圆

发表于 2013-5-16 23:23:06 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-5-16 23:29:52 来自手机 | 显示全部楼层
贴片电阻一盘5k个,10元钱。我无语了。

出0入0汤圆

发表于 2013-5-16 23:46:22 | 显示全部楼层
zhangyidao 发表于 2013-5-16 23:29
贴片电阻一盘5k个,10元钱。我无语了。

不要你自己焊,你当然觉得轻松,我以前自己一个一个焊的,一个板能少5个电阻,我要少好多事

出0入0汤圆

发表于 2013-5-16 23:51:35 | 显示全部楼层
省这几个电阻得不偿失。我觉得怕是不是你公司提出来的想法,而是你自己的想法吧,一个成熟的公司不会在这种地方提出降低成本的。

出0入8汤圆

发表于 2013-5-16 23:53:48 | 显示全部楼层
真够抠门的。。。可以一段一段的扫描,保证了亮度一样而且亮度比一位一位扫要高~

出0入663汤圆

发表于 2013-5-17 00:18:17 | 显示全部楼层
hefq 发表于 2013-5-16 23:46
不要你自己焊,你当然觉得轻松,我以前自己一个一个焊的,一个板能少5个电阻,我要少好多事  ...

有8位排阻嘛……

出0入0汤圆

发表于 2013-5-17 00:24:27 | 显示全部楼层
gzhuli 发表于 2013-5-17 00:18
有8位排阻嘛……

当时没想到,想到的时候已经解决了

出20入25汤圆

发表于 2013-5-17 01:17:22 | 显示全部楼层
告诉你一个方法,在一个数组里查询要显示的数据的段数,再根据这个表做不同的延时,我以前也做了一个这样的,最终这样搞好的

出0入0汤圆

发表于 2013-5-17 04:08:09 来自手机 | 显示全部楼层
两种方法都很好,一是改变扫描时间调节亮度,一是把一个数字拆分成8段单独点亮。学习了。

出0入0汤圆

发表于 2013-5-17 07:33:28 | 显示全部楼层
bigeblis 发表于 2013-5-16 22:29
5楼的思路很好,学习了!
其实就是把段控制作为位控制、位控制作为段控制来用。是否可以这样:
先给A高电平 ...

段扫描比位扫描好不少:  限流电阻一个数码管用一个
1. 位数少,省电阻;
2. 不同色、不同大小数码管可以混用,亮度高的电阻大一些,亮度低的电阻小一些。
3. 轻松驱动>16位的数码管不闪烁,程序刷新时间宽裕。
4. 至少8个按键,不像位扫描受位数少限制。

代价只是程序上,把位扫描段码直送改为位组装,增加一个位数for

出0入0汤圆

发表于 2013-5-17 07:46:31 | 显示全部楼层
曾经尝试过,但是除了那个适当延长时间的那个方法外,亮度还是达不到;

二极管分压的没用过,电阻最好还是不省掉的好

出0入0汤圆

发表于 2013-5-17 08:15:09 | 显示全部楼层
lmt50211 发表于 2013-5-16 22:17
不是并联使用,是几位8字数码管,接法上是公共脚接限流电阻.

同一个8段里面几个LED不就类似并联了吗?

出20入186汤圆

发表于 2013-5-17 08:28:30 | 显示全部楼层
哈,同意,比如有3位LED,同一时刻先点亮3位里边A段有的,再点亮B,C,D,E,F,G,

出0入0汤圆

发表于 2013-5-17 08:37:05 | 显示全部楼层
将 要显示 的 数字,分 笔画 来 轮流 显示。即同一时间,只亮A-DP中的一个笔画

出0入54汤圆

发表于 2013-5-17 08:52:20 | 显示全部楼层
我们公司别说8个电阻,一个电阻可以省的都要省掉。。
其实就是这样:A B C D E F G H  COM1 COM2 COM3 COM4

原来的做法是只使能COM1,然后送A-H的数据,接着只使能COM2,送A-H的数据,依次类推。显示缓存表里存的是A-H的数据。

现在是反过来:只使能A,送COM数据,只使能B,送COM数据,依次类推。显示缓存表里存的是COM数据,中间加一层转换就好了

出0入0汤圆

发表于 2013-5-17 08:59:45 | 显示全部楼层
直接都省掉,你看看那些做点阵LED的哪有加限流电阻的啊
太亮的话可以调一下显示的占空比

出0入0汤圆

发表于 2013-5-17 09:01:27 | 显示全部楼层
几种方法都是大家的;
一用亮的时间来平衡亮度,数据要多测;
二单段显示这个效果会很好,程序要难好多好多。

三还有一法就是恒压驱动,可以较好解决以上问题。

出0入0汤圆

发表于 2013-5-17 09:02:39 | 显示全部楼层
当然恒压是每段串电阻的一种变种。

出0入0汤圆

发表于 2013-5-17 09:09:36 | 显示全部楼层
数码管公共脚接电阻,如何解决因亮多段而引起的亮度不同


Easy:

Optimal solution: don't do it. You can spare a few resistors, cannot you?

Suboptimal solution #1: run the leds hot. leds at 15ma are roughly as bright as leds at 20ma or 25ma, etc.

Suboptinal solution #2: dynamically alter the display duration based on the number of segments lit. If you are lighting up two segments, "1" for example, display it for 1ms; if you are lighting up 5 segments ("5"), you display it for 2ms. This can be easily done with an array and loading up the timer offset / top in the isr.

出0入0汤圆

发表于 2013-5-17 09:29:42 | 显示全部楼层
LZ公司真奇葩,不过对提高技术有好处

出0入0汤圆

发表于 2013-5-17 09:32:36 来自手机 | 显示全部楼层
这样做肯定不行

出0入0汤圆

发表于 2013-5-17 09:57:52 | 显示全部楼层
还是都省掉吧,调一下占空比,只要芯片不是很热就行了,那些大屏幕都没有电阻的。

出0入0汤圆

 楼主| 发表于 2013-5-17 21:08:09 | 显示全部楼层
zhangyidao 发表于 2013-5-16 23:29
贴片电阻一盘5k个,10元钱。我无语了。

其实呢,我个人觉得没必要,但是公司里说机器弄一个电阻比弄8个电阻要快,所以了....

出0入0汤圆

 楼主| 发表于 2013-5-17 21:14:23 | 显示全部楼层
jiwm 发表于 2013-5-16 23:51
省这几个电阻得不偿失。我觉得怕是不是你公司提出来的想法,而是你自己的想法吧,一个成熟的公司不会在这种 ...

首先不管是不是公司要求,你觉得对开拓思路有没有帮助呢?然后才说是不是我自己的思路.当然,如果能有一种减少生产操作量,那何不是一种改善呢.

出0入0汤圆

 楼主| 发表于 2013-5-17 21:15:47 | 显示全部楼层
hefq 发表于 2013-5-16 23:23

谢谢!先研究下您的代码.....

出0入0汤圆

 楼主| 发表于 2013-5-17 21:17:35 | 显示全部楼层
zhanan 发表于 2013-5-17 07:33
段扫描比位扫描好不少:  限流电阻一个数码管用一个
1. 位数少,省电阻;
2. 不同色、不同大小数码管可以 ...

说得很有道理.....

出0入0汤圆

 楼主| 发表于 2013-5-17 21:18:59 | 显示全部楼层
benqme 发表于 2013-5-17 09:32
这样做肯定不行

是电工就得和男人一样别说不行.

出0入8汤圆

发表于 2013-5-17 21:58:17 | 显示全部楼层
sfes 发表于 2013-5-16 21:52
就差几个电阻钱?太能搞了吧

说真的  加工费比电阻贵多了

出0入0汤圆

发表于 2013-5-18 08:03:45 | 显示全部楼层
lmt50211 发表于 2013-5-17 21:08
其实呢,我个人觉得没必要,但是公司里说机器弄一个电阻比弄8个电阻要快,所以了.... ...

想想也确实有道理。省了加工费,还减少了故障隐患。

出0入42汤圆

发表于 2013-5-18 08:17:52 | 显示全部楼层
我一般喜欢用两个 4位排阻,加工比较方便。

如果都不加,通过占空比调节,不知道对单片机io口有没有不好的。

出0入0汤圆

 楼主| 发表于 2013-5-18 08:40:29 | 显示全部楼层
canback 发表于 2013-5-18 08:17
我一般喜欢用两个 4位排阻,加工比较方便。

如果都不加,通过占空比调节,不知道对单片机io口有没有不好的 ...

我试过不加,也没有出现过问题(没有做老化测试的)。不过从原理上说,不加肯定会有影响的。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 09:42

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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