74HC595和74hc164一样是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片, 使用74HC595可以节约单片机mcu的io口资源,用3个io就可以控制8个数码管的引脚,他还具有一定的驱动能力,可以免掉三极管等放大电路,所以这块芯片是驱动数码管的神器.应用非常广泛,点这里可以下载完整的74HC595中文资料:http://www.51hei.com/f/74HC595中文资料.pdf


    74HC595引脚图


      74HC595管脚功能

下面我来介绍一下 74HC595工作原理:
74HC595的数据端:
QA--QH: 八位并行输出端,可以直接控制数码管的8个段。
QH': 级联输出端。我将它接下一个595的SI端。 
SI: 串行数据输入端。

74hc595的控制端说明:

/SCLR(10脚): 低电平时将移位寄存器的数据清零。通常我将它接Vcc。 
SCK(11脚):上升沿时数据寄存器的数据移位。QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了。我通常都选微秒级) 
 
控制移位寄存器 
SCK 上升沿 数据  移位        SCK 下降沿 数据  保持  
RCK(12脚):上升沿时移位寄存器的数据进入存储寄存器,下降沿时存储寄存器数据不变。通常我将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。我通常都选微秒级),更新显示数据。 
 
控制存储寄存器 
RCK 上升沿 移位寄存器 的 数据进入 存储寄存器       RCK  下降沿 存储寄存器数据不变   
/G(13脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。 
注:74164和74595功能相仿,都是8位串行输入转并行输出移位寄存器。74164的驱动电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些。 
74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。
与74hc164只有数据清零端相比,74hc595还多有输出端时能/禁止控制端oe,可以使输出为高阻态。所以是用这块芯片会更方便
74HC595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。数据在SHcp(见时序图)的上升沿输入,在STcp(见时序图)的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位
寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出
(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使
能 OE时(为低电平),存储寄存器的数据输出到总线。
这里有单片机驱动74hc595的方法:http://www.51hei.com/chip/1799.html


               74HC595真值表

                74hc595最高电压和最低电压
 


               74HC595时序图


      74HC595逻辑图

74HC595和74HC164的区别主要有:

1、74HC595有锁存器,所以在移位过程中输出可以保持不变;而74HC164没有锁存器,所以每产生一个移位时钟输出就改变一次。这是二者的最大区别

2、74HC595使用专门的Q7'引脚实现多片级联;74HC164直接使用输出引脚Q7级联

3、74HC595有使能OE,OE无效时输出引脚为高阻态;而74HC164没有使能引脚

4、74HC595的复位是针对移位寄存器的,想要复位LATCH寄存器还须ST_CP上升沿将移位寄存器内容加载到锁存寄存器;也就是说:74HC595的复位是同步的,74HC164的复位是异步的,所以74HC164的复位更简单

5、74HC164有对应的74HC165并转串芯片

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();elseHC595_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

STm32驱动74HC595引脚图时序图工作原理相关推荐

  1. STM32——驱动7引脚OLED

    STM32驱动7引脚的OLED 寒假在家里无聊又不能出门,开学可能还延迟了(新型肺炎最近比较猖狂)武汉加油!陕西加油!全国一起加油!一定要减少出门啊!!! 放假前带了一个OLED屏幕,想着刚好没有接触 ...

  2. UML之顺序图(时序图)

    UML学习之顺序图(时序图绘制) 1. 什么是时序图 时序图(Sequence Diagram),又名顺序图.序列图.循序图,是一种UML交互图.它通过描述对象之间发送消息的时间顺序显示多个对象之间的 ...

  3. UML 类图-时序图-用例图

    文章目录 1. UML类图 1.1 泛化(Generalization) 1.2 实现(Realization) 1.3 关联(Association) 1.4 聚合(Aggregation) 1.5 ...

  4. 机械动作时序图怎么画_快速学习时序图:时序图简介、画法及实例

    原标题:快速学习时序图:时序图简介.画法及实例 时序图作为常用的UML交互图,可以直观的传达系统内外之间的交互过程,经常用在详细设计文档中.下面本文综合参考了多篇时序图的教程,根据作者的思路将时序图做 ...

  5. UML 建模步骤 用例图 类图 对象图 包图 顺序图/时序图 状态图 活动图 协作图

    统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明.可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言. UML是面向对象设计的建 ...

  6. UML顺序图/序列图/时序图

    UML顺序图/序列图/时序图 UML时序图 什么是顺序图 基本元素 参与者 对象 生命线 激活框 消息 绘制工具 visio 亿图 UML时序图 什么是顺序图 为了实现系统功能,若干个对象之间需要交互 ...

  7. 火车购票系统服务器端uml活动图,火车购票完整系统UML类图时序图状态图协作图活动图对象图用例图.doc...

    火车购票完整系统UML类图时序图状态图协作图活动图对象图用例图 <UML面向对象分析>课程 实践项目报告 项目名称: 网上订购火车票系统 项目组成员: 学 号: 班 级: 指导 教师: 2 ...

  8. ecg 幅度_心电图 (ECG) 与光电容积图 (PPG) 基本工作原理,如何测量?

    ECG/PPG量测解决方案 摘要 本应用文件介绍了心电图 (ECG) 与光电容积图 (PPG) 的基本工作原理,讨论了ECG与PPG生理信号的量测,以及提高可靠性.实现高精度电气特性的难点.一般高精准 ...

  9. 什么是序列图/时序图?

    前言 UML Sequence Diagrams是交互图,详细说明了如何执行操作. 它们捕获协作环境中对象之间的交互. 序列图是时间焦点,它们通过使用图表的垂直轴来直观地显示交互的顺序,以表示消息的发 ...

  10. UML 顺序图(时序图) sequence diagram

    1. 什么是顺序图 是强调消息时间顺序的交互图.时序图描述类系统中类和类之间的交互,它将这些交互建模成消息交换.时序图是一个模型,用于描述对象间如何随着时间在某些行为方面进行协作.(强调的是消息的时间 ...

最新文章

  1. “芯片大脑“是什么?科学家提出了“忆阻性神经混合芯片“这一概念
  2. 【文本描述增强】标准屏幕字段文本描述更改增强
  3. .sln from VS2005 convert to VS2008
  4. 请简要说明一下CyclicBarrier和CountDownLatch的区别?
  5. 两种驱动系统运行的方式--分时的方式
  6. 使用代码创建Hybris storefront订单时遇到错误No result for the given example [TitleModel (
  7. 四、spring boot 1.5.4 日志管理
  8. poj 2096 , zoj 3329 , hdu 4035 —— 期望DP
  9. 如何批量查问PR值、百度权重、百度快照及收录量,用BlueCatTools批量网站查询工具
  10. NYOJ273 - 字母小游戏
  11. 你这几天因为 YYYY-MM-dd 被提 BUG 了吗??
  12. 下城投 × 奇点云 |「数智城投驾驶舱」,打造转型示范新样板
  13. 使用自定义注解实现接口参数校验
  14. 透透彻彻IoC(你没有理由不懂!)
  15. 5G网络时钟:ePRTC
  16. python skimage 填补图像孔洞
  17. 手动实现最简单的Android热修复(最新最全详细小白教程)
  18. 四川大学考研真题 || 信息资源管理导论(二)
  19. 数据分析必备|你不得不知道的11款数据分析工具
  20. 双象空间前方交会代码_基于联觉效应的VR交互式图形与图像混合建模

热门文章

  1. ArcGIS发布地图服务--ArcMap
  2. 远程屏幕共享软件哪个比较好用
  3. filenet java配置_连接到filenet的外部java应用程序服务器
  4. SPSS 数据的统计分析
  5. Django下载服务器文件到本地
  6. 八天学会Ansys命令流
  7. 使用STM32的I2S协议读取麦克风INMP441
  8. ZZULIOJ1016
  9. graphpad prism图标设置_科研绘图软件-Graphpad prism使用教程(六)
  10. Python4Delphi 安装使用注意