返回

用Python 点亮数码管显示时间,让时间变“芯”动

前端

在电子世界的浩瀚星河中,七段数码管以其清晰易读的显示效果,成为嵌入式系统和电子产品中的常客。今天,让我们踏上用Python 点亮七段数码管的奇妙旅程,让时间不再只是冰冷的数字,而是跃动的光影。

1. 准备工作

踏上这趟征途,我们需要:

  • Raspberry Pi 或 Arduino 等微控制器
  • 74HC595 移位寄存器
  • 七段数码管
  • 跳线或面包板

2. 理解逻辑

七段数码管由七个独立的 LED 段组成,这些段以不同的组合显示数字。我们通过移位寄存器,将数据逐位发送到数码管,并通过适当的连接,让不同的段亮起,从而显示数字。

3. Python 代码

现在,让我们进入 Python 的神奇世界。以下代码将点亮七段数码管显示时间:

import time
import RPi.GPIO as GPIO

# GPIO 初始化
GPIO.setmode(GPIO.BCM)

# 设置数据引脚
dataPin = 17
# 设置时钟引脚
clockPin = 18
# 设置锁存引脚
latchPin = 27

# 设置引脚为输出模式
GPIO.setup(dataPin, GPIO.OUT)
GPIO.setup(clockPin, GPIO.OUT)
GPIO.setup(latchPin, GPIO.OUT)

# 数码管数字与 LED 段映射
digitMap = {
    0: 0b11111100,
    1: 0b01100000,
    2: 0b11011010,
    3: 0b11110010,
    4: 0b01100110,
    5: 0b10110110,
    6: 0b10111110,
    7: 0b11100000,
    8: 0b11111110,
    9: 0b11110110
}

# 主循环
try:
    while True:
        # 获取当前时间
        currentTime = time.strftime("%H:%M:%S")

        # 按位显示时间
        for digit in currentTime:
            # 将数字转换为二进制编码
            binaryDigit = digitMap[int(digit)]

            # 发送数据到移位寄存器
            for i in range(7):
                # 将最低位写入数据引脚
                GPIO.output(dataPin, binaryDigit & 1)
                # 时钟上升沿
                GPIO.output(clockPin, GPIO.HIGH)
                GPIO.output(clockPin, GPIO.LOW)
                # 移位数据
                binaryDigit >>= 1

            # 锁存数据
            GPIO.output(latchPin, GPIO.HIGH)
            GPIO.output(latchPin, GPIO.LOW)

        # 延时 1time.sleep(1)

except KeyboardInterrupt:
    # 清理 GPIO
    GPIO.cleanup()

4. 点亮数码管

将代码烧录到微控制器后,连接好电路,就可以看到七段数码管上闪烁着跳动的数字,实时显示着时间。

5. 更进一步

通过这段代码,我们展示了七段数码管显示时间的原理。接下来,你可以尽情发挥你的创造力,实现更复杂的功能,例如:

  • 添加按钮控制,调整时间
  • 添加温度传感器,显示当前温度
  • 创建倒计时或计时器

6. 结语

用Python 点亮七段数码管显示时间的旅程,让我们体验到了电子世界的神奇魅力。通过理解底层原理,我们不仅可以完成基础功能,更能激发无穷的想象力,打造出令人惊叹的电子项目。

愿这段代码成为你探索电子世界的起点,让我们共同点亮科技的未来!