1. 程式人生 > 其它 >【Arduino學習】05.驅動4個數碼管

【Arduino學習】05.驅動4個數碼管

技術標籤:Arduino學習

數碼管介紹:
如圖,本次使用的數碼管為共陰極,四個數碼管有 12 個引腳, 可以分為位選腳和段選腳。
段選腳:8個引腳a,b,c,d,e,f,g
位選腳:4 個引腳 D1, D2, D3, D4

哪個數碼管顯示由片選腳決定,片選腳為高電平,則該數碼管點亮,為低電平則該數碼管熄滅。
數碼管顯示什麼數值由段選腳決定,譬如要顯示數字8,則a,b,c,d,e,f,g為高電平,h為低電平;要顯示數字1,則b,c為高電平,a,d,e,f,g,h為低電平。
顯示原理:四個數碼管的顯示原理是不斷掃描 D1, D2, D3, D4,然後相應的八段管將依次點亮。 由於點亮速度很快,人眼不會看到(人眼能夠識別的重新整理頻率是30HZ),所以它看起來像四個數碼管同時顯示。

軟體程式碼:

#include "SegmentDisplay.h"

#define  LED_A   13       // define Arduino GPIO1 for led a
#define  LED_B   2       // define Arduino GPIO2 for led b
#define  LED_C   3       // define Arduino GPIO3 for led c
#define  LED_D   4       // define Arduino GPIO4 for led d
#define  LED_E   5       // define Arduino GPIO5 for led e
#define LED_F 6 // define Arduino GPIO6 for led f #define LED_G 7 // define Arduino GPIO7 for led g #define LED_H 8 // define Arduino GPIO8 for led h #define LED_D1 9 #define LED_D2 10 #define LED_D3 11 #define LED_D4 12 SegmentDisplay _4Bit_7SegmentDisplay(LED_A, LED_B
, LED_C, LED_D, LED_E, LED_F, LED_G, LED_H, LED_D1, LED_D2, LED_D3, LED_D4); int ShowTime = 60, count = 0; void setup() { Serial.begin(9600); _4Bit_7SegmentDisplay.TurnOffAllLed(); } void loop() { if (count++ > 50 ) { ShowTime-- ; count = 0 ; Serial.println(ShowTime); } _4Bit_7SegmentDisplay.DisplayChar((int)ShowTime); delay(5); if (ShowTime == 0) { _4Bit_7SegmentDisplay.TurnOffAllLed(); while(1); } }

原理圖+實驗連線圖: