新手必看 Micropython之四位数码管显示原理

2019-07-14 19:01发布

       原理非常简单,控制各个针脚的高低电平来显示数字,这里我用的是共阳的数码管。不过有一个问题,我第一次显示的时候代码输入数字是9.876不过数码管显示9.875,刚开始我以为代码错了,仔细检查了几遍没有问题。然后用putty跑了一下,打印出来的是9875999  。后来又试了几组数字有的正常显示有的最末尾会减一。求助各位大佬到底为什么?所需原器件1   TPYBoard v102 一块2   四位数码管一个3   杜邦线若干4   面包板一块(为了接线方便,可不用)接线图四位数码管引脚图



开发板与四位数码管针脚对应:
  数码管引脚  abcdefgdp1234TPYBoard开发板X1X2X3X4X5X6X7X8Y9Y10Y11Y12fritzing接线图
  程序源代码:

  1. [code]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='9.601'
  66.         showData(num)
复制代码
[/code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
bodasister
1楼-- · 2019-07-15 02:10
晓晓江南 发表于 2018-1-20 17:31
感谢分享,让我认识了Fritzing.

这个软件真的不错
晓晓江南
2楼-- · 2019-07-15 05:33
bodasister 发表于 2018-1-23 10:25
这个软件真的不错

虽然这套软件看上去不错,不过用不到,可是还是想问一下这套软件能仿真?

一周热门 更多>