74HC595是硅结构的CMOS器件, 兼容低电压TTL电路,遵守JEDEC标准。 74HC595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。 数据在SHcp(移位寄存器时钟输入)的上升沿输入到移位寄存器中,在STcp(存储器时钟输入)的上升沿输入到存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。 移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。

8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。三态。

将串行输入的8位数字,转变为并行输出的8位数字,例如控制一个8位数码管,将不会有闪烁。

特点

 

8位串行输入 /8位串行或并行输出 存储状态寄存器,三种状态

输出寄存器(三态输出:就是具有高电平、低电平和高阻抗三种输出状态的门电路。)可以直接清除 100MHz的移位频率

 

输出能力

 

并行输出,总线驱动; 串行输出;标准中等规模集成电路

595移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。

参考数据

Cpd决定动态的能耗,

Pd=Cpd×VCC×f1+∑(CL×VCC^2×f0)

F1=输入频率,CL=输出电容 f0=输出频率(MHz) Vcc=电源电压

 

引脚说明

符号 引脚 描述

Q0…Q7 8位并行数据输出,其中Q0为第15脚

GND 第8脚 地

Q7’ 第9脚 串行数据输出

MR 第10脚 主复位(低电平)

SHCP 第11脚 移位寄存器时钟输入

STCP 第12脚 存储寄存器时钟输入

OE 第13脚 输出有效(低电平)

DS 第14脚 串行数据输入

VCC 第16脚 电源

 

 

 

 

注释

H=高电平状态

L=低电平状态

↑=上升沿

↓=下降沿

Z=高阻

NC=无变化

×=无效

当MR为高电平,OE为低电平时,数据在SHCP上升沿进入移位寄存器,在STCP上升沿输出到并行端口。

 

74HC595.c

------------------------------------------------------------------------------------------------------------------------------------------------------

 

#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h" #include "74HC595.h"
/* 延时模块82615468 sp-320-12
* */
static void delay(u32 t)
{
u32 i;
while(t--)
for (i = 0; i < 1; i++);
} void HC595Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(HC595_CLK_GPIO_CLK | HC595_DATA_GPIO_CLK | HC595_CS_GPIO_CLK, ENABLE); GPIO_InitStructure.GPIO_Pin = HC595_CLK_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(HC595_CLK_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = HC595_DATA_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(HC595_DATA_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = HC595_CS_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(HC595_CS_GPIO, &GPIO_InitStructure);
HC595_CLK_H();
HC595_DATA_H();
HC595_CS_H(); }
void HC595Send(u8 data)
{
u8 j;
for (j = 8; j > 0; j--)
{
if(data & 0x80)
HC595_DATA_H();
else
HC595_DATA_L();
HC595_CLK_L(); //上升沿发生移位
delay(1);
data <<= 1;
HC595_CLK_H();
delay(1);
}
//HC595Load();
} void HC595Load(void)
{
HC595_CS_L();
HC595_CS_H();
} /*
void LedRowOn(u8 Row7_0, u8 Row15_8, u8 Row16_23,u8 Row31_24)
{
HC595Send(Row15_8);
HC595Send(Row7_0);
HC595Send(Row31_24);
HC595Send(Row16_23);
HC595Load();
}
*/ void LedRowOut(u32 Data)
{
HC595Send(Data >> 24);
HC595Send(Data >> 16);
HC595Send(Data >> 8);
HC595Send(Data >> 0);
HC595Load();
} //end of file

 

74HC595.h

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#ifndef __74HC595_H__

#define __74HC595_H__

#define HC595_CLK_PIN          GPIO_Pin_6

#define HC595_CLK_GPIO          GPIOA

#define HC595_CLK_GPIO_CLK      RCC_APB2Periph_GPIOA

#define HC595_CLK_H()           GPIOA->BSRR = HC595_CLK_PIN

#define HC595_CLK_L()         GPIOA->BRR  = HC595_CLK_PIN

#define HC595_CS_PIN          GPIO_Pin_7

#define HC595_CS_GPIO           GPIOA

#define HC595_CS_GPIO_CLK       RCC_APB2Periph_GPIOA

#define HC595_CS_H()            GPIOA->BSRR = HC595_CS_PIN

#define HC595_CS_L()         GPIOA->BRR  = HC595_CS_PIN

#define HC595_DATA_PIN        GPIO_Pin_10

#define HC595_DATA_GPIO         GPIOE

#define HC595_DATA_GPIO_CLK     RCC_APB2Periph_GPIOE

#define HC595_DATA_H()          GPIOE->BSRR = HC595_DATA_PIN

#define HC595_DATA_L()       GPIOE->BRR  = HC595_DATA_PIN

void HC595Send(u8 data);

void HC595Init(void);

void HC595Load(void);

void LedRowOn(u8 Row7_0, u8 Row15_8, u8 Row16_23,u8 Row31_24);

void LedRowOut(u32 Data);

#endif

 

74HC595 for stm32 源代码下载

最新文章

  1. easyuidatagrid中load,reload,loadData的区别
  2. codevs5164 逆波兰表达式
  3. Android Touch消息传递机制探究分析
  4. 【转】UGUI实现unity摇杆
  5. php大力力 [007节]php静态表量
  6. poj 1556 The Doors(线段相交,最短路)
  7. iOS: performSelectorOnMainThread(译)
  8. C# 计算日期时间的间隔天数
  9. Elasticsearch基础教程
  10. Gartner容器市场指南中国语境:容器成为新常态,灵雀云等本地厂商在选择中占据优势
  11. Python3 单下划线_双下划线__开头
  12. Python class NameError name &quot;xxx&quot; is not defined
  13. 算法与cpu
  14. 设置 sideload Outlook Add-ins
  15. 微信小程序 - 分包加载(独立分包)
  16. 论DATASNAP远程方法支持自定义对象作参数
  17. Java并发基础概念
  18. mongo 指令
  19. [BZOJ1143][CTSC2008]祭祀river(Dilworth定理+二分图匹配)
  20. maya2013安装失败如何卸载重装

热门文章

  1. jquery中事件重复绑定以及解绑问题
  2. 李洪强漫谈iOS开发[C语言-013]-常量
  3. winform自定义文件程序-- 不允许所请求的注册表访问权(ZSSQL)
  4. [topcoder]AvoidRoads
  5. iOS 10 使用相机及相簿闪退的问题修正
  6. Java API ——StringBuffer类
  7. Call to undefined function pg_
  8. 新版本的tlplayer for android ,TigerLeapMC for windows发布了
  9. 配置oschina for pc 开发环境
  10. android 自动调整屏幕分辨率