查看: 3159|回复: 1

Micropython实例之TPYBoardv102位数码管显示实验

[复制链接]
  • TA的每日心情
    慵懒
    2018-1-6 09:01
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2018-6-19 16:44:50 | 显示全部楼层 |阅读模式
    分享到:
        所需原器件

        1   TPYBoard v102 一块
        2   四位数码管一个
        3   杜邦线若干
        4   面包板一块(为了接线方便,可不用)

        接线图
        四位数码管引脚图
    1.jpg
    2.jpg

        开发板与四位数码管针脚对应:
    3.png

        程序源代码:
    1. import pyb
    2. from pyb import Pin

    3. #数码管a~g dp对应的开发板引脚
    4. d_Pins=[Pin(i,Pin.OUT_PP) for i in ['X1','X2','X3','X4','X5','X6','X7','X8']]
    5. #数码管位段1 2 3 4对应的引脚
    6. w_Pins=[Pin(i,Pin.OUT_PP) for i in ['Y9','Y10','Y11','Y12']]

    7. number={
    8. '0':
    9. [0,0,0,0,0,0,1,1],#0
    10. '1':
    11. [1,1,1,1,0,0,1,1],#1
    12. '2':
    13. [0,0,1,0,0,1,0,1],#2
    14. '3':
    15. [0,0,0,0,1,1,0,1],#3
    16. '4':
    17. [1,0,0,1,1,0,0,1],#4
    18. '5':
    19. [0,1,0,0,1,0,0,1],#5
    20. '6':
    21. [0,1,0,0,0,0,0,1],#6
    22. '7':
    23. [0,0,0,1,1,1,1,1],#7
    24. '8':
    25. [0,0,0,0,0,0,0,1],#8
    26. '9':
    27. [0,0,0,0,1,0,0,1],#9
    28. }

    29. def display(num,dp):
    30.     global number
    31.     count=0
    32.     for pin in d_Pins:#显示num的值
    33.         pin.value(number[num][count])
    34.         count+=1
    35.     if dp==1:
    36.         d_Pins[7].value(0)
    37. def clear():
    38.     for i in w_Pins:
    39.         i.value(0)
    40.     for i in d_Pins:
    41.         i.value(1)
    42. def showData(num):
    43.     #分割出数值的百位、千位、个位和小数位的值
    44.     d_num=num
    45.     location=d_num.find('.')
    46.     if location>0:
    47.         d_num=d_num.replace('.','')
    48.         while len(d_num)<4:
    49.             d_num='0'+d_num
    50.         for i in range(0,4):
    51.             pyb.udelay(2000)
    52.             clear()
    53.             w_Pins[3-i].value(1)
    54.             if i==location-1:
    55.                 display(d_num[i],1)
    56.             else:
    57.                 display(d_num[i],0)
    58.     if location<0:
    59.         for i in range(0,4):
    60.             pyb.udelay(2000)
    61.             clear()
    62.             w_Pins[3-i].value(1)
    63.             display(d_num[i],0)
    64. while True:

    65.     num='9016'
    66.     showData(num)
    复制代码


    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 08:38 , Processed in 0.120875 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.