上一帖中我们用小安派点亮了流水灯,这次我们同样使用小安派,通过画的拓展板引出的IO口,点亮一个一位七段数码管依然是PikaPython
这种就是我们今天使用的一位数码管。它的内部也是LED,七个显示字段的LED和一个小数点,总共是八个LED
要注意的是数码管有共阴和共阳两种,要注意区分。
上图是共阴(Common Cathode)数码管,它们的负极都接到了地成为公共端。当我们给某一段一个高电平时,这一段就会点亮。
将每一段的引脚连接到小安派的IO口,就能够控制数码管显示的内容了。我使用的就是共阴数码管。
这张图是共阳(Common Anode)数码管。它们的正极都接到了电源+5V,当我们给对应段一个低电平(或者接到地)时,这一段LED就会点亮。当给一个高电平时这一段就会熄灭。在后面的编程中它的段码和共阴数码管是反过来的。
看完了原理,来看看怎么接线吧!
七段数码管有七个控制段的引脚,分别对应a,b,c,d,e,f,g段,还有一个小数点。中间两个公共端接一个到地就可以了。
注意每个段的引脚上要接限流电阻,我接的是510Ω的电阻。千万不能不接,会烧坏的。如果想偷懒的话,在公共端接一个限流电阻也不是不行。
- import PikaStdDevice
- import time
- a = PikaStdDevice.GPIO()
- b = PikaStdDevice.GPIO()
- c = PikaStdDevice.GPIO()
- d = PikaStdDevice.GPIO()
- e = PikaStdDevice.GPIO()
- f = PikaStdDevice.GPIO()
- g = PikaStdDevice.GPIO()
- dot = PikaStdDevice.GPIO()
- a.setPin('P3')
- b.setPin('P23')
- c.setPin('P24')
- d.setPin('P25')
- e.setPin('P26')
- f.setPin('P27')
- g.setPin('P28')
- dot.setPin('P29')
- a.setMode('out')
- b.setMode('out')
- c.setMode('out')
- d.setMode('out')
- e.setMode('out')
- f.setMode('out')
- g.setMode('out')
- dot.setMode('out')
- a.enable()
- b.enable()
- c.enable()
- d.enable()
- e.enable()
- f.enable()
- g.enable()
- dot.enable()
- number_led = [a, b, c, d, e, f, g, dot]
- number_dict = {
- 0: "11111100",
- 1: "01100000",
- 2: "11011010",
- 3: "11110010",
- 4: "01100110",
- 5: "10110110",
- 6: "10111110",
- 7: "11100000",
- 8: "11111110",
- 9: "11110110",
- 10:"01101110",
- 11:"10011110",
- 12:"00011100",
- 13:"00011100",
- 14:"11111100"
- }
- def show_number(number):
- if number_dict.get(number):
- i = 0
- for bit in number_dict.get(number):
- if bit == "1":
- number_led[i].high()
- else:
- number_led[i].low()
- i += 1
- while True:
- for i in range (0,15):
- show_number(i)
- time.sleep(0.2)
复制代码 我们给每一段分配一个管脚,设置为输出模式。number_dict这个字典中的就是不同内容对应的段码了。第一位是a,最后一位是小数点。想让哪一段亮,就将那一位置为1,反之置为0。比如数字7,是a,b,c三段点亮,所以它的段码就是11100000。想要显示其他内容也可以通过这种方法编写段码来显示。
最后看看效果吧
好啦,到这就结束啦。下一帖我们玩玩四位数码管!
|
|