bodasister 发表于 2018-1-20 10:26:48

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

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


https://wx4.sinaimg.cn/mw690/97299e4bly1fnmudflrwxj206z04nq2w.jpg

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

数码管引脚
        a--g对应X1—X7
         dp接X8
      1—4对应Y9—Y12

fritzing接线图
https://wx3.sinaimg.cn/mw690/97299e4bly1fnmudiizmkj21kw0o3ah1.jpg
程序源代码:

   
import pyb
from pyb import Pin

#数码管a~g dp对应的开发板引脚
d_Pins=]
#数码管位段1 2 3 4对应的引脚
w_Pins=]

number={
'0':
,#0
'1':
,#1
'2':
,#2
'3':
,#3
'4':
,#4
'5':
,#5
'6':
,#6
'7':
,#7
'8':
,#8
'9':
,#9
}

def display(num,dp):
    global number
    count=0
    for pin in d_Pins:#显示num的值
      pin.value(number)
      count+=1
    if dp==1:
      d_Pins.value(0)
def clear():
    for i in w_Pins:
      i.value(0)
    for i in d_Pins:
      i.value(1)
def showData(num):
    #分割出数值的百位、千位、个位和小数位的值
      d_num=num
      location=d_num.find('.')
      if location>0:
                d_num=d_num.replace('.','')
                while len(d_num)<4:
                        d_num='0'+d_num
                for i in range(0,4):
                        pyb.udelay(2000)
                        clear()
                        w_Pins.value(1)
                        if i==location-1:
                              display(d_num,1)
                        else:
                              display(d_num,0)
      if location<0:
                for i in range(0,4):
                        pyb.udelay(2000)
                        clear()
                        w_Pins.value(1)
                        display(d_num,0)
while True:

      num='9.601'
      showData(num)
页: [1]
查看完整版本: 新手必看Micropython四位数码管显示原理