登录/注册

74hc595驱动数码管程序

74hc595驱动数码管程序 74HC595是在单片机系统中常用的芯片之一,他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片。

更多

使用74HC595驱动数码管的单片机程序(基于Arduino)

下面是一个完整的Arduino程序,使用74HC595移位寄存器驱动4位共阴数码管。该程序实现了数码管的动态扫描显示功能。

// 74HC595引脚定义
const int dataPin = 2;   // DS (数据引脚) -> Arduino D2
const int latchPin = 3;  // ST_CP (锁存引脚) -> Arduino D3
const int clockPin = 4;  // SH_CP (时钟引脚) -> Arduino D4

// 数码管段码表 (共阴极, 0-9)
byte digitPattern[10] = {
  0x3F, // 0: ABCDEF
  0x06, // 1: BC
  0x5B, // 2: ABDEG
  0x4F, // 3: ABCDG
  0x66, // 4: BCFG
  0x6D, // 5: ACDFG
  0x7D, // 6: ACDEFG
  0x07, // 7: ABC
  0x7F, // 8: ABCDEFG
  0x6F  // 9: ABCDFG
};

// 数码管位选 (共阴极, 低电平选中)
byte digitSelect[4] = {
  0xF7, // 11110111 - 第4位 (Q7')
  0xFB, // 11111011 - 第3位 (Q6')
  0xFD, // 11111101 - 第2位 (Q5')
  0xFE  // 11111110 - 第1位 (Q4')
};

// 当前显示值
int number = 1234;

void setup() {
  // 设置引脚为输出
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  displayNumber(number);  // 显示数字
  number = (number + 1) % 10000; // 数字递增
  delay(100);             // 延迟控制速度
}

// 向74HC595发送数据
void shiftOutData(byte data) {
  digitalWrite(latchPin, LOW); // 锁存引脚置低
  shiftOut(dataPin, clockPin, MSBFIRST, data); // 发送数据
  digitalWrite(latchPin, HIGH); // 锁存引脚置高,更新输出
}

// 显示数字函数
void displayNumber(int num) {
  // 分解每一位数字
  int digits[4];
  digits[0] = num / 1000;          // 千位
  digits[1] = (num % 1000) / 100;  // 百位
  digits[2] = (num % 100) / 10;    // 十位
  digits[3] = num % 10;            // 个位

  // 循环扫描显示每一位
  for (int i = 0; i < 4; i++) {
    // 发送位选信号和段码
    byte dataOut = digitSelect[i];         // 选择当前位
    byte segment = digitPattern[digits[i]]; // 当前位数字段码

    // 通过位运算组合位选和段选信号
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, MSBFIRST, segment); // 发送段码
    shiftOut(dataPin, clockPin, MSBFIRST, dataOut); // 发送位选
    digitalWrite(latchPin, HIGH);

    // 延迟一段时间(控制亮度),同时实现动态扫描
    delay(5);

    // 短暂关闭显示以消除鬼影
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, MSBFIRST, 0x00);   // 清空段码
    shiftOut(dataPin, clockPin, MSBFIRST, 0xFF);   // 关闭所有位选
    digitalWrite(latchPin, HIGH);
  }
}

硬件连接说明

74HC595引脚连接:

数码管连接:

程序说明

  1. 初始化

    • 设置74HC595控制引脚
    • 定义0-9的段码表(共阴极)
    • 定义位选控制信号
  2. 显示数字逻辑

    • shiftOutData()函数向74HC595发送数据
    • displayNumber()函数处理数字分解和动态扫描显示
    • 通过快速轮流显示每个数码管实现"静态"显示效果
    • 每5ms切换一个数码管
  3. 动态扫描优点

    • 节省引脚:只需3个控制引脚即可驱动多位数码管
    • 减少功耗:一次只点亮一个数码管
    • 避免交叉串扰:每次显示后短暂关闭所有数码管

扩展改进建议

  1. 添加小数点

    • 在段码表中增加带小数点的编码
    • 例如:digitPattern[10] = 0x80; // 小数点
  2. 亮度控制

    • 添加PWM控制显示亮度
    • analogWrite()控制位选通电流
  3. 双级联74HC595

    • 若驱动更多数码管,可级联多个74HC595
    • 修改数据发送为两个字节:shiftOut(dataPin, clockPin, MSBFIRST, segData); shiftOut(dataPin, clockPin, MSBFIRST, digData);

这个程序实现了基本的数码管驱动功能,可以通过调整显示值和时间延迟来满足不同应用需求。

基于74HC595的串行数码管显示实验

今天学习小王子开发板基于74HC595串行数码管显示实验基于74HC595串行数码管

2022-03-01 06:34:45

如何利用stm32的两片74hc595芯片控制2个4位共阳极数码管

基于stm32的两片74hc595芯片控制2个4位共阳极数码管程序基于stm32的两片74hc595芯片控制2个4位共阳极

2021-12-07 08:59:58

74HC595驱动2位数码管的方法

74HC595驱动2位数码管驱动芯片:

2021-12-07 07:48:07

基于stm32的74HC595仿真数码管显示(包含源程序及仿真)

基于stm32的74HC595仿真数码管显示(包含源程序及仿真)

资料下载 木头1233 2023-04-20 15:56:42

嵌入式单片机基础篇(二十二)之基于stm32的两片74hc595芯片控制2个4位共阳极数码管程序

基于stm32的两片74hc595芯片控制2个4位共阳极数码管程序基于stm32的两片74hc595芯片控制2个4位共阳极

资料下载 张勇 2021-11-24 11:36:07

ATmega16开发板教程(3)——74HC595驱动数码管显示

​4、数码管显示数码管驱动电路采用2片74HC595芯片进行IO扩展,仅

资料下载 杨海清 2021-11-24 10:21:07

硬件探索——STM32F4控制74HC595数码管

使用STM32F407VET6,通过串行方式驱动74HC595控制的4位数码管使用了PD0(DIO)、PD1(RCLK)、PD2(SCLK)三个

资料下载 张亮 2021-11-24 10:06:09

【STM32学习】(14)两个74HC595控制四个数码管显示

74HC595是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片, 使用

资料下载 golabs 2021-11-23 18:06:48

如何实现74HC595驱动数码管显示

​4、数码管显示数码管驱动电路采用2片74HC595芯片进行IO扩展,仅

2021-12-07 07:29:59

74HC595怎么使用

一、74HC595使用方法74HC595的数据端Q0--Q7:八位并行输出端,可以直接控制数码管的8个段。Q7:级联输出端。将它接下一个

2021-12-07 06:46:57

STM32F4控制74HC595数码管的方法

使用STM32F407VET6,通过串行方式驱动74HC595控制的4位数码管使用了PD0(DIO)、PD1(RCLK)、PD2(SCLK)三个

2021-12-07 06:42:13

单片机控制74hc595驱动4个单数码管

单片机控制74hc595驱动4个单数码管静态显示演示效果:*材料 AT89C52 、7

2021-12-02 06:32:10

74HC595是如何去驱动数码管

74HC595是什么?74HC595有何作用?74HC595的管脚有哪些功能?74HC

2021-08-02 09:54:34

74HC595驱动LED点阵或数码管的正确用法是什么?

74HC595正确的工作原理是什么?74HC595驱动LED点阵或数码管

2021-07-23 12:34:52

74HC595芯片的作用是什么

74HC595是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片, 使用

2021-07-22 07:05:56
7天热门专题 换一换
相关标签