數碼管是電子電路中的一種常見元件,它可以用來顯示數字或字母等信息。Python語言具備編寫控制數碼管的能力,可以用GPIO或I2C等接口來驅動數碼管的工作。
# 導入必要的庫 import RPi.GPIO as GPIO import time # 定義GPIO引腳對應數碼管的數位及片選引腳 digit_pins = [11, 12, 13, 15] select_pins = [16, 18, 22, 24] # 定義數碼管數字排列 digits = { 0:(1,1,1,1,1,1,0), 1:(0,1,1,0,0,0,0), 2:(1,1,0,1,1,0,1), 3:(1,1,1,1,0,0,1), 4:(0,1,1,0,0,1,1), 5:(1,0,1,1,0,1,1), 6:(1,0,1,1,1,1,1), 7:(1,1,1,0,0,0,0), 8:(1,1,1,1,1,1,1), 9:(1,1,1,1,0,1,1)} # 初始化GPIO引腳狀態和相關參數 GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) for pin in digit_pins: GPIO.setup(pin, GPIO.OUT) GPIO.output(pin, 0) for pin in select_pins: GPIO.setup(pin, GPIO.OUT) GPIO.output(pin, 1) # 定義函數用來在數碼管上顯示數字 def show_number(number): for index, digit_pin in enumerate(digit_pins): segments = digits[number%10] for segment_index, segment_value in enumerate(segments): GPIO.output(segment_index+1, segment_value) GPIO.output(digit_pin, 1) time.sleep(0.001) GPIO.output(digit_pin, 0) number = number//10 # 主程序入口 if __name__ == '__main__': try: while True: for i in range(10): for select_index, select_pin in enumerate(select_pins): GPIO.output(select_pin, 0) show_number(i) GPIO.output(select_pin, 1) except KeyboardInterrupt: GPIO.cleanup()
上述代碼可以控制數碼管顯示數字0-9,每0.001秒更新一次數碼管的顯示內容。通過while循環和逐個更新每個數位的顯示內容,可以實現數碼管的滾動或閃爍效果。