Arduino SN74HC595 芯片 驱动数码管

概述

  • 类型:具有三态输出寄存器的 8 位移位寄存器。
  • 功能:包含对 8 位 D 类存储寄存器进行馈送的 8 位串行输入 / 并行输出移位寄存器,存储寄存器具有并行三态输出,移位寄存器和存储寄存器分别有单独的时钟,可实现数据的串行输入和并行输出,方便用于扩展 I/O 口等应用。
  • 可以实现6个引脚控制一个8位的数码管。比74HC573还要节省引脚,573需要8+2个引脚。

主要特性

  • 宽工作电压范围:2V 至 6V。
  • 高电流驱动能力:三态输出最多可驱动 15 个低功耗肖特基晶体管 - 晶体管逻辑器件(LSTTL)负载。
  • 低功耗:最大供应电流为 80µA。
  • 高速:典型传播延迟时间 tpd 为 13ns。
  • 其他:移位寄存器具有直接清零功能,输入类型为标准 CMOS,输出类型为三态,时钟频率最大可达 24MHz,电压为 5V 时,输出驱动为 ±6mA,低输入电流为 1µA 最大值。

引脚说明

引脚名称引脚编号功能描述
VCC16电源正极(+2V~+6V)
GND8接地
SER14串行数据输入(Shift Register Data Input)
SRCLK11移位寄存器时钟输入(上升沿触发数据移位)
RCLK12存储寄存器时钟输入(上升沿将移位寄存器数据锁存到存储寄存器)
OE13输出使能控制(低电平有效,高电平时输出为高阻态)
SRCLR10移位寄存器清零(低电平有效,正常工作时接高电平)
QA-QH1-7,15并行数据输出(QA=1 脚,QB=2 脚,...,QH=15 脚)
QH'9串行数据输出(用于级联多个 595 芯片)

下面是 SN74HC595 芯片的引脚图及功能说明:

两位数码管引脚图

硬件连接

SN74HC595 与 Arduino 连接
SN74HC595 引脚Arduino 引脚功能
SER (14)D10串行数据输入
SRCLK (11)D13 (SCK)移位寄存器时钟
RCLK (12)D11存储寄存器时钟(锁存)
OE (13)GND输出使能(低电平有效)
SRCLR (10)5V移位寄存器清零(高电平有效)
VCC (16)5V电源
GND (8)GND
SN74HC595 与数码管连接

SN74HC595 的 8 个输出引脚(QH~QB)分别连接到数码管的 7 段(a~g)。

  • 共阴极数码管:SN74HC595 输出低电平点亮对应段。

数码管编码表

根据数码管类型(共阴 / 共阳),生成显示 0~9 的段码表。
示例(共阴极数码管)

plaintext

rduino 代码实现

以下是控制单个数码管显示 0~9 循环的代码:

  1. 硬件扩展:使用第二个 SN74HC595 控制位选,或用三极管驱动。
  2. 软件实现:采用动态扫描,依次点亮每个数码管,利用人眼视觉暂留效应实现同时显示。

arduino

const int LATCH_PIN = 11;  // RCLK 12
const int CLOCK_PIN = 13;  // SRCLK 11
const int DATA_PIN = 10;   // SER 14

const int LATCH_wei_PIN = 3;  // RCLK 12
const int CLOCK_wei_PIN = 4;  // SRCLK 11
const int DATA_wei_PIN = 2;   // SER 14
 
// 共阴极数码管段码表(0~9)
byte digitSegments[] = {
  0x3F,  // 0   0011 1111
  0x06,  // 1   0000 0110
  0x5B,  // 2   0101 1011
  0x4F,  // 3   0100 1111
  0x66,  // 4   0110 0110
  0x6D,  // 5   0110 1101
  0x7D,  // 6   0111 1101
  0x07,  // 7   0000 0111
  0x7F,  // 8   0111 1111
  0x6F   // 9   0110 1111
};
// 共阴极数码管位码表(0~8)
byte DulSegments[] = {
  0xFF,  // 0   1111 1111
  0xFE,  // 1   1111 1110
  0xFD,  // 2   1111 1101
  0xFB,  // 3   1111 1011
  0xF7,  // 4   1111 0111
  0xEF,  // 5   1110 1111
  0xDF,  // 6   1101 1111
  0xBF,  // 7   1011 1111
  0x7F,  // 8   0111 1111
  };
 
void setup() {
  pinMode(LATCH_PIN, OUTPUT);
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(DATA_PIN, OUTPUT);

  pinMode(LATCH_wei_PIN, OUTPUT);
  pinMode(CLOCK_wei_PIN, OUTPUT);
  pinMode(DATA_wei_PIN, OUTPUT);
  Serial.begin(9600);
}
 
void loop() {

  for (int j = 1; j < 5; j++) {
    display_wei_Number(j);
    Serial.print("数码管显示的位数是:");
    Serial.println(j);
      for (int i = 0; i < 10; i++) {
    displayNumber(i);
    Serial.print("数码管显示的数字是:");
    Serial.println(i);
    delay(1000);  // 每秒切换一次数字
  }
    delay(1000);  // 每秒切换一次数字
  }
}
 
void displayNumber(int number) {
  digitalWrite(LATCH_PIN, LOW);    // 拉低锁存引脚,准备传输数据
  shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, digitSegments[number]);  // 发送段码
  digitalWrite(LATCH_PIN, HIGH);   // 拉高锁存引脚,更新显示
}

void display_wei_Number(int number1) {
  digitalWrite(LATCH_wei_PIN, LOW);    // 拉低锁存引脚,准备传输数据
  shiftOut(DATA_wei_PIN, CLOCK_wei_PIN, LSBFIRST, DulSegments[number1]);  // 发送段码
  digitalWrite(LATCH_wei_PIN, HIGH);   // 拉高锁存引脚,更新显示
}

演示视频1

注意事项

  1. 电源稳定性:SN74HC595 工作电压为 2V~6V,建议使用 5V 电源,确保数码管亮度稳定。
  2. 段电流限制:每个输出引脚需串联 220Ω~470Ω 限流电阻,防止数码管过亮或损坏。
  3. 动态扫描频率:多位数码管扫描时,频率需高于 50Hz 以避免闪烁。
  4. 共阴 / 共阳选择:根据数码管类型调整段码表(共阳极需取反)。

通过以上方法,你可以利用 SN74HC595 芯片高效驱动数码管显示数字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值