【Arduino學習】05.驅動4個數碼管
阿新 • • 發佈:2020-12-10
技術標籤: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);
}
}
原理圖+實驗連線圖: