1. 七段数码管基础认知
第一次接触电子制作的朋友,看到面包板上那些能显示数字的小方块总会觉得神奇。这种由7个发光段组成的显示器件,专业术语叫做"七段数码管"。它本质上就是7个LED灯按照特定排列组合而成,通过控制不同段的亮灭来显示0-9的数字。
数码管有两种常见类型:共阳极和共阴极。简单来说:
- 共阳极:所有LED的正极连在一起接VCC,需要哪个段亮就给对应引脚低电平
- 共阴极:所有LED的负极连在一起接GND,需要哪个段亮就给对应引脚高电平
以显示数字"7"为例:
- 共阳极接法:公共端接+5V,给a、b、c三个段对应的引脚低电平
- 共阴极接法:公共端接地,给a、b、c三个段对应的引脚高电平
注意:使用前务必确认数码管类型,接错可能烧毁器件。可用万用表二极管档测试:红表笔接公共端,黑表笔依次碰其他引脚,能点亮的就是共阳;反之则是共阴。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件连接方案详解
2.1 直接驱动方式
最基础的连接方法是直接用单片机IO口驱动。以STM32F103驱动共阴数码管为例:
c复制// 定义段选引脚(a-g对应PC0-PC6)
#define SEG_A GPIO_Pin_0
#define SEG_B GPIO_Pin_1
// ...其他段定义
// 数字0的段码(a-f段亮)
const uint16_t digitTable[10] = {
SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // 0
SEG_B | SEG_C, // 1
// ...其他数字编码
};
这种接法简单直接,但会占用较多IO口(每位数码管需要8个IO)。当需要驱动多位数码管时,推荐以下方案。
2.2 译码器方案
使用74HC595移位寄存器可以大幅节省IO资源。典型电路连接:
- 74HC595的SER接单片机MOSI
- SRCLK接SCK
- RCLK接任意GPIO
- 输出Q0-Q7接数码管段选
- 位选通过三极管控制
c复制// 发送一个字节到595
void HC595_SendByte(uint8_t dat) {
HAL_SPI_Trans
