一,介绍

74HC595 是一款价格便宜的八位移位锁存器,通过三个引脚(DS、STCP、SHCP),就可以控制几乎无限量地输出。

DS是串行输入端口,每当时钟输入(SHCP)上升沿来临时,DS引脚当前电平值在移位寄存器中会移一位,连续进行8次同样的动作,就可以完成全部(Q0至Q7)移位。最后当STCP(Latch)上升沿到来时,移位寄存器的值将会被锁定在存储器里,并从Q0至Q7引脚输出。ESP32 的数字输出引脚时有限的,如果需要更多的输出的话,期中的一种方法就是通过74HC 595扩展更多的输出引脚。已达到目的。以下就通过两个列子来介绍这一个芯片的使用方法。

图1

二,硬件

ESP32开发板

2个74HC595

一块面包板

三,电路图

这是ESP32 驱动一个74HC595的电路图,引脚连接[GPIO15->DS(14)] [GPIO4->SHCP(12)] [GPIO4->STCP(11)] [GND->MR(10)] [VCC->OE(13)] 。

图2

四,代码设计

Arduino IDE包含了一个shiftout()功能,可以很方便的控制74HC595移位寄存器,对于ESP32 同样适用的。我们为了实现流水灯的效果。首先我们需要定义一个数组来存放数据,这些数据可以是16进制 、二进制、十进制。

unsigned char sequence[COL_COUNT] = {B00000001, B00000010, B00000100, B00001000, B00010000, B00100000, B01000000, B10000000};

然后,再使用一个for循环中的shiftout()函数把数据送到锁存器中。

for (int col = 0; col < COL_COUNT; col++)

{

digitalWrite(latchPin, LOW);

shiftOut(dataPin, clockPin, MSBFIRST, sequence[col]);

datadigitalWrite(latchPin, HIGH);

delay(200);

}

以下是完整的代码:

/*******************************************************

ESP32 驱动一块74HC595

功能:使用ESP32驱动74HC595 来实现流水灯的功能

引脚: [GPIO15->DS(14)] [GPIO4->SHCP(12)] [GPIO2->STCP(11)] [GND->MR(10)] [VCC->OE(13)]

Designer: Code_Mouse

Date:2018-9-20

*******************************************************/

const byte COL_COUNT = 8;

const byte ROW_COUNT = 3;

//存储数据的数组

unsigned char sequence[8] = {

B00000001, B00000010, B00000100, B00001000, B00010000, B00100000, B01000000, B10000000,

};

int latchPin = 2; //Pin connected to ST_CP(pin 12) of 74HC595

int clockPin = 4; //Pin connected to SH_CP(pin 11) of 74HC595

int dataPin = 14; //Pin connected to DS(pin 14) of 74HC595

void setup() {

pinMode(latchPin, OUTPUT);

pinMode(clockPin, OUTPUT);

pinMode(dataPin, OUTPUT);

}

void loop()

{

for (int row = 0; row < ROW_COUNT; row++)

{

digitalWrite(latchPin, LOW);

shiftOut(dataPin, clockPin, MSBFIRST, sequence[row]);

digitalWrite(latchPin, HIGH);

delay(200);

}

}

五,ESP32 驱动两块74HC595

通过74HC595移位寄存器的级联输出端(Daisy chain),同样使用3个数据引脚来连接多个的74HC595以取得更多的输出。由于一块74HC595 可以一个字节,所以两块就可以支持2个字节。当然三块的话就是3个字节了。硬件连接方面也是很简单的,就是在上面的基础上修改就可以了

隐藏内容,您需要满足以下条件方可查看

End

六,电路图2

图3

七,代码设计

由于shiftOut()只能支持8位移,如欲取得16位移(两颗74HC595移位寄存器)的输出,那就必须分两次shiftOut()运行。

以下是完整的代码 :

/*******************************************************

ESP32 驱动两块74HC595

功能:使用ESP32驱动两块74HC595 来实现流水灯的功能

引脚: [GPIO15->DS(14)] [GPIO4->SHCP(12)] [GPIO2->STCP(11)] [GND->MR(10)] [VCC->OE(13)]

Designer: Code_Mouse

Date:2018-9-20

*******************************************************/

const byte COL_COUNT = 8;

unsigned int sequence[COL_COUNT] = {0B0000000100000001, 0B0000001000000011, 0B0000010000000111, 0B0000100000001111, 0B0001000000011111, 0B10000000111111, 0B0100000001111111, 0B1000000011111111};

int latchPin = 2; //Pin connected to ST_CP(pin 12) of 74HC595

int clockPin = 4; //Pin connected to SH_CP(pin 11) of 74HC595

int dataPin = 15; //Pin connected to DS(pin 14) of 74HC595

void setup() {

pinMode(latchPin, OUTPUT);

pinMode(clockPin, OUTPUT);

pinMode(dataPin, OUTPUT);

}

void loop()

{

for (int col = 0; col < COL_COUNT; col++)

{

digitalWrite(latchPin, LOW);

shiftOut(dataPin, clockPin, MSBFIRST, (sequence[col] >> 8));

shiftOut(dataPin, clockPin, MSBFIRST,sequence[col]);

digitalWrite(latchPin, HIGH);

delay(200);

}

}

esp8266 python 74hc595_十九 ,ESP32 74HC595 的使用相关推荐

  1. python第二十九课——文件读写(复制文件)

    自定义函数:实现文件复制操作有形参(2个) 没有返回值相似版(不用) def copyFile(src,dest):#1.打开两个文件:1个关联读操作,1个关联写操作fr=open(src,'rb') ...

  2. 《OpenCv视觉之眼》Python图像处理十九:Opencv图像处理实战四之通过OpenCV进行人脸口罩模型训练并进行口罩检测

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  3. Python基础十九:多进程

    Python基础十九:多进程 Python基础系列内容为学习廖雪峰老师Python3教程的记录,廖雪峰老师官网地址:廖雪峰Python3教程 Author:yooongchun Email:yooon ...

  4. Python ---(十九)Tkinter窗口组件:Toplevel

    上一篇:Python -(十八)Tkinter窗口组件:PanedWindow The Tkinter Toplevel Widget ##简介 Toplevel(顶级窗口)组件类似于 Frame 组 ...

  5. python四十九:封装

    class Animal:# 在属性前加上单下划线,那么该属性就属于类内部的属性# 但python并不会真的阻值你访问私有的属性.但非常不建议调用这种下划线开头的属性_type="动物&qu ...

  6. python三十九:logging模块

    import logginglogging.basicConfig(level=logging.DEBUG # 设置日志级别, 默认为 WARNING,filename="logger.lo ...

  7. [Python图像处理] 十九.图像分割之基于K-Means聚类的区域分割

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  8. 小甲鱼Python第十九讲课后习题

    笔记: 1.内嵌函数:函数内部新创建另一个函数 2.闭包:函数式编程的重要语法,如果在一个内部函数里,对外部作用域(但不是在全局作用域的变量)进行引用,那么内部函数就会被认为是闭包. 3.nonloc ...

  9. python五十九: slots属性

    class Foo:__slots__ = ['name', 'age']f = Foo() print(f.__slots__) print(Foo.__slots__) f.name = 'dsf ...

  10. python二十九:__name__

    __name__是一个变量. 当在执行文件中打印__name__,该变量内容是'__main__' def add(x,y):print("add")return x+ydef s ...

最新文章

  1. Caused by: java.net.UnknownHostException: localhost.localdomain: localhost.localdomain的问题解决
  2. java观察者设计模式
  3. java sql sum函数的使用方法,Springboot jpa使用sum()函数返回结果如何接收
  4. python语言程序设计2019版第二章课后答案-python语言程序设计基础(嵩天)第二章课后习题...
  5. 如何用 SpringBoot 实现并发登录人数控制(附代码)
  6. redis小功能大用处-bitmaps
  7. 再谈Docker,微服务的场景化应用
  8. Python学习笔记整理(三)Python中的动态类型简介
  9. Linux 监控命令 free
  10. 【LeetCode笔记】35. 搜索插入位置(Java、二分法)
  11. IP通信基础学习第十周
  12. MongoDB 常用shell命令汇总
  13. 手机充当电脑摄像头:无他相机和DroidCam
  14. Excel VBA小游戏,上班摸鱼必备
  15. 导航栏隐藏的正确方式
  16. idea2018 2020_2019~2020上海沪牌价格一览表
  17. Android 安卓动画 属性动画 - 旋转动画
  18. 关于WiFi和信号图标出现感叹号消除办法
  19. IE8允许ActiveX控件设置
  20. html中的bom和dom,BOM与DOM的区别

热门文章

  1. n次独立重复试验暨伯努利试验
  2. 罗永浩回顾创业历程:转角遇贵人
  3. 微软 rms服务器端,RMS 客户端部署说明 - Azure 信息保护 | Microsoft Docs
  4. 新知实验室_初探腾讯云音视频
  5. excel几个表合成一张_excel多表如何合并到一张表格
  6. 什么是Portal认证
  7. 微信公众平台如何审核
  8. Linux 修改 host
  9. mysql建数据库实例_MySQL数据库基础(四)——MySQL数据库创建实例
  10. 抽象类和接口的区别(之二)