找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于单片机驱动4位数码管最省的方案

[复制链接]
跳转到指定楼层
楼主
单片机驱动4位数码管很常见,常用驱动方案是:用74HC138,595,TM1650等芯片驱动,可不可以用单片机IO直接驱动呢?下面给出一种方案。
具有推挽输出的单片机IO直接驱动4位数码管,不加限流电阻。需要12个IO口。89C52单片机没有推挽输出不可以直接驱动4位数码管。注意这种方案对驱动程序要求很高,必须严格这行,随意操作有可能烧毁IO口。
一、首先是驱动电流问题
单片机IO最大电流是20ma,这里的电流指的是连续电流,MOS管最大瞬间电流至少是额定电流5倍,也就是100ma,瞬间指小于1ms。也就是说IO口瞬间1ms以内输出100ma电流是安全的。IO不加限流电阻直接驱动数码管电流在20--60ma,只要每次点亮时间小于1ms是安全的。
二、IO口驱动时序问题
IO直接驱动数码管当然不可以一次驱动8段,这样电流太大会烧毁IO,为了减少电流一次只驱动1个LED,4位数码管一共8*4=32个LED,要使数码管不闪烁每秒至少刷新30次,32个LED*30=960,也就是说1ms点亮一个LED就可以保证数码管不闪烁。为了使每个IO有充分的休息时间IO口驱动时序为:
1位1段→2位2段→3位3段→4位4段→
1位5段→2位6段→3位7段→4位8段→
1位2段→2位3段→3位4段→4位5段→
1位6段→4位7段→4位8段→4位1段→
1位3段→2位4段→3位5段→4位6段→
1位7段→2位8段→3位1段→4位2段→
1位4段→2位5段→3位6段→4位7段→
1位8段→2位1段→3位2段→4位3段→
这样在数码管全亮时也可以保证每个IO口驱动1ms,至少休息3ms。IO口驱动时序是有一定要求的,不可以驱动完第一位8段再驱动第二位8段,这样有可能IO会连续驱动8ms有烧毁的风险。
三、数码管刷新程序执行问题
必须把数码管刷新程序放在1ms定时器中断中执行(这个中断要有最高优先级)。数码管刷新程序不可以放在主程序中执行。放在主程序中有风险,如果主程序中有长时间的延时程序或者长时间的中断程序,比如按键消抖,等待按键释放程序等等有可能造成驱动数码管IO长时间过流烧毁!!!因为一次只驱动1个LED,数码管刷新程会复杂一些,但是对于1TSTC单片机来说CPU占用率小于5%,不会影响其他程序执行。
驱动数码管的IO口还可以复用扫描按键,独立按键或者矩阵按键都可以。多加一个IO还可以再驱动8个独立LED灯。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:86926 发表于 2022-10-7 08:28 | 只看该作者
正反扫数码管,4位数码管共8只脚;前提是扫描IO口需要支持 高阻态-高电平-低电平
回复

使用道具 举报

板凳
ID:235691 发表于 2022-10-7 10:52 | 只看该作者
楼主给个例程看看
回复

使用道具 举报

地板
ID:624769 发表于 2022-10-7 11:52 | 只看该作者
撇开“瞬间电流100mA是安全的” 这个关点对错,我们不谈。

就这个点亮方式来讲,风险大,操作复杂,还没太大意义。

既然已经对单片机有了要求“需要强推挽输出”,不如多点限制,比如,直接用STC8 系列(当然其他品牌单片机也都可以)。 IO用 上拉 + 开漏方式,来驱动共阴数码管。 就能直接用标准的 动态扫描方式来驱动, 也不需要 限流电阻,还安全可靠。
回复

使用道具 举报

5#
ID:235691 发表于 2022-10-7 14:12 | 只看该作者
给个网址看看,数码管不要限流电阻

【新提醒】开源基于STC单片机内部基准mini电压表—极简设计创新制作 - 单片机DIY制作  http://www.51hei.com/bbs/dpj-56990-1.html
回复

使用道具 举报

6#
ID:888148 发表于 2022-10-7 22:38 | 只看该作者
连限流电阻都舍不得加?步至于省到这程度吧
回复

使用道具 举报

7#
ID:491577 发表于 2022-10-8 07:50 | 只看该作者
蓝魄 发表于 2022-10-7 08:28
正反扫数码管,4位数码管共8只脚;前提是扫描IO口需要支持 高阻态-高电平-低电平

只有6脚3位数码管,8脚4位数码管找不到,7脚4位数码管有少量。STC单片机IO有三态直接驱动数码管没有问题,驱动时注意让各个IO轮流导通,每次导通小于1ms就可以。

1.jpg (247.55 KB, 下载次数: 44)

1.jpg

2.png (44.78 KB, 下载次数: 43)

2.png
回复

使用道具 举报

8#
ID:491577 发表于 2022-10-8 08:24 | 只看该作者
加限流电阻更安全,但是1个电阻要至少2分钱,再加2个焊点2分钱,最少需要4个限流电阻0.16元。对于大批量产品来说是需要考虑的,不用限流电阻的确有风险但程序调试好后就没有问题,这对于大批量产品来说不是问题,省钱更重要,当然对于DIY来说的确没必要。地板说:IO用 上拉 + 开漏方式,来驱动共阴数码管,也可以,但是上拉电阻大约有4K太大,数码管不够亮,如果不在意亮度可以用。用推挽驱动数码管是超亮的。如果是3位数码管有单边脚6脚3位数码管更省IO,也有7脚4位数码管,太贵不建议。
回复

使用道具 举报

9#
ID:1034262 发表于 2022-10-8 10:46 | 只看该作者
玩玩可以,做产品就要谨慎了。
另外楼主说一次只点亮1个LED,分32次扫描,要知道,亮度跟平均电流有关,1/32的平均电流就很小了,亮度会严重不够的。4个数码管,要比较大的电流,位控可以用一个三极管即可,段码串联电阻限流,8段总电流不超过60mA比较安全。
MCU擅长处理事务,不擅长大电流驱动(MCU带LED驱动的例外,比如STC部分MCU)。
回复

使用道具 举报

10#
ID:624769 发表于 2022-10-8 11:12 来自手机 | 只看该作者
hhh402 发表于 2022-10-8 08:24
加限流电阻更安全,但是1个电阻要至少2分钱,再加2个焊点2分钱,最少需要4个限流电阻0.16元。对于大批量产 ...

你做过测试么?4位数码管,段码4k上拉,动态扫描5ms点亮一位,20ms一循环,亮度是足够亮的。而你那种短时过压过流点亮法,是在消耗LED寿命,你点1个月看看,要么有的段不亮了,要么就开始光衰了。
回复

使用道具 举报

11#
ID:401564 发表于 2022-10-8 11:33 | 只看该作者
怎么会有这问题呢?

"可不可以用单片机IO直接驱动呢?"
这个肯定可以的呀,难道网上那么多电路,就没有一个是直接用IO驱动数码管的吗?答案是有的
"89C52单片机没有推挽输出不可以直接驱动4位数码管。"
不知道你这是什么意思,编程是个严谨的东西
有没有推挽输出跟直接驱动数码管,是没有绝对关系的
89C52一定是可以不用驱动IC就可以驱动数码管的,数据端口加上拉电阻就可以了

"一、首先是驱动电流问题"
你分析得一点都没道理,"也就是说IO口瞬间1ms以内输出100ma电流是安全的",这谁告诉你的呀,如果我通电时间1.1mS是不是就不安全了,那1.09mS呢?
"MOS管最大瞬间电流至少是额定电流5倍",这是谁告诉你的呀,这是个经验值,并不是STC单片机的数据手册,数据手册上写了多少,就是多少,没有写的,都是你"估计的","认为的",都不能作为参数使用
对于STC89C52,它没有推挽输出模式,压根就不存在输出电流过大的问题
对于现在新出高亮度的数码管,STC89C52的10uA电流直接就可以驱动了,不用上拉,也不用推挽输出,实际使用过的,绝对OK,小个数码管,我还觉得它太刺眼了呢,LED驱动要10mA电流,这都不知道是多少年前的教材了........

对于新的STC8G,STC8A,STC8H,它们内部都是有内置上拉电阻的,不需要另外加上拉电阻,直接就是12个IO控制一个4位数码管了,什么都不要,只要把输出模式设置为传统8051模式和启用内部上拉电阻就可以了
回复

使用道具 举报

12#
ID:491577 发表于 2022-10-8 13:20 | 只看该作者
回复10#,
一、1ms安全就是1ms以内安全,至于超过1ms是否安全我没说你自己判断,就如一个产品保质期1年,1年多1天或者多1个月产品就一定会坏吗?我的理解是1年内保证产品没有问题,超过1年不管,不论好坏都无所谓。按你的说法单片机IO最大电流20ma,那21ma或者25ma一定会烧管脚吗?
二、MOS管最大瞬间电流至少是额定电流5倍,这的确是经验,我不觉得STC单片机的数据手册能够把所有数据写进去。没有写的就是错的?
三、数码管的亮度够不够每个人看法不一样,应该有部分人也觉得数码管要亮一点吧,不然为什么开发出高亮数码管呢?开发板LED限流电阻1K我就觉得不够亮,你觉得10uA是你的事情,我还是觉得10ma比较好,为什么没有人生产最大电流1ma的数码管而是都生产20ma的?
四、“对于新的STC8G,STC8A,STC8H,它们内部都是有内置上拉电阻的,不需要另外加上拉电阻,直接就是12个IO控制一个4位数码管了,什么都不要,只要把输出模式设置为传统8051模式和启用内部上拉电阻就可以了”-----你还是复习一下数码管动态扫描知识吧,上拉电阻是需要根据显示内容不断打开和关闭的,89C52加上拉电阻是不可以直接驱动4位数码管的,1位是可以。
回复

使用道具 举报

13#
ID:401564 发表于 2022-10-8 14:54 | 只看该作者
hhh402 发表于 2022-10-8 13:20
回复10#,
一、1ms安全就是1ms以内安全,至于超过1ms是否安全我没说你自己判断,就如一个产品保质期1年,1 ...

"你还是复习一下数码管动态扫描知识吧,上拉电阻是需要根据显示内容不断打开和关闭的,89C52加上拉电阻是不可以直接驱动4位数码管的"
嗯........好吧!你这个关于上拉电阻的使用方法说得非常好,而且,你这个数码管使用方法也非常好,简洁明了,妙不可言
收回我上面所有的话,我给你道歉:我错了,你说的都是对的,我说的全是错的,我以前做过的关于数码管的的项目都是错误的.
回复

使用道具 举报

14#
ID:451718 发表于 2022-10-8 18:43 | 只看该作者
hhh402 发表于 2022-10-8 08:24
加限流电阻更安全,但是1个电阻要至少2分钱,再加2个焊点2分钱,最少需要4个限流电阻0.16元。对于大批量产 ...

100r的排阻,大概2分钱一个,用两个就够8个段口限流了。
回复

使用道具 举报

15#
ID:213173 发表于 2022-10-8 20:56 | 只看该作者
就楼主“单片机驱动4位数码管最省的方案”而言是可行的。关键词是“最省”。不论是电路最省还是银子最省,只要硬件条件合适就能成功,不必质疑其可行性。超高亮数码管单笔段1mA电流就亮得刺眼。曾经用100K限流电阻+超高亮Φ3LED用于5V电源指示灯,亮度足够。有一些玩具,如荧光棒之类的产品,其本身就几乎是一次性的。玩过就扔。无需考虑耐久性,降低成本才是王道。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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