收藏官网首页
查看: 3618|回复: 0

[经验分享] esp8266 驱动74HC595

106

主题

107

帖子

7264

积分

论坛元老

Rank: 8Rank: 8

积分
7264
跳转到指定楼层
楼主
 楼主| 发表于 2023-9-18 22:11:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发
    74hc595是一个三态输出的8位移位寄存器,可以把我们三个io口扩展到8个,同时也支持串联使用扩展更多io口,因为esp8266自带的管脚比较少,有不少被内部占用或者与启动关联,因此剩余可用的引脚不是很多,如果要控制的**设备多,显然不够用,那么此时我们就可用使用1个74hc595来扩展io口,只需要使用8266三个引脚即可。

首先我们要了解595的通信时序和引脚功能来决定如何编写控制时序。

我们可用从网上找一份595的手册来了解详细内容

首先是管脚


最主要的是11脚,12脚 14脚,输出使能端我们可以使用低电平拉低,使595一直保持输出状态,就不用使用多余的引脚控制输出了。
11脚sck是移位寄存器的时钟,在上升沿的时候,14脚的电平被输入到移位寄存器,因此我们首先要使用8位数据填满移位寄存器,最后在12脚rck的上升沿移位寄存器的数据被移动到输出寄存器,实现输出。

接下来,我们再看一下时序的时间要求



可见,大部分的时序要求时间位ns,当然这个ns级别的要求,esp8266是无法实现的,因此我们使用1us来完成通信时序即可。

首先我们编写一个初始化函数,初始化3个引脚,分别用于移位寄存器时钟,储存寄存器时钟和数据输入。



接下来,我们使用一个数组存放我们需要写入的8位数据,使用for循环完成8个时钟,同时取出数组内容传送到数据输入端即可

代码如下:



在每个电平的变换期间我们加入1us的延时用于维持时序即可,现在我们就完成了595的驱动程序。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表