wangshujun72 发表于 2024-10-28 21:37

在淘宝买了几个很小巧的数码管,测试了一下很有意思

<p>3位7段数字,带一个小数点和四个图标</p>

<p>6个引脚,分为两排,针距2.54,排距8.55,外径13mm,厚度4mm,很小巧</p>

<p>一开始以为是内置了芯片的模块,但是6个引脚又有点多,就买回来实际测试了一下发现是纯粹的io驱动,这样一来成本就很漂亮了</p>

<p>网上搜到的图纸和规格,基本和我手头的样品一致,买到的样品</p>

<div></div>

<p>找到的图纸资料</p>

<div>&nbsp;</div>

<div>&nbsp;</div>

<div>&nbsp;</div>

<div></div>

<div>&nbsp;</div>

<div>实物接线图,原本esp32打算用相连的六个引脚,实际测试2脚和5脚分别有上下拉,程序驱动前,会有微量的笔段,所以换成了0</div>

<div>led1----esp32-0</div>

<div>led2----esp32-5</div>

<div>led3----esp32-18</div>

<div>led4----esp32-23</div>

<div>led5----esp32-19</div>

<div>
<p>led6----esp32-22</p>

<div></div>

<p>下面是显示效果,没有做录像用手机拍摄闪的比较严重,肉眼看很清晰稳定,手机拍摄照片时效果也不好,这个是用慢速拍摄的,所以有点糊</p>
</div>

<div>
<div></div>

<p>&nbsp;</p>
</div>

<div>&nbsp;</div>

<p>&nbsp;</p>

wangshujun72 发表于 2024-10-28 21:44

<pre>
<code class="language-python">import time
from machine import Pin, I2C, Timer
#因为micropython的定时器回调时间精度有限,所以主程序中不能存在大延迟的原子操作。
#比如读写文件,大型流数据收发都会导致显示出现闪烁,这种数码管在micropython上驱
#动效果不理想,但是用来调试显示程序的逻辑还是非常方便的
#显示查找表,这个是按照单段显示优化的表格,缺点是效率较低,优点是显示亮度是均匀的
tab=[(4, 3), (5, 3), (0, 3), (1, 3), (2, 3), (3, 4), (5, 4),
   (0, 4), (1, 4), (2, 4), (3, 5), (4, 5), (0, 5), (1, 5),
   (2, 5), (3, 0), (4, 0), (5, 0), (1, 0), (2, 0), (3, 1),
   (3, 2), (0, 1), (2, 1), (4, 1), (5, 1)]
#数字笔段转换表
digi_seg=
#符号查找表
Symbol=["dot","v","w","%","om"]
#根据需要按照实际顺序调整
P_list=
seg=[]
count=0
d_buff=0
#显示实现完全在定时器回调中完成,每次中断显示一个笔段,总共26个段,
#刷新率25hz视觉上有点闪烁,50hz(定时器频率1300)视觉上比较完美
def t_cb(tim):
    global count, P_list, tab, d_buff
    P_list].init(mode=Pin.IN, pull=None)
    P_list].init(mode=Pin.IN, pull=None)
    count+=1
    if count&gt;=26:
      count=0
    if d_buff&amp;(1&lt;&lt;count):
      P_list].value(1)
      P_list].init(mode=Pin.OUT)
      P_list].value(0)
      P_list].init(mode=Pin.OUT)
tim1 = Timer(1)
tim1.init(freq=1300, mode=Timer.PERIODIC, callback=t_cb)
#设置一个启动全亮动作
d_buff=0xffffffff
time.sleep(0.6)
d_buff=0
time.sleep(0.2)
#生成显示的排列内容
def gen_seg(digi,string):
    global d_buff
    d_buff=0
    #判断传入的字符串包含哪些符号,并作出显示
    for s in range(5):
      if Symbol in string:
            d_buff += 1&lt;&lt;(21+s)
    #个位
    i=digi%10
    d_buff += digi_seg&lt;&lt;14
    #十位
    t=digi//10%10
    #如果小数点不是点亮的,则前两位为0不显示
    if not ((d_buff&amp;(1&lt;&lt;21))==0 and digi//10 == 0):
      d_buff += digi_seg&lt;&lt;7
    #百位,大于999的高位被截掉
    p=digi//100%10
    #如果为0不显示
    if p != 0:
      d_buff += digi_seg
#以下是显示调用的例子,数字不包含小数点发送到第一个变量,需要显示的符号加到字符串里面显示,符号顺序无关
for i in range(110):   
    gen_seg(i,"vdot")
    time.sleep(0.05)
time.sleep(0.6)
d_buff=0
for i in range(110):   
    gen_seg(i,"w")
    time.sleep(0.05)
time.sleep(0.6)
d_buff=0

</code></pre>

<p>测试程序</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

wangshujun72 发表于 2024-10-28 21:48

wangshujun72 发表于 2024-10-28 21:44
import time
from machine import Pin, I2C, Timer
#因为micropython的定时器回调时间精度有限,所以主 ...

<div><br />
<br />
<br />
<br />
<br />
<br />
&nbsp;</div>

wangshujun72 发表于 2024-10-28 21:49

wangshujun72 发表于 2024-10-28 21:48
&nbsp;

<p>混一点下载积分,大家应该都有吧</p>

Jacktang 发表于 2024-10-29 07:29

<p>数码管封装的越来越好用了</p>

极限零 发表于 2024-10-29 08:47

<p>直接连管脚吗,都不用加个电源或来个上拉吗,这功耗这么低的吗</p>

wangerxian 发表于 2024-10-29 08:59

<p>6根引脚就能驱动,引脚还复用,这想法是挺有意思的。</p>

秦天qintian0303 发表于 2024-10-29 09:10

<p>看着挺小的,是不是那种保温杯里的显示温度的那种数码管?</p>

Verifone 发表于 2024-10-29 15:34

<p>有点意思,看起来很小巧啊,用在小玩具上也不错</p>

freebsder 发表于 2024-10-29 16:42

<p>这个原本是哪个产品上的?看着 还有百分比,欧姆符号</p>

wangshujun72 发表于 2024-10-29 17:15

<p>不知道,淘宝看到3元10个,就买了测试一下,估计是回收货拿来卖的</p>

<p>个头比保温杯的显示感觉更小,搜了一下类似的一般单个价格在3块左右</p>

<p>&nbsp;</p>

wangshujun72 发表于 2024-10-30 12:26

本帖最后由 wangshujun72 于 2024-10-30 12:29 编辑

<div>测试了多段显示模式,减少了中断次数,显示闪烁明显降低,至少手机拍摄能进行了</div>

<div>同时显示共阳的一个组,会随着同时限量的笔段数量出现亮度的差异,视觉上能接受,不算明显</div>

<div>&nbsp;</div>

<div></div>

<p>&nbsp;</p>

<p>17879baf8249b60e5a234aed98607203<br />
&nbsp;</p>

<p>&nbsp;</p>

se7ens 发表于 2024-10-31 18:08

<p>有点创新技术啊,6个IO口可以带动这么多LED,这样有点费驱动啊</p>

wangshujun72 发表于 2024-11-1 11:04

<p>还可以软件压力不大,罗嗦点,但是实际执行压力很小,如果用c实现效率会很高。</p>

<p>程序比传统数码管罗嗦一点,但是对于最终调用没啥区别,驱动三位数码管节省5个io,对于小封装的mcu还是很有吸引力的</p>

hjl2832 发表于 2024-11-1 12:29

<p>2个脚的双色LED也是这个原理,就是管脚通过正反向来点亮不同的LED。这种数码管不像通用数码管那种有公共端,所以以前的通用数码管驱动IC也点不了这种管子,还得是单片机来驱动。</p>

dcexpert 发表于 2024-11-1 14:02

<p>这种不错,用在DIY上很好。</p>

ljg2np 发表于 2024-11-1 15:24

<p>还挺不错的,不知道是在什么开发板上用microPython实现的。</p>

wangshujun72 发表于 2024-11-1 17:13

<p>esp32板子做的测试,就用到了gpio和定时器,切换到不同的板子基本不需要做改变</p>

wangshujun72 发表于 2024-11-1 17:32

freebsder 发表于 2024-10-29 16:42
这个原本是哪个产品上的?看着 还有百分比,欧姆符号

<p>符号是表面的一个贴膜,可以拆下来,残胶用酒精可以洗掉,这样如果自己做面板符号就可以任意换了,符号位置是长方形的发光区,差不多可以照亮2个字母的区间</p>

foxglove 发表于 2024-11-3 21:13

这个怎么卖的,可以做什么?
页: [1] 2
查看完整版本: 在淘宝买了几个很小巧的数码管,测试了一下很有意思