找回密码
 立即注册

QQ登录

只需一步,快速开始

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

像这样的数码管有5个脚出来,规格书也没写管脚的功能那直接接MCU的IO就可以驱动吗?...

  [复制链接]
跳转到指定楼层
楼主
像这样的数码管有5个脚出来,规格书也没写管脚的功能那直接接MCU的IO就可以驱动吗?不需要知道电源和GND脚?阳极和阴极不断的给高低电平就可以驱动是吧?

数码管.png (276.72 KB, 下载次数: 0)

数码管.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶顶 踩踩
回复

使用道具 举报

沙发
ID:88256 发表于 2026-11-7 14:04 | 只看该作者
一名设计人员竟然问出这么幼稚的问题,单管芯LED能够承受多大的电流不知道吗?数码管哪来的电源和GND脚?电路图都给出来了,万用表再核对一下很难吗?
回复

使用道具 举报

板凳
ID:155507 发表于 2026-11-7 14:52 | 只看该作者
在一些低档消费电子产品中常见一种单排5脚188数码管。由于这种数码管内部结构异于常见的数码管。商家提供的内部LED与引脚关系图看上去感觉杂乱无章。仔细研究一番其实就是一种矩阵连接关系,将原图重新排列一下就可以明显看出来就是一种矩阵连接关系。既可以共阴方式驱动也可以共阳方式驱动。一次最多可以点亮4个笔段。本例以共阴方式驱动。如果单片机端口以推挽模式+限流电阻驱动这种数码管,由于需要点亮的笔段数不确定,随亮点数多少不同亮度会不均匀。如果单片机引脚直接连接数码管又有过流损坏单片机端口的风险。为此利用新型单片机端口的开漏模式和内置上拉电阻,按需要点亮的笔段使能上拉电阻提供驱动电流。作为当前用作共阴的端口置低电平,不论需要点亮的笔段多少,各笔段亮度一致。5脚188数码管共16个笔段,需要分4次才能完成全部笔段扫描。由此制作一个表格,将8位标准段码拆解为5位驱动码。实践证明:数码管亮度能够满足大多数应用场景,并且无鬼影。单排6脚1888数码管驱动方法类推。

  1. //5脚188数码管驱动程序示例
  2. //使用STC8H1K08单片机
  3. #include <STC8H.H>
  4. #include <intrins.h>
  5. #define uchar unsigned char
  6. #define uint  unsigned int

  7. uchar code table[]={//共阴数码管段码0~f
  8. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  9. 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  10. uchar data dis_buf[4];       //显示缓存

  11. uint count;                  //计数
  12. uchar num;                   //计数
  13. uchar w1,w2,w3;              //数码管位
  14. bit flag;                    //中断标志

  15. void Timer0_Init();          //初始化定时器0
  16. void display();              //显示函数

  17. //主函数
  18. void main()
  19. {//端口模式初始化        
  20.         P1M0 = 0x1f;P1M1 = 0x1f; //P1.0~1.4开漏,其余准双向
  21.         P3M0 = 0x00;P3M1 = 0x00; //准双向
  22.         P5M0 = 0x00;P5M1 = 0x00; //准双向
  23.         P_SW2 |= 0x80;           //打开扩展存储器
  24.         Timer0_Init();           //初始化定时器0
  25.         while(1)
  26.         {
  27.                 if(flag)
  28.                 {
  29.                         flag=0;           //周期5ms
  30.                         display();        //显示函数
  31.                         if(++count>=100)  //0.5s
  32.                         {
  33.                                 count=0;
  34.                                 if(++num>199)num=0;
  35.                                 if(num>=100)w1=table[1];
  36.                                 else w1=0x00; //不显示
  37.                                 w2=table[num/10%10];
  38.                                 w3=table[num%10];
  39.                         }
  40.                 }
  41.         }
  42. }

  43. void Timer0_Isr(void) interrupt 1
  44. {
  45.         flag=1;
  46. }

  47. void Timer0_Init(void)                //5毫秒@11.0592MHz
  48. {
  49.         AUXR |= 0x80;           //定时器时钟1T模式
  50.         TMOD &= 0xF0;           //设置定时器模式
  51.         TL0 = 0x00;             //设置定时初始值
  52.         TH0 = 0x28;             //设置定时初始值
  53.         TF0 = 0;                //清除TF0标志
  54.         TR0 = 1;                //定时器0开始计时
  55.         ET0 = 1;                //使能定时器0中断
  56.         EA  = 1;                //使能总中断
  57. }

  58. //数码管显示函数
  59. void display()
  60. {
  61.         static uchar i=0;        
  62.         switch(i)
  63.         {/*************************5位***********4位**********3位**********2位**********1位***********/
  64.                 case 0: dis_buf[0]=(w3>>2&0x10)|(w3>>2&0x08)|(w3>>1&0x04)|(w3<<0&0x02)|(0 /*COM1*/); break;
  65.                 case 1: dis_buf[1]=(w2>>0&0x10)|(w2<<0&0x08)|(w2<<1&0x04)|(0 /*COM2*/)|(w3>>0&0x01); break;
  66.                 case 2: dis_buf[2]=(w2>>1&0x10)|(w2<<1&0x08)|(0 /*COM3*/)|(w2<<1&0x02)|(w3>>2&0x01); break;
  67.                 case 3: dis_buf[3]=(w2>>2&0x10)|(0 /*COM4*/)|(w1<<1&0x04)|(w1>>1&0x02)|(w3>>4&0x01); break;
  68.         }
  69.         P1|=0x1f;               //P1.0~1.4高电平(开漏无输出)
  70.         P1PU=dis_buf[i];        //按位使能上拉电阻提供高电平驱动电流
  71.         P1&=~(0x01<<i);         //按COM位提供低电平共地驱动电流回路,其它位保持开漏高电平
  72.         i=++i%4;                //循环计数
  73. }

复制代码
回复

使用道具 举报

地板
ID:1133081 发表于 2026-11-7 15:02 | 只看该作者
回复

使用道具 举报

5#
ID:69038 发表于 2026-11-7 15:08 | 只看该作者
就图中这个资料,已经够用了:逻辑图、效果图、尺寸图,该给的都给了。。。
回复

使用道具 举报

6#
ID:460466 发表于 2026-11-7 15:30 | 只看该作者
hhdsdy 发表于 2026-11-7 14:04
一名设计人员竟然问出这么幼稚的问题,单管芯LED能够承受多大的电流不知道吗?数码管哪来的电源和GND脚?电 ...

难者不会会者不难,您讲清楚原理最好。师者应该是诲人不倦,,,,
回复

使用道具 举报

7#
ID:460466 发表于 2026-11-7 15:33 | 只看该作者
上下两行数字是不是表示引脚位置?
回复

使用道具 举报

8#
ID:1133081 发表于 2026-11-7 16:01 | 只看该作者
楼主电路图中红框内标号错误



回复

使用道具 举报

9#
ID:592807 发表于 2026-11-7 17:21 | 只看该作者
这个不是数码管是断码屏  2断码屏最好使用专门的驱动芯片
回复

使用道具 举报

10#
ID:592807 发表于 2026-11-7 17:22 | 只看该作者
hhdsdy 发表于 2026-11-7 14:04
一名设计人员竟然问出这么幼稚的问题,单管芯LED能够承受多大的电流不知道吗?数码管哪来的电源和GND脚?电 ...

他可能不知道断码屏是啥
回复

使用道具 举报

11#
ID:668004 发表于 2026-11-8 09:24 | 只看该作者
有用过查理复用的吗    直接接MCU的IO就可以了吧
回复

使用道具 举报

12#
ID:1034262 发表于 2026-11-8 10:45 | 只看该作者
基础知识真的要加强下,先去了解一下发光二极管,了解一下什么是LED数码管。
数码管内部电路都给出来了,还要什么规格书?
回复

使用道具 举报

13#
ID:1167595 发表于 2026-11-8 11:00 | 只看该作者
参考前人研究的资料:

两位半5引脚LED数码管研究.pdf

817.73 KB, 下载次数: 0

回复

使用道具 举报

14#
ID:102168 发表于 2026-11-8 13:27 | 只看该作者
前面有人发过帖子的,自己搜一下“188”就好。
回复

使用道具 举报

15#
ID:1064915 发表于 2026-11-8 14:19 | 只看该作者
查理复用,也常见
回复

使用道具 举报

16#
ID:1146155 发表于 2026-11-8 14:21 来自触屏版 | 只看该作者
QWE4562012 发表于 2026-11-8 09:24
有用过查理复用的吗    直接接MCU的IO就可以了吧

是的,亮度的话程序可以调或者串电阻
回复

使用道具 举报

17#
ID:88256 发表于 2026-11-8 14:53 | 只看该作者
海阔天空8 发表于 2026-11-7 15:30
难者不会会者不难,您讲清楚原理最好。师者应该是诲人不倦,,,,

楼主不是初学者而是设计人员,还需要别人教基础知识吗?大学教授需要你去教他认识英文的26个字母吗?
回复

使用道具 举报

18#
ID:1128898 发表于 2026-11-8 16:26 来自触屏版 | 只看该作者
记得电源
回复

使用道具 举报

19#
ID:668004 发表于 2026-11-8 19:27 | 只看该作者
angmall 发表于 2026-11-7 14:52
在一些低档消费电子产品中常见一种单排5脚188数码管。由于这种数码管内部结构异于常见的数码管。商家提供的 ...

非常感谢你的回复  
回复

使用道具 举报

20#
ID:668004 发表于 2026-11-8 19:27 | 只看该作者
angmall 发表于 2026-11-7 14:52
在一些低档消费电子产品中常见一种单排5脚188数码管。由于这种数码管内部结构异于常见的数码管。商家提供的 ...

意思是可以直接连接MCU的IO口咯
回复

使用道具 举报

21#
ID:668004 发表于 2026-11-8 19:29 | 只看该作者
海阔天空8 发表于 2026-11-7 15:33
上下两行数字是不是表示引脚位置?

您好  不是的  这个数字只是用来内部LED个数的表达  很多阳极和阴极是连接在一起的  因此就是所谓的共用笔段
回复

使用道具 举报

22#
ID:668004 发表于 2026-11-8 19:29 | 只看该作者
黄youhui 发表于 2026-11-7 17:21
这个不是数码管是断码屏  2断码屏最好使用专门的驱动芯片

是数码管不是断码屏的
回复

使用道具 举报

23#
ID:668004 发表于 2026-11-8 19:30 | 只看该作者
WL0123 发表于 2026-11-7 16:01
楼主电路图中红框内标号错误

错在哪里   啥意思  
回复

使用道具 举报

24#
ID:668004 发表于 2026-11-8 19:42 | 只看该作者
发表于 2026-11-8 11:00
参考前人研究的资料:

非常感谢非常有价值
回复

使用道具 举报

25#
ID:668004 发表于 2026-11-8 19:43 | 只看该作者
海阔天空8 发表于 2026-11-7 15:30
难者不会会者不难,您讲清楚原理最好。师者应该是诲人不倦,,,,

没关系   谢谢你  我们一辈子 会遇到各种人  有些  算了  不说了  免得爆粗口
回复

使用道具 举报

26#
ID:668004 发表于 2026-11-8 19:46 | 只看该作者
WL0123 发表于 2026-11-7 15:02
http://www.51hei.com/bbs/dpj-242526-1.html

非常感谢你   也是很有价值的参考  
回复

使用道具 举报

27#
ID:668004 发表于 2026-11-8 19:47 | 只看该作者
黄youhui 发表于 2026-11-7 17:22
他可能不知道断码屏是啥

纠正下你  段码屏  不是断码屏  老弟
回复

使用道具 举报

28#
ID:582276 发表于 2026-11-8 22:53 | 只看该作者
上网搜一下“查理复用LED”,网上有不少的例程,好多是直接用MCU的IO口直接驱动,有些加100R的限流电阻有些不加,加不加要看IO口的性能了。
回复

使用道具 举报

29#
ID:1133081 发表于 2026-11-9 07:38 | 只看该作者
QWE4562012 发表于 2026-11-8 19:30
错在哪里   啥意思

楼主难道没有发现你图中这两个LED一个缺标号一个标号重复?


回复

使用道具 举报

30#
ID:88256 发表于 2026-11-9 08:26 | 只看该作者
QWE4562012 发表于 2026-11-8 19:43
没关系   谢谢你  我们一辈子 会遇到各种人  有些  算了  不说了  免得爆粗口

那你就爆吧,一名设计人员,连驱动LED都不知道要不要串电阻、IO能不能直接驱动都搞不清楚,还得发帖询问,气性还这么大,就这查理复用,不要说搜索,我在本论坛纯看帖子就看到几回了,为什么你看不到?我只是一名电子爱好者,我却知道流过LED的电流应该控制在多少合适,也懂得查询单片机IO口可以承受的电流是多大。
上下两行数字本来就是代表管脚的,怎么可能是LED的个数?你的万用表是用来当收藏品的吗?曾经网购过一个16安的时控器,页面介绍控制LED灯时只能100W以下,离谱吗?到手拆盖看继电器,竟然是30A的,30A的继电器被要求控制100W以下的LED负载,想想现在的设计人员是多么的厉害。
回复

使用道具 举报

31#
ID:996773 发表于 2026-11-9 15:54 | 只看该作者
976个提问帖子楼主就是来秀存在感的,别当真,他能写出查理复用的驱动程序那会有闲工夫干到976个提问,连正儿八经的逐个扫描数码管程序都写不出来还写查理复用,想多了,过几天他提问就破千了,正好
看看满一千问的啥问题

评分

参与人数 1黑币 +15 收起 理由
hhdsdy + 15 很给力!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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