STM32+74HC595

article/2025/11/9 14:45:54

74HC595功能是将串行数据(由SHCP\CLK、DS\DATA输入串行数据)转换并行数据(芯片上的QA~QH八个数据输出口);

具体工作方式是:由CLK提供时钟,DATA输入高低电平(数据),CLK每输入一个上升沿,数据移位,当所有数据输入完成后,CS\STCP输入一个上升沿,将数据输出到8个输出口;

如果要使用多个HC595,只需将HC595的Q7S接入下一个HC595的DS\DATA, 提供相同的CLK,当然CS\STCP也相同(同时输出)。

分析如上时序图:

SI\DS\TATA   数据输入

SCK\SHCP\CLK   上升沿 移位寄存器移位

RCK\STCP\DS      上升沿 将移位寄存器中数据输出到8个口

OE    低电平输出使能(如果用HC595控制数码管、LED,可以将PWM输入OE以控制亮度)

 

 

SHCP\CLK即时钟信号,DS\DATA在一开始输入一段高电平,即输入1,在这段高电平中间,SHCP\CLK 输入了一个上升沿,所以会将1移入移位寄存器,因为在一开始MR\SCLR(低电平清零移位寄存器)输入了一段低电平,所以移入1后,此时移位寄存器应该是:1000 0000 ,再之后便是RCK\STCP\DS 输入了一个上升沿,将 移位寄存器 中的数据进入 存储寄存器 ,因为此时OE为低电平,所以会将 存储寄存器 中数据通过QA~QH 8个口输出,此时应该是QA为高电平,其他为低电平,即QA~QH:1000 0000。

然后RCK\STCP\DS 又输入了一个上升沿,所以应该是QB为高电平,其他为低电平,QA~QH: 0100 0000。以此类推。

直到输入了第8个上升沿QA~QH: 0000 0001 

第9个上升沿: QA~QH: 0000 0000   Q2A~Q2H: 1000 0000

 

本次顺便学习了一下STM32CubeMX的使用,STM32CubeMX目前只支持HAL库和LL库,所以我的程序使用的是HAL库,一般学习初学STM32都是使用正点原子的板子和例程,使用的是标准库,所以不能直接copy(挺简单的自己重新写一下就行)。

程序:

#include "hc595.h"#include "stm32f1xx_hal.h"#define HC595_CLK_H()    HAL_GPIO_WritePin(GPIOB, HC595_CLK_Pin, GPIO_PIN_SET)
#define HC595_CLK_L()    HAL_GPIO_WritePin(GPIOB, HC595_CLK_Pin, GPIO_PIN_RESET)#define HC595_DATA_H()   HAL_GPIO_WritePin(GPIOB, HC595_DATA_Pin, GPIO_PIN_SET)
#define HC595_DATA_L()   HAL_GPIO_WritePin(GPIOB, HC595_DATA_Pin, GPIO_PIN_RESET)#define HC595_CS_H()     HAL_GPIO_WritePin(GPIOB, HC595_CS_Pin, GPIO_PIN_SET)
#define HC595_CS_L()     HAL_GPIO_WritePin(GPIOB, HC595_CS_Pin, GPIO_PIN_RESET)#define HC595_CLK_UP()   HC595_CLK_L();\__NOP();\HC595_CLK_H()
#define HC595_CS_UP()    HC595_CS_L();\__NOP();\HC595_CS_H()/*
16  VCC          电源              2V-6V
15  QA           并行输出          QB QC QD
14  SI/DS        DATA             串行数据输入
13  OE_          输出使能          PWM控制亮度
12  RCK/STCP     CS               输出到锁存器时钟
11  SCK/SHCP     CLK              DATA输入时钟
10  SCLR/MR      低电平清零        接VCC
9  SQH/Q7S       串行数据输出       接下一个595*/
void HC595SendData(uint8_t data)
{uint8_t j;for (j = 0; j < 8; j++){if(((data<<j) & 0x80) !=0) HC595_DATA_H();else HC595_DATA_L();HC595_CLK_UP();}//HC595Load();
}void HC595Load(void)
{HC595_CS_UP();
}void LedRowOn(uint8_t Row7_0, uint8_t Row15_8, uint8_t Row16_23,uint8_t Row31_24)
{HC595SendData(Row15_8);HC595SendData(Row7_0);HC595SendData(Row31_24);HC595SendData(Row16_23);HC595Load();
}void LedRowOut(uint32_t Data)
{// HC595SendData(Data >> 24);//HC595SendData(Data >> 16);HC595SendData(Data >> 8);HC595SendData(Data >> 0);HC595Load();
}
while(1) {uint32_t val = 1;for(int i=0; i<16; i++){LedRowOut(val);val <<= 1;delay_ms(100);}
}

结束。


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

相关文章

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…

uni-app 实现用户点击后自动拨打指定电话号码

uni 内部提供了一个makePhoneCall函数 那我们就直接看代码 <template><view click "phone">13510657575</view> </template><script>export default {data() {return {}},onLoad() {},methods: {phone() {uni.makePhoneCall({phoneN…

移动端uni-app拨打电话

需求&#xff1a;点击电话图标&#xff0c;手机打开拨号界面并已复制电话号码 官方API&#xff1a;uni.makePhoneCall(OBJECT) | uni-app官网 很简单的一个点击事件就可以完成了&#xff1a; <view class"base-icon phone" click"goPhone(item)">…

虚拟中间号的具体用法

虚拟中间号要说怎么用&#xff0c;不如说用在哪儿。广义上来说&#xff0c;所有需要用到手机号的场景&#xff0c;虚拟码号同样也是适用的。 虚拟中间号的核心应用场景第一是“换”&#xff0c;即使用虚拟码号替换真实的手机号码&#xff0c;用这种方法实现对于真实号码的隐藏…

Delphi D10.X安卓APP开发中获取硬件信息及手机号

Demo与代码已上传到CSDN下载。 这里简单说一下代码内容&#xff0c;完整代码请自行下载&#xff0c;不清楚的欢迎留言交流。 前言 演示Demo使用了我自己开发的一个控件&#xff0c;TLayoutPro 《Delphi D10.3 LayoutsPro 控件简介 -避免输入焦点被虚拟键盘遮挡》请查看并下载…

饿了么虚拟号码可以发短信吗_饿了麽APP逆向及爬虫实现详参

一、前言 今天主要以饿了麽为例,讲解一下APP逆向的大致流程,以及遇到问题的处理办法。 二、概述 APP逆向的目的是为了了解APP本身的运行逻辑,进行修改或进行还原。涉及到的技术和工具,见下图。 对于抓包我就不详细讲了,不清楚的看一下我之前的文章。 HTTPS抓包与手机抓包,…