树莓派23/100 - Pico七段数码管显示倒计时

本文介绍了如何使用树莓派Pico的GPIO引脚控制八段数码管显示数字0到9的段选码,实现了一个优雅的倒计时功能,从9递减到0。通过实例代码展示了如何连接电路、设置限流电阻,并优化了代码结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

电子表显示数字0到9,只有7个笔划,所以市面上常见七段数码管,右下角再附加一个表示小数点的灯管也不麻烦,所以更常见的是八段数码管了。

在这里插入图片描述
我手里有一支8段数码管,编号为5611BS,是共阳极的,它有10个引脚,左下角算第1针,第3、8针接3.3V,其它针接GPIO引脚。如果某个引脚电压为0时,LED亮。

在这里插入图片描述

原理基本懂了,电路连起来,为了不把自己搞乱,我把Pico的GP12 ~ GP19与八段管的8个引脚对应连接,为了不烧坏LED,每个引脚都接上了限流电阻。

在这里插入图片描述

实际连线有点乱:
在这里插入图片描述

代码简单而粗暴,直接点亮8段管。

import machine
import utime

a = machine.Pin(17, machine.Pin.OUT)
b = machine.Pin(16, machine.Pin.OUT)
c = machine.Pin(14, machine.Pin.OUT)
d = machine.Pin(13, machine.Pin.OUT)
e = machine.Pin(12, machine.Pin.OUT)
f = machine.Pin(18, machine.Pin.OUT)
g = machine.Pin(19, machine.Pin.OUT)
dp = machine.Pin(15, machine.Pin.OUT)

a.value(0)
b.value(0)
c.value(0)
d.value(0)
e.value(0)
f.value(0)
g.value(0)
dp.value(0)

代码有点丑?用python的列表推导语法改写一下:

import machine
import utime

pins = [machine.Pin(id, machine.Pin.OUT) for id in [17, 16, 14, 13, 12, 18, 19, 15]]
for pin in pins:
    pin.value(0)

现在要显示数字0到9了,如果每个笔划选中为1,未选中为0,则数字0到9可以分别用一个字节的“段选码”表示。
在这里插入图片描述
现在可以写一个比较优雅的倒计时器了,从9开始,倒数到0停止。

import machine
import utime

pins = [machine.Pin(id, machine.Pin.OUT) for id in [17, 16, 14, 13, 12, 18, 19, 15]]

def show(code):
    for i in range(0, 8):
        pins[i].value(~code & 1)
        code = code >> 1

# 0到9的段选码
mask_digits = [0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f]
for code in reversed(mask_digits):
    show(code)
    utime.sleep(1)

视频效果:

树莓派Pico上用八段数码管显示9到1的倒计时数字

推荐阅读:
树莓派Pico开发系列文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

申龙斌

撸代码来深夜,来杯咖啡钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值