初学Python,试着将以前在树莓派上用C语言写的程序改成了Python版本的。四位共阴数码管与树莓派的电路连接方式如下:
a~p------------------------------GPIO0~GPIO7
d1~d4-----------------------------GPIO11~GPIO8
下面是电路连接好之后的照片:
连接好电路之后写程序,程序代码如下:
0~9
pins=[11,12,13,15,16,18,22,7,3,5,24,26]
bits=[BIT0,BIT1,BIT2,BIT3]
defprint_msg():
print'Programisrunning'
print'PleasepressCtrl+Ctheprogram'
defdigitalWriteByte(val):
(11,val(0x010))
(12,val(0x011))
(13,val(0x012))
(15,val(0x013))
(16,val(0x014))
(18,val(0x015))
(22,val(0x016))
(7,val(0x017))
defdisplay_1():
(BIT0,)
foriinrange(10):
digitalWriteByte(segCode[i])
(0.5)
defdisplay_2():
forbitinbits:
(bit,)
foriinrange(10):
digitalWriteByte(segCode[i])
(0.5)
defdisplay_3(num):
b0=num%10
b1=num%100/10
b2=num%1000/100
b3=num/1000
ifnum10:
(BIT0,)
(BIT1,)
(BIT2,)
(BIT3,)
digitalWriteByte(segCode[b0])
elifnum=10andnum100:
(BIT0,)
digitalWriteByte(segCode[b0])
(0.002)
(BIT0,)
(BIT1,)
digitalWriteByte(segCode[b1])
(0.002)
(BIT1,)
elifnum=100andnum1000:
(BIT0,)
digitalWriteByte(segCode[b0])
(0.002)
(BIT0,)
(BIT1,)
digitalWriteByte(segCode[b1])
(0.002)
(BIT1,)
(BIT2,)
digitalWriteByte(segCode[b2])
(0.002)
(BIT2,)
elifnum=1000andnum10000:
(BIT0,)
digitalWriteByte(segCode[b0])
(0.002)
(BIT0,)
(BIT1,)
digitalWriteByte(segCode[b1])
(0.002)
(BIT1,)
(BIT2,)
digitalWriteByte(segCode[b2])
(0.002)
(BIT2,)
(BIT3,)
digitalWriteByte(segCode[b3])
(0.002)
(BIT3,)
else:
print'Outofrange,numshouldbe0~9999!'
defsetup():
()setallpins'modeisoutput
(pin,)Whenprograming,thefunctionisexecuted.
forpininpins:
(pin,)setallpins'modeisinput
if__name__=='__main__':#Programstartingfromhere
setup()
try:
loop()
exceptKeyboardInterrupt:
destroy()