打印
[51单片机]

咨询个数显表原理的问题

[复制链接]
2452|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
数显表产品,用数码管显示的,看到大部分产品都是用移位寄存器和4个三极管来驱动数码管,这样是不是相当于提高数码管亮度的,一般都是动态扫描的多                   我看了我用的单片机,IO口全部输出最大不能查过20MA的。用单片机IO口直接驱动数码管,亮度会差些         咨询下网友,最好是移位寄存器和4个三极管来驱动数码管  吗,看大部分产品是这样做的

相关帖子

沙发
as564335sa| | 2014-12-16 08:31 | 只看该作者
三极管也可以,只要不用单片机直接提供电流驱动数码管各种能点亮数码管的姿势都可以

使用特权

评论回复
板凳
b147038606|  楼主 | 2014-12-16 08:58 | 只看该作者
我看无功补偿控制器产品是用单片机直接驱动共阴数码管产品的,亮度是差一点点,也还能凑合

使用特权

评论回复
地板
b147038606|  楼主 | 2014-12-16 08:59 | 只看该作者
as564335sa 发表于 2014-12-16 08:31
三极管也可以,只要不用单片机直接提供电流驱动数码管各种能点亮数码管的姿势都可以 ...

我看无功补偿控制器产品是用单片机直接驱动共阴数码管产品的,亮度是差一点点,也还能凑合

使用特权

评论回复
5
as564335sa| | 2014-12-16 09:07 | 只看该作者
b147038606 发表于 2014-12-16 08:59
我看无功补偿控制器产品是用单片机直接驱动共阴数码管产品的,亮度是差一点点,也还能凑合 ...

不加任何驱动直接用单片机管脚点亮只能用动态扫描,一次只点亮一个数码管的一个笔画,单片机的引脚必须能够推挽输出,电流十几ma以上

使用特权

评论回复
6
b147038606|  楼主 | 2014-12-16 09:16 | 只看该作者
as564335sa 发表于 2014-12-16 09:07
不加任何驱动直接用单片机管脚点亮只能用动态扫描,一次只点亮一个数码管的一个笔画,单片机的引脚必须能 ...

我前面就是用动态扫描做的,查了芯片手册是20MA最大输出

使用特权

评论回复
7
b147038606|  楼主 | 2014-12-16 09:18 | 只看该作者
as564335sa 发表于 2014-12-16 09:07
不加任何驱动直接用单片机管脚点亮只能用动态扫描,一次只点亮一个数码管的一个笔画,单片机的引脚必须能 ...

原理图这样的

2.png (3.88 KB )

2.png

1.png (15.25 KB )

1.png

使用特权

评论回复
8
bkn1860| | 2014-12-16 10:09 | 只看该作者
TM1629B

使用特权

评论回复
9
Jack315| | 2014-12-16 10:22 | 只看该作者
发光二极管静态驱动在 5mA 以上即可获得满意的亮度,一般设置成 7~15 mA。

动态时,需考虑占空比的因素。如LZ的方案,每个数码管点亮的占空比为 1/4 = 25%。假设静态时能获得满意亮度的驱动电流为 10mA,则动态时为获得相同的亮度,驱动电流应为 10mA / 25% = 40mA。如果 8 段被同时点亮,则电流高达 320mA。一般单片机端口的驱动电流在 20mA~25mA。为了获得 320mA 的驱动能力,通常需要外接三极管驱动。LZ的方案中就是接在 LED_1~LED_4 这四个节点。

至于LED_A~LED_H 是否外接三极管驱动,根据成本、性能等方面因素取舍。如果因成本原因不外接三极管驱动,则每个笔段的驱动电流最大为 20mA (建议设置为 18mA),相当于静态驱动电流 4.5mA —— 亮度勉强可以接受。由于这时端口驱动电流接近极限,单片机的可靠性将大打折扣。所以,从设计质量考虑,LED_A~LED_H 也应该外接三极管驱动。

【提醒】
一旦采用单片机直接驱动的方案,应同时核算下单片机的总电流,确定在安全的范围内。

使用特权

评论回复
10
Jack315| | 2014-12-16 10:26 | 只看该作者
9# 讨论的是红色和绿色发光二极管的驱动电流。如果是蓝色或白色,静态驱动在 2mA 以上即可获得满意的亮度,一般设置成 1~5 mA。

使用特权

评论回复
11
as564335sa| | 2014-12-16 10:28 | 只看该作者
b147038606 发表于 2014-12-16 09:18
原理图这样的

你就动态扫描一次只电量一个笔画这样最安全,电流肯定能满足

使用特权

评论回复
12
coody| | 2014-12-16 11:11 | 只看该作者
高亮的数码管可以IO直接驱动,只要电流不超过MCU允许就可以。

使用特权

评论回复
13
sosozz| | 2014-12-16 11:59 | 只看该作者
用7447芯片驱动可以吗?

使用特权

评论回复
14
b147038606|  楼主 | 2014-12-16 13:48 | 只看该作者
bkn1860 发表于 2014-12-16 10:09
TM1629B

买来的样品是用TM1628的,但是想节约些成本

使用特权

评论回复
15
b147038606|  楼主 | 2014-12-16 13:52 | 只看该作者
Jack315 发表于 2014-12-16 10:22
发光二极管静态驱动在 5mA 以上即可获得满意的亮度,一般设置成 7~15 mA。

动态时,需考虑占空比的因素。 ...

是否可以这样考虑,段选用74HC164这样的移位寄存器             位选用4个三极管这样子

使用特权

评论回复
16
b147038606|  楼主 | 2014-12-16 13:57 | 只看该作者
as564335sa 发表于 2014-12-16 10:28
你就动态扫描一次只电量一个笔画这样最安全,电流肯定能满足

void display()
{
         P6OD &= (~BIT1);P6OD |= BIT2;P6OD |= BIT3;P6OD |= BIT4;
        display_led(led_d);                                display_clr();

        P6OD |= BIT1;P6OD &= (~BIT2);P6OD |= BIT3;P6OD |= BIT4;
        display_led(led_c);                                display_clr();


        P6OD |= BIT1;P6OD |= BIT2;P6OD &= (~BIT3);P6OD |= BIT4;
        display_led(led_b);      display_clr();

        P6OD |= BIT1;P6OD |= BIT2;P6OD |= BIT3;P6OD &= (~BIT4);       
        display_led(led_a);         display_clr();
}程序里我是一次点亮一位数码管的,那是不是相当于要40MA左右的驱动电流才行

使用特权

评论回复
评论
通宵敲代码 2014-12-16 16:31 回复TA
好牛逼的程序! 
17
b147038606|  楼主 | 2014-12-16 14:04 | 只看该作者
动态扫描可以实现的,就是亮度稍微暗点

使用特权

评论回复
18
Jack315| | 2014-12-16 15:01 | 只看该作者
本帖最后由 Jack315 于 2014-12-16 15:06 编辑
b147038606 发表于 2014-12-16 13:52
是否可以这样考虑,段选用74HC164这样的移位寄存器             位选用4个三极管这样子 ...

使用串入并出的移位寄存器,可以达到两个目的:
1) 增加驱动能力(20mA vs 80mA)
2) 减少对单片机IO口资源的需求(×8 vs ×2~4?)
但不利的是控制变复杂了。。。

因此使用串入并出的移位寄存器也是一个可以考虑的选项。

使用特权

评论回复
19
bkn1860| | 2014-12-16 16:10 | 只看该作者
b147038606 发表于 2014-12-16 13:48
买来的样品是用TM1628的,但是想节约些成本

那就SPI+74HC595

使用特权

评论回复
20
hnkf118| | 2014-12-16 18:29 | 只看该作者
make

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

38

帖子

1

粉丝