python 模拟数码管,绘制数码管图像

python 模拟数码管,绘制数码管图像,可以调节共阴共阳

1、数码管编码表

# 定义共阳数码管的编码表 
table = [0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e]
# 定义共阴数码管的编码表 
table2 = [0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71]

2、绘制数码管

# author:兴于诗 CSDN
import matplotlib.pyplot as plt
import numpy as np
segments = {
    'A': [(0.45, 0.55), (0.74, 0.55), (0.69, 0.50), (0.5, 0.50)],
    'B': [(0.75, 0.54), (0.75, 0.26), (0.7, 0.29), (0.7, 0.49)],
    'C': [(0.75, 0.25), (0.75, 0), (0.7, 0.05), (0.7, 0.21)],
    'D': [(0.74, 0), (0.45, 0), (0.5, 0.05), (0.69, 0.05)],
    'E': [(0.44, 0), (0.44, 0.25), (0.49, 0.21), (0.49, 0.05)],
    'F': [(0.44, 0.26), (0.44, 0.54), (0.49, 0.49), (0.49, 0.29)],
    'G': [(0.45, 0.25),(0.5, 0.28), (0.69, 0.28),(0.74, 0.25), (0.69, 0.22), (0.5, 0.22)],
    'DP': [(0.8, 0.05), (0.85, 00.05), (0.85, 0.1), (0.8, 0.1)]
}
def draw_segment(ax, segment):
    x = [p[0] for p in segment]
    y = [p[1] for p in segment]
    ax.fill(x, y, 'red')
def draw_digit(value,type="LOW"):
    # HIGH:共阳
    # LOW:共阴
    if type=="LOW":
        pass
    elif type=="HIGH": 
        value=~value
    fig, ax = plt.subplots()
    ax.set_aspect('equal')
    ax.axis('off')
    for segment, state in zip(segments.keys(), [bool(value & (1 << i)) for i in range(8)]):
        if state:
            draw_segment(ax, segments[segment])
    plt.xlim(0, 1)
    plt.ylim(0, 1)
    plt.show()
# HIGH:共阳
# LOW:共阴

# 定义共阳数码管的编码表 
table = [0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e]
# # 定义共阴数码管的编码表 
# table = [0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71]

#=====测试======
#1、 生成数码管1图片
value = 0xF9
draw_digit(value,type="HIGH")

#2、 生成数码管1-9 a-F图片
for i in table:
    draw_digit(i,type="HIGH")

结果:

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值