数码管公共脚接电阻,如何解决因亮多段而引起的亮度不同
目前公司提出节约成本,故而提出把数码管的8段码的电阻取消,改为在公共脚串接.但在写程序出现开多段和少段时亮度不同的情况.现在我有想到反过来扫描,即扫段码(通常我们是扫描位码).但想了很久也没有想出应该如何编写程序.不知各位有没有更好的程序方法来解决这种问题.可以查表,根据笔画多少调整扫描时间,几个电阻都省,这蛋疼的公司产品 就差几个电阻钱?太能搞了吧 gyzzg2030 发表于 2013-5-16 21:51 static/image/common/back.gif
可以查表,根据笔画多少调整扫描时间,几个电阻都省,这蛋疼的公司产品
这个没办法呀,上面一句话,下面就得跑断腿了.
你的意思还是扫描位码? 如果是共阴极数码管,先给A高电平,然后哪一位数码管A需要亮就给哪个com低电平,不需要亮给高电平,再给B高电平...........
这样需要扫描8次才能完成一次显示,这种方法适合数码管大于8位时用。 可以用二极管降压,这样亮度变化小 原理上行不通 .titrwh 发表于 2013-5-16 21:54 static/image/common/back.gif
如果是共阴极数码管,先给A高电平,然后哪一位数码管A需要亮就给哪个com低电平,不需要亮给高电平,再给B高 ...
最开始我也是这样想的,但试了很久也没有想出如何把将段码拆分出来扫描.不知可否讲解下如何送值.比如:有4个dis_buf存放段码,如何才能拆出里面的段码和位码对应? 问题的关键在于,数码管总共有多少位? turf456 发表于 2013-5-16 21:56 static/image/common/back.gif
原理上行不通
不会呀,我有见过别人产品用过这样的原理,但是显示1和显示8的亮度差不多(肉眼很难看出亮度不同) eduhf_123 发表于 2013-5-16 22:03 static/image/common/back.gif
问题的关键在于,数码管总共有多少位?
这个也没有定,2---5位吧,位数再多就没有太多必要了,加个数码管驱动芯片就行了 段数多了就扫描时间长一些,反之少一些,使表现出来的亮度相同。
不过这种硬件方式有弊端:8字段LED并联驱动,遇到Vf离散性较大,那就一笔亮,一笔暗,基本上就报废了。。。 zhiwei 发表于 2013-5-16 22:11 static/image/common/back.gif
段数多了就扫描时间长一些,反之少一些,使表现出来的亮度相同。
不过这种硬件方式有弊端:8字段LED并联驱 ...
不是并联使用,是几位8字数码管,接法上是公共脚接限流电阻. 5楼的思路很好,学习了!
其实就是把段控制作为位控制、位控制作为段控制来用。是否可以这样:
先给A高电平(设数码管是共阴),然后查询显示缓冲里所有A段是高的位,有高的位输出低,没有的输出高,这样就实现了A段的驱动。后面的依次进行。。
但是5楼说高于8位才适用我不认同。位数多了,还不如用段限流电阻+传统解码驱动的方式来做,这样位数再多也就是7个电阻。如果按楼主的设计,8位显示就是8个电阻,不如不改! 很有意思的帖子,我的思路又开阔了。 5L的方法好
软件的话用位运算很容易实现 我是段码+循环移位的掩码解决,亮度特别纯匀,等于是一次只扫一个灯 换一种扫描方法,每次所有数码管显示同一段,当然,某位数字里没有那一段的就不用显示了。 #define led_dat_len 3
uc data led_dat;
uc code led_seg[]={
0x05,0x7D,0x46,0x54,0x3C,0x94,0x84,0x5D,0x04,0x14,0x0C,0xA4,0x87,0x64,0x86,0x8E};
void kd_scan()
{
H0=H1=H2=H3=0;//¹ØÊýÂë¹ÜËùÓÐλѡ
P1=0xff;HA=0;//Êý¾Ý¿Úתµ½ÊäÈë״̬
seg_mask<<=1;if(seg_mask==0){seg_mask=1;}//Éú³ÉÑ»·×óÒÆÑÚÂë
XD0=P1;HA=1;//¶ÁIO״̬
if(kd_cnt>=led_dat_len)kd_cnt=0;
P1=(~seg_mask)|led_seg];
if(kd_cnt==0)H0=1;
if(kd_cnt==1)H1=1;
if(kd_cnt==2)H2=1;
if(kd_cnt==3)H3=1;
kd_cnt++;
} 贴片电阻一盘5k个,10元钱。我无语了。 zhangyidao 发表于 2013-5-16 23:29 static/image/common/back.gif
贴片电阻一盘5k个,10元钱。我无语了。
不要你自己焊,你当然觉得轻松,我以前自己一个一个焊的,一个板能少5个电阻,我要少好多事{:lol:} 省这几个电阻得不偿失。我觉得怕是不是你公司提出来的想法,而是你自己的想法吧,一个成熟的公司不会在这种地方提出降低成本的。 真够抠门的。。。可以一段一段的扫描,保证了亮度一样而且亮度比一位一位扫要高~ hefq 发表于 2013-5-16 23:46 static/image/common/back.gif
不要你自己焊,你当然觉得轻松,我以前自己一个一个焊的,一个板能少5个电阻,我要少好多事...
有8位排阻嘛…… gzhuli 发表于 2013-5-17 00:18 static/image/common/back.gif
有8位排阻嘛……
当时没想到,想到的时候已经解决了 告诉你一个方法,在一个数组里查询要显示的数据的段数,再根据这个表做不同的延时,我以前也做了一个这样的,最终这样搞好的 两种方法都很好,一是改变扫描时间调节亮度,一是把一个数字拆分成8段单独点亮。学习了。 bigeblis 发表于 2013-5-16 22:29 static/image/common/back.gif
5楼的思路很好,学习了!
其实就是把段控制作为位控制、位控制作为段控制来用。是否可以这样:
先给A高电平 ...
段扫描比位扫描好不少:限流电阻一个数码管用一个
1. 位数少,省电阻;
2. 不同色、不同大小数码管可以混用,亮度高的电阻大一些,亮度低的电阻小一些。
3. 轻松驱动>16位的数码管不闪烁,程序刷新时间宽裕。
4. 至少8个按键,不像位扫描受位数少限制。
代价只是程序上,把位扫描段码直送改为位组装,增加一个位数for
曾经尝试过,但是除了那个适当延长时间的那个方法外,亮度还是达不到;
二极管分压的没用过,电阻最好还是不省掉的好 lmt50211 发表于 2013-5-16 22:17 static/image/common/back.gif
不是并联使用,是几位8字数码管,接法上是公共脚接限流电阻.
同一个8段里面几个LED不就类似并联了吗? 哈,同意,比如有3位LED,同一时刻先点亮3位里边A段有的,再点亮B,C,D,E,F,G, 将 要显示 的 数字,分 笔画 来 轮流 显示。即同一时间,只亮A-DP中的一个笔画 我们公司别说8个电阻,一个电阻可以省的都要省掉。。
其实就是这样:A B C D E F G HCOM1 COM2 COM3 COM4
原来的做法是只使能COM1,然后送A-H的数据,接着只使能COM2,送A-H的数据,依次类推。显示缓存表里存的是A-H的数据。
现在是反过来:只使能A,送COM数据,只使能B,送COM数据,依次类推。显示缓存表里存的是COM数据,中间加一层转换就好了 直接都省掉,你看看那些做点阵LED的哪有加限流电阻的啊
太亮的话可以调一下显示的占空比
几种方法都是大家的;
一用亮的时间来平衡亮度,数据要多测;
二单段显示这个效果会很好,程序要难好多好多。
三还有一法就是恒压驱动,可以较好解决以上问题。 当然恒压是每段串电阻的一种变种。 数码管公共脚接电阻,如何解决因亮多段而引起的亮度不同
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.
LZ公司真奇葩,不过对提高技术有好处 这样做肯定不行 还是都省掉吧,调一下占空比,只要芯片不是很热就行了,那些大屏幕都没有电阻的。 zhangyidao 发表于 2013-5-16 23:29 static/image/common/back.gif
贴片电阻一盘5k个,10元钱。我无语了。
其实呢,我个人觉得没必要,但是公司里说机器弄一个电阻比弄8个电阻要快,所以了.... jiwm 发表于 2013-5-16 23:51 static/image/common/back.gif
省这几个电阻得不偿失。我觉得怕是不是你公司提出来的想法,而是你自己的想法吧,一个成熟的公司不会在这种 ...
首先不管是不是公司要求,你觉得对开拓思路有没有帮助呢?然后才说是不是我自己的思路.当然,如果能有一种减少生产操作量,那何不是一种改善呢. hefq 发表于 2013-5-16 23:23 static/image/common/back.gif
谢谢!先研究下您的代码..... zhanan 发表于 2013-5-17 07:33 static/image/common/back.gif
段扫描比位扫描好不少:限流电阻一个数码管用一个
1. 位数少,省电阻;
2. 不同色、不同大小数码管可以 ...
说得很有道理..... benqme 发表于 2013-5-17 09:32 static/image/common/back.gif
这样做肯定不行
是电工就得和男人一样别说不行. sfes 发表于 2013-5-16 21:52 static/image/common/back.gif
就差几个电阻钱?太能搞了吧
说真的加工费比电阻贵多了 lmt50211 发表于 2013-5-17 21:08 static/image/common/back.gif
其实呢,我个人觉得没必要,但是公司里说机器弄一个电阻比弄8个电阻要快,所以了.... ...
想想也确实有道理。省了加工费,还减少了故障隐患。 我一般喜欢用两个 4位排阻,加工比较方便。
如果都不加,通过占空比调节,不知道对单片机io口有没有不好的。 canback 发表于 2013-5-18 08:17 static/image/common/back.gif
我一般喜欢用两个 4位排阻,加工比较方便。
如果都不加,通过占空比调节,不知道对单片机io口有没有不好的 ...
我试过不加,也没有出现过问题(没有做老化测试的)。不过从原理上说,不加肯定会有影响的。
页:
[1]