Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

共陽極與共陰極數碼管驅動電路詳解:動態掃描、硬件對比與代碼實現

編輯:Linux 教學

共陽極數碼管驅動

電路拓撲

  • PNP 三極管作為高側開關,基極接 MCU IO(經電阻),發射極接 VCC,集電極接數碼管公共陽極(經 1N4148 防反接)。
  • 段碼(a–g, dp)直連 MCU P0 口(或 74HC595),低電平點亮對應段。
  • 兩位數碼管分別由 P2.6、P2.7 控制十位/個位使能。

動態掃描時序

  1. 送個位段碼 → P2.7 低電平使能 → 延時 1 ms
  2. 送十位段碼 → P2.6 低電平使能 → 延時 1 ms
  3. 循環頻率 > 50 Hz(週期 < 20 ms),利用視覺殘留實現雙位同時顯示。

共陰極數碼管驅動

電路拓撲

  • 公共陰極接 NPN 三極管集電極,發射極接地,基極接 MCU IO(低電平截止、高電平導通,吸收電流)。
  • 段碼經 1 kΩ 排阻接 VCC,MCU P0 口輸出低電平將對應段拉低點亮。
  • 硬件更簡單:無需 PNP、二極管,適合量產降低 BOM 成本。

段碼編碼對比

數字共陽極碼 (低亮)共陰極碼 (高亮)
00xC00x3F
10xF90x06
20xA40x5B
30xB00x4F
40x990x66
50x920x6D
60x820x7D
70xF80x07
80x800x7F
90x900x6F

兩者編碼互為按位取反(含 dp 位)。

代碼骨架 (8051 風格)

uint8_t code seg_code_cathode[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
uint8_t code seg_code_anode[10]   = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

void display(uint8_t num) {
    uint8_t shi = num / 10, ge = num % 10;
    // 個位
    P0 = seg_code_cathode[ge];
    P2_7 = 0; P2_6 = 1; delay_ms(1);
    // 十位
    P0 = seg_code_cathode[shi];
    P2_6 = 0; P2_7 = 1; delay_ms(1);
}

選型建議

  • 原型開發、小批量:共陽極電路靈活,MCU IO 直接驅動段碼無需排阻。
  • 大批量量產:共陰極硬件簡單、成本低、PCB 面積小、焊接工時少。

總結

共陽/共陰本質是公共極接 VCC 還是 GND,決定了驅動極性與段碼編碼。掌握動態掃描時序與編碼互反關係,可快速移植代碼。

Copyright © Windows教程網 All Rights Reserved