Python 实现两位数计数器 - 基于七段数码管
Python 实现两位数计数器 - 基于七段数码管
本程序利用 Python 语言,结合七段数码管的字形数据,设计并实现一个两位数计数器程序。该程序能够从 00 开始,依次计数到 99。
代码实现
import RPi.GPIO as GPIO
import time
# 定义数字 0-9 的字形
num = [[1, 1, 1, 1, 1, 1, 0], # 0
[0, 1, 1, 0, 0, 0, 0], # 1
[1, 1, 0, 1, 1, 0, 1], # 2
[1, 1, 1, 1, 0, 0, 1], # 3
[0, 1, 1, 0, 0, 1, 1], # 4
[1, 0, 1, 1, 0, 1, 1], # 5
[1, 0, 1, 1, 1, 1, 1], # 6
[1, 1, 1, 0, 0, 0, 0], # 7
[1, 1, 1, 1, 1, 1, 1], # 8
[1, 1, 1, 1, 0, 1, 1]] # 9
# 定义 GPIO 口
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(25, GPIO.OUT)
# 共阴极数码管显示函数
def show(num):
GPIO.output(17, num[0])
GPIO.output(18, num[1])
GPIO.output(27, num[2])
GPIO.output(22, num[3])
GPIO.output(23, num[4])
GPIO.output(24, num[5])
GPIO.output(25, num[6])
# 显示两位数函数
def show_num(n):
n1 = n // 10
n2 = n % 10
for i in range(50):
show(num[n1])
time.sleep(0.001)
show(num[n2])
time.sleep(0.001)
# 计数函数
def count():
for i in range(100):
show_num(i)
# 主函数
if __name__ == '__main__':
count()
GPIO.cleanup()
代码说明
- 字形定义: 程序首先定义了数字 0-9 的字形数据,每个数字对应一个长度为 7 的列表,列表中的每个元素表示七段数码管的对应段是否点亮 (1 表示点亮,0 表示熄灭)。
- GPIO 口定义: 程序定义了树莓派上的 GPIO 口,并设置为输出模式。GPIO 口的具体编号可能因树莓派型号和连接方式而异。
- 显示函数:
show(num)函数用于控制七段数码管显示指定的数字。该函数根据传入的数字列表,逐个控制对应 GPIO 口的输出状态。 - 两位数显示函数:
show_num(n)函数用于显示两位数。该函数将输入的两位数分解为十位和个位,然后循环调用show()函数分别显示十位和个位。 - 计数函数:
count()函数用于实现计数功能。该函数循环遍历从 0 到 99 的所有数字,并调用show_num()函数显示每个数字。 - 主函数: 主函数
if __name__ == '__main__':部分调用count()函数执行计数过程,并最后清理 GPIO 口。
使用说明
- 将代码保存为 Python 文件 (例如
counter.py)。 - 确保树莓派已安装
RPi.GPIO库,可以使用pip install RPi.GPIO命令安装。 - 连接七段数码管到树莓派的 GPIO 口,并确保连接方式正确。
- 在树莓派终端中运行 Python 文件:
python counter.py。
注意事项
- 请根据您的树莓派型号和连接方式,修改代码中 GPIO 口的编号。
- 代码中使用了
time.sleep()函数控制显示速度,您可以根据需要调整延时时间。 - 该程序仅演示了基本的计数功能,您可以根据需要对其进行扩展,例如添加显示时间、温度等信息。
原文地址: https://www.cveoy.top/t/topic/m3YH 著作权归作者所有。请勿转载和采集!