一、前言

本文主要是实出74HC595的简单控制功能实现(学习笔记整理)。

二、概述

(一)74HC595简述

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

在SCHCP的上升沿输入,在STCP的上升沿进入存储寄存器中去,如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7‘),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(低电平),存储寄存器的数据输出到总线。

74HC595支持级联,当多个74HC595级联一起时,通过数据线发送一个数据最终会移位给最后一个74HC595。因为级联数据会被挤到下一级的ic中,所以先发送的数据是到最后一级的74HC595.。

每次向74HC595发送一个字节,74HC595最先发到的是高位数据,也就是最先收到的数据到达Q7脚,当我们输出数据高位时,最高位的8个脉冲会到Q7脚(数据脚的最高位),如下图:

(二)引脚功能

(三)真值表

三、硬件连接

四、程序例程

1、头文件

#ifndef _74HC595_H_
#define _74HC595_H_#include "stm32f10x.h"
#include "io_bit.h"
#include "delay.h"#define SRCLK PAout(14)
#define RCLK PAout(13)
#define SER PAout(12)void HC595_Pin_Init(void);
void HC595_Send_Data(u8 data);
void HC595_Send_Byte(u8 dat1,u8 dat2,u8 dat3,u8 dat4);#endif

2、源文件

#include "74HC595.h"void HC595_Pin_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;//打开时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);// 改变指定管脚的映射 GPIO_Remap_SWJ_Disable SWJ 完全禁用(JTAG+SW-DP)GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);// 改变指定管脚的映射 GPIO_Remap_SWJ_JTAGDisable ,JTAG-DP 禁用 + SW-DP 使能GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_ResetBits(GPIOA, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14);
}void HC595_Send_Data(u8 data)
{u8 i = 0;for (i = 0; i < 8; i++){if (data & 0x80)        //先传输高位,通过与运算判断第八是否为1SER = 1;    //如果第八位是1,则与 595 DS连接的引脚输出高电平else                    //否则输出低电平SER = 0;SRCLK = 0;delay_us(20);SRCLK = 1;data <<= 1;}
}void HC595_Send_Byte(u8 dat1,u8 dat2,u8 dat3,u8 dat4)
{SRCLK = 1;RCLK = 1;HC595_Send_Data(dat1);HC595_Send_Data(dat2);HC595_Send_Data(dat3);HC595_Send_Data(dat4);RCLK = 0;delay_us(2);RCLK = 1;delay_us(2);RCLK = 0;}

注:

STM32F103C8T6主控中PA13和PA14默认不是GPIO口模式,需要配置成GPIO口模式

相关资料链接,有需要自行下载,谢谢!

链接:https://pan.baidu.com/s/1Tl-AHndfCAuOs3ykptsV2A 
        提取码:q7ks

STM32实现74HC595控制相关推荐

  1. stm32使用74HC595和74HC165

    stm32使用74HC595和74HC165 级联 165 和595 十六位输入输出 void main() { while(1) {SENDVAL595=SENDVAL595|0x0000;SEND ...

  2. STM32通过串口控制LED闪烁或者呼吸效果

    STM32通过串口控制LED闪烁或者呼吸效果 目录 STM32通过串口控制LED闪烁或者呼吸效果 1.准备工作 2.思路分析 3.实际操作 4.小结 1.准备工作 1.首先我们需要准备32的最小系统板 ...

  3. STM32硬件SPI控制TM1638 按键数码管LED显示模块

    STM32硬件SPI控制TM1638按键数码管LED显示模块   从淘宝买来的,TM1638专门是控制LED的,LED组合起来就可以变成数码管,还有按键,这个我就没管了,不想管了,发这个帖子只是为了记 ...

  4. stm32直流电机PID控制hal库(Cubemx)

    stm32直流电机PID控制hal库(Cubemx),一步步手把手教你怎么配置cubemx怎么写代码. 未对pid就行深入解析,不过相信您通过配置和写代码以后大概可以知道pid的主要作用. 文章目录 ...

  5. 【资料转发分享】基于STM32智能路灯灯光自动控制系统设计-基于STM32无刷电机BLDC速度控制器系统设计-基于STM32热释人体感应智能门禁报警系统设计-基于STM32居家加湿器控制仿真系统设计

    1604基于STM32智能路灯灯光自动控制系统设计-毕设课设资料 实现的功能如下,下图是仿真原理图: 通过ARM内部的ADC采集光敏电阻电压,判断电压值 电压值低于设定的值,表示光强太弱,开路灯 光强 ...

  6. arduino UNO利用74hc595控制8个LED状态(方式一)

    arduino UNO利用74hc595控制8个LED状态(方式一) 先上proteus仿真图: 程序: int ST = 8;//ST CP of 74HC595 int SH = 12;//SH ...

  7. esp32通过74HC595控制16个LED灯

    1. 74HC595介绍 74HC595是一个8位串行输入.并行输出的位移缓存器:并行输出为三态输出.在SCK 的上升沿,串行数据由数据脚(A)输入到内部的8位位移缓存器,并由Q7'输出,而并行输出则 ...

  8. STM32通过PWM控制ESC30C电调

    最近在搞一个水下推进器,这东西的控制其实跟四旋翼的螺旋桨控制差不多.但我也是第一次用STM32板子来控制电调驱动桨叶旋转,因此踩了很多坑.网上找了很多资料,但是很多都写的不是很清楚,这边稍微记录一下怎 ...

  9. 74hc595点亮点阵式led交通灯灯 c语言程序,89C51单片机C语言用四个74hc595控制四个LED实现交通灯...

    89C51单片机C语言用四个74hc595控制四个LED实现交通灯 (2009-05-16 18:52:38) 标签: 教育 #include #define uchar unsigned char ...

最新文章

  1. Uva 11997 多路归并
  2. NBT封面:纳米孔基因组测序快速临床诊断细菌性下呼吸道感染
  3. 面试体会|微软、头条、滴滴、爱奇艺NLP面试感想
  4. Mysql实战:主从同步
  5. python怎么处理数据_python panda怎么处理数据
  6. 深入理解java中的Soft references amp;amp; Weak references amp;amp; Phantom reference
  7. 阿里资深技术专家崮德:8 个影响我职业生涯的重要技能
  8. 13.相机和图像——聚焦于对象实战,不断变化的焦距,景深_3
  9. python 基础 学习 内置函数
  10. c语言斐波那契数列前20项每行5个数,求c++:源程序。前20项斐波那契数列 ,要求输出的时候每行输出五个...
  11. [整理] TPM 2.0 设备串口通讯协议中文文档
  12. 无法访问工作组计算机修复工具,用于局域网共享(Okshare)的一键修复工具
  13. 汽车租赁系统-车辆租赁管理系统-汽车租赁管理系统的设计与实现
  14. ribbon实现负载均衡
  15. Xiangqi UVA - 1589
  16. bat一键清理系统垃圾/系统日志
  17. Hwclock用法介绍
  18. MySQL Workbench 已停止工作 错误模块名称: KERNELBASE.dll 异常代码: 0xe0434352 程序无法正常启动:( 0xc000007b)
  19. 开源的价值观与文化的传递
  20. pyhanlp 共性分析与短语提取内容详解

热门文章

  1. TeamViewer使用心得
  2. Zxing图片识别 从相册选二维码图片解析总结
  3. 写一个抖音协议 价格你定
  4. 淘宝电商数据分析-Python
  5. [转]孙悟空无姓无名的时候,阎王生死簿是怎么写的呢?
  6. 达人评测 i5 13500h和1240p选哪个好 i5 13500h和1240p对比
  7. python判断用户名密码是否正确_python实现用户名密码校验
  8. 出行品类HarmonyOS高德地图集成过程分享
  9. VS2010出现的转换COFF期间失败问题
  10. 电脑配置要多少功率的电源?电源功率越大越好吗?