嵌入式开发--IO口扩展--74HC595

article/2025/11/9 18:41:53

嵌入式开发–IO口扩展,输出引脚

嵌入式开发经常遇到IO口不够的情况,更换引脚更多的单片机是一种选择,但最近两年单片机的价格翻着跟斗的往上涨,替代方便也有,就是通过IO口扩展芯片来实现。

本段说明摘自明微电子的说明书:
74HC595D 是一种具有8 位锁存、8 位串行输入、 8 位串/并行输出、 串—并移位寄存器和三态输出功能的通用LED 驱动芯片。具有8 位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。数据在SCK 的上升沿输入,在RCK 的上升沿进入的存储寄存器中去。移位寄存器有一个串行移位输入(SER),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8 位的,具备三态的总线输出,当使能时,存储寄存器的数据输出到总线。它可以与其他公司生产的74HC595 完全兼容
在这里插入图片描述

下图截取自NXP公司的说明书
在这里插入图片描述
两款芯片功能一样,引脚定义一样,只是用了不同的符号来表示。
由于两家公司的描述不同,在此特别说明一下
数据从
14脚:数据引脚 DS或SER 数据从该引脚送入
9脚:Q7S或Q7‘ 当数据超过8位时,最先送入的数据从该引脚溢出,本芯片只存储8位以内的数据。
11脚 移位时钟信号,
12脚 锁丰时钟信号

电路图

用了2片芯片做级联,也可以支持更多的芯片,比如4片,同样只需要MCU端用3根IO口线驱动。
在这里插入图片描述
在这里插入图片描述

芯片的驱动

在这里插入图片描述

对着这个表格来操作就行,
13脚G 为低时,芯片工作。
10脚SCLR 为低时,芯片数据清空,正常工作时接高即可。
11脚SCK 移位时钟上升沿时,将14脚的数据保存到移位寄存器内
12脚RCK 锁存时钟上升沿时,将移位寄存器内的数据输出,完成串入并出的转换。

芯片驱动方式与I2C接口很相近,差不多自己写两句就好了。很简单就没有再写注释

#define HC595_SDA_PORT  GPIOA
#define HC595_SDA_PIN   GPIO_PIN_9
#define HC595_SFT_PORT  GPIOA
#define HC595_SFT_PIN   GPIO_PIN_10
#define HC595_LCK_PORT  GPIOA
#define HC595_LCK_PIN   GPIO_PIN_8#define HC595_SDA(n)  (n?HAL_GPIO_WritePin(HC595_SDA_PORT,HC595_SDA_PIN, GPIO_PIN_SET):HAL_GPIO_WritePin(HC595_SDA_PORT,HC595_SDA_PIN,GPIO_PIN_RESET))
#define HC595_SFT(n)  (n?HAL_GPIO_WritePin(HC595_SFT_PORT,HC595_SFT_PIN, GPIO_PIN_SET):HAL_GPIO_WritePin(HC595_SFT_PORT,HC595_SFT_PIN,GPIO_PIN_RESET))
#define HC595_LCK(n)  (n?HAL_GPIO_WritePin(HC595_LCK_PORT,HC595_LCK_PIN, GPIO_PIN_SET):HAL_GPIO_WritePin(HC595_LCK_PORT,HC595_LCK_PIN,GPIO_PIN_RESET))void hc595_display(u16 in)
{u8 i=0;for(i=0; i<16; i++){if((in&0x01) == 0)HC595_SDA(0);elseHC595_SDA(1);delay_us(1);HC595_SFT(1);delay_us(1);HC595_SFT(0);delay_us(1);in>>=1;}HC595_LCK(1);delay_us(1);HC595_LCK(0);delay_us(1);
}

在这里要批评一下明微电子,说明书里面用的图能做得好一点么,下面这个图是给人看的么
在这里插入图片描述
看看人家NXP的图
在这里插入图片描述

输入扩展

如果同时需要输入IO扩展的话,还有另一款国产IC可供选择,沁恒的CH423S,没错,就是大名鼎鼎的CH340那家公司。2线控制,还有一根可选的中断线,非常不错,只是价格比74HC595要贵些。将来用到了再和大家分享。
只是芯片手册中有这样一句话,让我有点担心其可靠性。
在这里插入图片描述
转念一想,CH340不是用得好好的么,同一家公司的产品,不至于吧。


http://chatgpt.dhexx.cn/article/G2PGB7ST.shtml

相关文章

STM32+74HC595:带领你10分钟用对74HC595

使用的是STM32CBT8&#xff0c;小模块用起来性价比超级高&#xff0c;资源丰富&#xff0c;移植u/COS及HTTP、MQTT协议等等用起来简直欲罢不能&#xff0c;摇摇欲仙&#xff01; BUT&#xff1a;IO口资源太少了&#xff0c;我想让你驱动100个LED&#xff0c;你缺告诉我&#x…

74HC595芯片实现原理及跑马灯数码管应用程序-----day2

74HC595芯片应用-----day2 1.CMOS移位寄存器–74HC595 可串行输出控制下一级级联芯片。![在这里插入图片描述](https://img-blog.csdnimg.cn/2facff61a1d948d4a7c ![在这里插入图片描述](https://img-blog.csdnimg.cn/79b3b2b43dcc4b91ae4ec2c986149990.png 基础概念&#xff1…

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

74HC595是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号&#xff0c;常用在各种数码管以及点阵屏的驱动芯片&#xff0c; 使用74HC595可以节约单片机mcu的io口资源&#xff0c;用3个io就可以控制8个数码管的引脚&#xff0c;他还具有一定的驱动能力&…

基于STM32单片机的流水灯控制-74HC595

基于STM32单片机的流水灯控制-74HC595 冰果派-棉花糖V1.0开发板 文章目录 基于STM32单片机的流水灯控制-74HC595冰果派-棉花糖V1.0开发板[toc] 一 任务二 硬件电路如何设计1. IO口不够用2.74HC595D 三 程序怎么编写1.单片机怎么把数据给5952.写程序&#xff08;595驱动&#x…

STM32+74HC595

74HC595功能是将串行数据&#xff08;由SHCP\CLK、DS\DATA输入串行数据&#xff09;转换并行数据&#xff08;芯片上的QA~QH八个数据输出口&#xff09;; 具体工作方式是&#xff1a;由CLK提供时钟&#xff0c;DATA输入高低电平&#xff08;数据&#xff09;&#xff0c;CLK每…

74HC595的使用

介绍 74HC595是一个8位串行输入、并行输出的位移缓存器&#xff1a;并行输出为三态输出。在SCK 的上升沿&#xff0c;串行数据由SDL输入到内部的8位位移缓存器&#xff0c;并由Q7’输出&#xff0c;而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器…

stm32驱动hc595

根据网上资料&#xff1a; 595具体使用的步骤:第一步&#xff1a;目的&#xff1a;将要准备输入的位数据移入74HC595数据输入端上。方法&#xff1a;送位数据到_595。第二步&#xff1a;目的&#xff1a;将位数据逐位移入74HC595&#xff0c;即数据串入方法&#xff1a;SH产生一…

STM32实现74HC595控制

一、前言 本文主要是实出74HC595的简单控制功能实现&#xff08;学习笔记整理&#xff09;。 二、概述 &#xff08;一&#xff09;74HC595简述 74HC595是一个8位串行输入、平行输出的位移缓存器&#xff1a;平台行输出为三态输出。 在SCHCP的上升沿输入&#xff0c;在STCP的…

STM32学习记录——74HC595四位数码管显示

数模管作为STM32的一个重要外设&#xff0c;由于其成本低、稳定&#xff0c;被用于许多场景中。本篇文章来介绍下四位数码管的使用方法。 数码管显示 一、数码管的分类二、74HC595芯片&#xff08;串入并出&#xff09;三、原理图四、代码主要操作五、代码分析1.void HC595_GPI…

【74HC595】STM32 74HC595驱动程序

以下为.h文件&#xff1a; #ifndef __74HC595_H__ #define __74HC595_H__ #include "stm32f10x.h" #define SHCP_GPIO_PORT GPIOA #define SHCP_GPIO_CLK RCC_APB2Periph_GPIOA #define SHCP_GPIO_PIN GPIO_Pin_1 #defin…

RK3588+FPGA+Cameralink高速相机解决方案

1. 视频接入&#xff0c;其中可见使用LVDS&#xff0c;红外使用cameralink 2. H264低倍率压缩编码本地存储 3. H264压缩使用同步422接口或者网口UDP协议输出实时码流 4. 使用串口进行通讯&#xff0c;进行类似于可见、红外或者激光器或者地面控制软件等之间的通讯 5. 使用网…

【芯片使用】74HCHC595

实验平台&#xff1a;普中A2开发板&#xff0c;STC89C51RC芯片&#xff0c;11.0592M晶振。 文章目录 前言一、代码1.main.c2.HC595.c2.HC595.h 总结 前言 74HC595是一个8位串行输入、并行输出的位移缓存器&#xff1a;并行输出为三态输出。在SCK 的上升沿&#xff0c;串行数据…

HC595驱动数码管

74HC595是一个8位串行输入、并行输出的位移缓存器 引脚定义 Q0~Q7&#xff1a;并行输出 Q7’&#xff1a;串行输出 SH_CP&#xff1a;移位寄存器时钟输入 ST_CP&#xff1a;存储寄存器时钟输入 DS&#xff1a;串行输入 原理图 举例 共阴极数码管控制 #define uchar unsign…

保护手机号码不被应用窃取的有力措施

在使用手机过程中&#xff0c;经常遇到很多应用软件私自获取我们的手机号码并传播出去&#xff0c;导致我们手机经常接到很多莫名其妙的电话。 我们今天分享一种能够彻底屏蔽手机号码被非法获取的有效非法&#xff0c;也就是使用琢石模拟器对手机号码进行模拟&#xff0c;让应用…

安卓app服务器地址文件夹,查看安卓app的服务器地址

查看安卓app的服务器地址 内容精选 换一换 robox脚本里的docker run命令中的镜像名称要改成本地自己注册的名称。(名称为:镜像注册中的名称,也可以通过docker images查看)设置环境变量,将容器指定到GPU卡上运行。export DISPLAY=:0robox脚本中设置的DISPLAY号要与此处设置的…

虚拟手机的服务器地址和端口是什么,如何查看服务器地址和端口号

如何查看服务器地址和端口号 内容精选 换一换 本节操作介绍如何在移动设备上连接Linux实例。以iTerminal-SSH Telnet为例介绍如何在iOS设备上连接 Linux 实例,详细操作请参考IOS设备上登录Linux云服务器。以JuiceSSH为例介绍如何在Android设备上连接 Linux 实例,详细操作请参…

互联网早报:腾讯推出“微小号”,用虚拟手机号拨打电话收发短信

行业热点 1、腾讯推出“微小号”&#xff0c;用虚拟手机号拨打电话收发短信&#xff1b; 2、得物App:误操作发出数万 520 无门槛券,不是营销,订单算数&#xff1b; 3、滴滴网约车宣布进入南非市场&#xff0c;4 月将进入厄瓜多尔&#xff1b; 4、一季度抖音日活数据&#x…

数字虚拟人metahuman,苹果手机做动作捕捉

最近看到抖音上有人在卖数字虚拟人的教程&#xff0c;799元好贵&#xff0c;于是自己玩了玩&#xff0c;下面吧教程分享给大家 1.下载EPIC game模拟器&#xff0c;中文网址如下 https://www.unrealengine.com/zh-CN/metahuman-creator 点击启动应用既可以下载&#xff0c;下载…

JavaScript手机号码格式(正则表达式验证)支持最新电信199移动198联通166

最近公司项目需要对手机号进行校验&#xff0c;于是使用了“ /^1[34578]\d{9}$/ ”这个正则进行校验&#xff0c;后来测试提出当输入199开头的手机号时校验不通过&#xff0c;于是发现原来各大运营商新增加了一些新的手机号段。 以下为截止2018年1月各大运营商已知手机号码号段…

Android类似钉钉类的APP 实现禁止用户虚拟定位

参考&#xff1a;https://blog.csdn.net/mawei7510/article/details/80250416 在应用开发中&#xff0c;如果有签到打卡之类的功能&#xff0c;我们肯定需要在项目中禁止用户开启虚拟定位&#xff0c;导致在***米之外的距离模拟定位然后进行了打卡操作&#xff01; &#xff…