返回
用Python 点亮数码管显示时间,让时间变“芯”动
前端
2023-10-13 03:21:53
在电子世界的浩瀚星河中,七段数码管以其清晰易读的显示效果,成为嵌入式系统和电子产品中的常客。今天,让我们踏上用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)
# 延时 1 秒
time.sleep(1)
except KeyboardInterrupt:
# 清理 GPIO
GPIO.cleanup()
4. 点亮数码管
将代码烧录到微控制器后,连接好电路,就可以看到七段数码管上闪烁着跳动的数字,实时显示着时间。
5. 更进一步
通过这段代码,我们展示了七段数码管显示时间的原理。接下来,你可以尽情发挥你的创造力,实现更复杂的功能,例如:
- 添加按钮控制,调整时间
- 添加温度传感器,显示当前温度
- 创建倒计时或计时器
6. 结语
用Python 点亮七段数码管显示时间的旅程,让我们体验到了电子世界的神奇魅力。通过理解底层原理,我们不仅可以完成基础功能,更能激发无穷的想象力,打造出令人惊叹的电子项目。
愿这段代码成为你探索电子世界的起点,让我们共同点亮科技的未来!