Arduino与74HC595驱动8位数码管

材料介绍:一块arduino,若干杜邦线,一块数码管,一块74HC595芯片,


一、74HC595介绍

这是该芯片图片(图片来源于网络)
Arduino与74HC595驱动8位数码管

74HC595 简单说来就是具有8位移位寄存器和一个存储器,通过该芯片可以实现3控8。简单来说就是通过3个数字引脚控制8个其它引脚。比如说用该芯片和三个arduino数字引脚来控制一个8位共阴数码管。

二、74HC595原理

1.原理简介

74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SDL输入到内部的8位位移缓存器,并由Q7’输出,而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。

2.引脚说明及其图示

符号 引脚 描述
Q0–Q7 第15脚, 第1-7脚 8位并行数据输出
GND 第8脚
Q7’ 第9脚 串行数据输出
/MR 第10脚 主复位(低电平有效)
SH_CP 第11脚 数据输入时钟线
ST_CP 第12脚 输出存储器锁存时钟线
/OE 第13脚 输出有效(低电平有效)
DS 第14脚 串行数据输入
VCC 第16脚 电源

引脚图如图(图片来源于百度百科)
Arduino与74HC595驱动8位数码管

  1. GND接地,VCC接5V电源
  2. Q0-Q7这8根引脚直接跟数码管的8段引脚相连。
  3. DS接到arduino任意一个GPIO口上(输出模式)。
  4. SHCP是移位寄存器的时钟引脚。74HC595内部有一个8位的移位寄存器用来保存从DS引脚输入的数据。74HC595通过SHCP这个时钟引脚来实现信息获取。只有在SHCP发生一次上升沿的时候,74HC595才会从DS引脚上取得当前的数据(高/低电平)并把取到的这一位数据保存到移位寄存器里。这个引脚也接到arduino任意一个GPIO口上。当我们向芯片发送数据时,要先在DS引脚上准备好要传送的数据,然后制造一次SHCP引脚的上升沿(先拉低电平再拉高电平)。
  5. STCP是芯片内部另外一个8位锁存寄存器的时钟引脚。当移位寄存器的8位数据全部传输完毕后,制造一次锁存器时钟引脚的上升沿(先拉低电平再拉高电平)。74HC595会在这个上升沿将移位寄存器里的8位数据复制到锁存器中(锁存器里原来的数据将被替换)。注意,到这里为止,这8位数据还只是被保存在锁存器里,并没有输出到数码管上。这个引脚同样连接到arduino任意一个GPIO口上即可。
  6. OE是输出使能引脚,在其他芯片里也很常见。作用是控制锁存器里的数据是否最终输出到Q0-Q7输出引脚上。低电平时输出,高电平时不输出(既不是高电平,也不是低电平而是高阻态,不通电)。本例为了方便直接接在GND上使其一直保持低电平输出数据。
  7. MR是用来重置内部寄存器的引脚。低电平时重置内部寄存器(MemoryReset?)。本例为了方便直接连接在Vcc上一直保持高电平
  8. Q7S引脚,串行输出引脚,我并没有用到,所以不接

关于工作原理有大神做了动画
Arduino与74HC595驱动8位数码管

三、具体代码

我的数码管是共阴的我在做的时候这些数字是试出来的所有复制代码可能会有不同。
中间用到一个shiftOut函数

shiftOut (uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val)

名为:位移输出函数
输入value数据后Arduino会自动把数据移动分配到8个并行输出端. 其中dataPin为连接DS的引脚号, clockPin为连接SH_CP的引脚号, bitOrder为设置数据位移顺序, 分别为高位先入MSBFIRST或者低位先入LSBFIRST.

具体实现代码如下

int latchPin =4; 
int clockPin = 3; 
int dataPin=2; 
int arr[10]={126,72,188,182,210,230,238,50,254,242}; 

void setup() {
    pinMode(latchPin,OUTPUT); 
    pinMode(clockPin,OUTPUT); 
    pinMode(dataPin,OUTPUT); 
} 

void loop(){
    for(int n=0;n<10;n++){
        Serial.begin(9600);
        digitalWrite(latchPin,LOW);//准备接收数据
        shiftOut(dataPin,clockPin,LSBFIRST,arr[n]);
        digitalWrite(latchPin,HIGH);//恢复高电平,传递数
        delay(1000);
    }

  //0 126
  //1 72
  //2 188
  //3 182
  //4 210
  //5 230
  //6 238
  //7 50
  //8 254
  //9 242 
}

已经实践过 具体显示数字从0-9
其中DS接入数字引脚2
STCP接入数字引脚 3
SHCP接入数字引脚4

来源:https://blog.51cto.com/u_14972704/3018132

- 本文内容来自网络,如有侵权,请联系本站处理。

2024-07   阅读(1)   评论(0)
 标签: maker Arduino 74HC595

涨知识
RISC-V

RISC-V(发音为“risk-five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA)。RISC-V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件。

评论:
相关文章
74HC595D使用方法(附接线、级联、程序)

74HC595是一个8位串行输入、并行输出的位移缓存器。并行输出为三态输出。



Arduino 驱动 8×8 LED点阵屏

LED点阵屏由LED发光二极管组成,通过控制LED亮灭来显示文字、图片、动画、视频等,被广泛应用于公共场合做信息展示,如广告屏、公告牌等。


ESP32 使用DAC模拟输出完成两路呼吸灯

ESP32的DAC函数可以实现真正的模拟输出。


在 ESP32 上使用 LEDC (PWM)

ESP32 没有Arduino输出 PWM 的 analogWrite(pin, value) 方法,取而代之的 ESP32 有一个 LEDC 来实现PWM功能。


《米思齐实战手册:Arduino图形化编程指南》

本书由少年创学院联合创始人兼院长、知名创客程晨撰写,以Arduino作为硬件平台,介绍了使用米思齐(Mixly)软件进行程序开发的方法。


Arduino UNO R4 WiFi 官方介绍文档

本文档作为UNO R4 WiFi的技术概览,您将找到一系列资源和指南链接,帮助您开始下一个项目。


OneButton: 用于使用单个按钮进行多用途输入的Arduino库

Arduino OneButton库是一个用于简化按钮操作的库,它可以轻松地处理按钮的单击、双击和长按等操作。适用于Arduino开发板以及ESP32等其他基于Arduino的开发板。


Arduino Bootloader

本文从Arduino Uno入手,看看怎样在这个"简单"的8bit单片机搭建一个属于自己的bootloader


Arduino IDE第三方开发包的制作

许多硬件厂商都希望自己的开发板能被Arduino IDE集成开发环境所支持。这里就以小脚丫开发板所使用的开发包为例,介绍一下第三方开发包的制作方法。

搜索
小鹏STEM教研服务

专属教研服务系统,助您构建STEM课程体系,打造一站式教学环境。