第一部部分用于快速查阅使用,详细的使用见文章第二部分

引脚图

14脚:DS(SER),串行数据输入引脚

13脚:OE,  输出使能控制脚,它是低电才使能输出,所以接GND

12脚:RCK,存储寄存器时钟输入引脚。上升沿时,数据从移位寄存器转存带存储寄存器。

11脚:SCK,移位寄存器时钟引脚,上升沿时,移位寄存器中的bit 数据整体后移,并接受新的bit(从SER输入)。

10脚:MR,低电平时,清空移位寄存器中已有的bit数据,一般不用,接 高电平即可。

9 脚 :串行数据出口引脚。当移位寄存器中的数据多于8bit时,会把已有的bit“挤出去”,就是从这里出去的。用于595的级联。

Qx:并行输出引脚

使用参数

VCC:2V~6V,5V最好

I Qn:+- 35mA

注意

始终记住,对595,最先从SER进去的bit,会从Q7(QH)出去,而最后从SER进入的bit,从Q0(QA)出去。

74HC595介绍

一张图片和一段文字,哪种信息传递方式给人的第一视觉冲击是最大的?我想大家心中都有答案。

这也是我文章标题的来由。废话就到这里,下面我就用图片来分析595这个chip。

74HC595的最重要的功能就是:串行输入,并行输出。3态高速位移寄存器(好腻害的说)

595里面有2个8位寄存器:移位寄存器、存储寄存器

移位寄存器

在我看来,74HC595的移位寄存器工作方式就像shou qiang弹夹。但是子弹的发射(移位寄存器中的数据转储到存储寄存器),又像是【散x弹】(因为是并行输出嘛)

为什么说和弹夹很像呢?

1、串行输入,已进入的位数据依次下移(所以叫移位寄存器)         |     子弹也是一颗一颗上的,先上的子弹,被后上的慢慢往下压。

2、第一个输入的位,是并行输出的最后一个位                          |     最先进入弹夹的子弹,最后射出。

74HC595的引脚图

14脚:DS,又叫SER  英文全称是:Serial data input ,顾名思义,就是串行数据输入口。

595的数据来源只有这一个口,一次只能输入一个位,那么连续输入8次,就可以积攒为一个字节了。

假如,我们要将二进制数据0111 1111 输入到595的移位寄存器中,下面来上一张动态图,模拟了前2个位输入的情景。

这个图有7帧,做了很久,毕竟不是做美工的。可谓术业有专攻,闻道有先后啊,还是要虚心学习 :)

0111 1111 这个数据完全输入后是这样的

我们还要注意一个脚:11脚,(shift register clock input)  移位寄存器时钟引脚。上升沿有效。

首先我们要介绍这个引脚的作用。

我们知道51单片机的工作离不开晶振,他使CPU的工作步调稳定有序,就像跑步时喊1,2,1的那个人。

那么这里的位移寄存器时钟也是同样的道理,当一个新的位数据要进来时,已经进入的位数据就在移位寄存器时钟脉冲的控制下,整体后移,让出位置。

上升沿:电平从低到高的那个过程。移位寄存器时钟在上升沿这个过程中才起作用。

存储寄存器

到这里我们已经大致讲了怎么上子弹,也把子弹上齐了。下面来将怎么将子弹打出去,也就是怎么将移位寄存器的数据转移到存储寄存器

存储寄存器是直接和8个输出引脚相通的,将移位寄存器的数据转移到存储寄存器后,Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 就可以接受带到我们

开始输入的一个字节的数据。所谓存储寄存器,就是数据可以存在这个寄存器中,并不会随着一次输出就消失,只要595不断电,也没有新 的

数据从移位寄存器中过来,数据就一直不变且有效。新的数据过来后,存储寄存器中的数据就会被覆盖更新。

12脚: (storage register clock input )  存储寄存器时钟

数据从位移寄存器转移到存储寄存器,也是需要时钟脉冲驱动的,这就是12脚的作用。它也是上升沿有效。

自此,我们已经讲解了一个595正常情况下的工作流程,下面写一个程序,让8个LED保持 亮暗亮暗.... 间隔的效果。

Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7   分别接  8个LED正极

14脚SER 接 单片机P3.4

11脚SCK 接 单片机P3.6

12脚RCK接  单片机P3.5

13脚OE接GND

10脚MR接VCC

9脚闲置不接

#include<reg51.h>
#include<intrins.h>typedef unsigned char uchar;
typedef unsigned int uint;/**********函数声明********************/
void SendTo595(uchar byteData);/***********************************/sbit SER = P3^4;    //p3.4脚控制串行数据输入
sbit SCK = P3^6;    //串行输入时钟
sbit RCK = P3^5;    //存储寄存器时钟void main()
{SendTo595(85);  //85的二进制:0101 0101while(1);}//功能:发送一个字节的数据给595,再并行输出
void SendTo595(uchar byteData)
{char i=0;    for(;i<8;i++){SER = byteData>>7;         //大家自己考量这2句byteData= byteData<<1;
SCK = 1;          //上升沿,让串行输入时钟变为高电平,并延时2个时钟周期
        _nop_();_nop_();SCK = 0;          //变为低电平,为下次准备
   }  /*位移寄存器数据准备完毕,转移到存储寄存器*/RCK = 1;         //上升沿,让存储寄存器时钟变为高电平,并延时2个时钟周期
   _nop_();_nop_();RCK = 0; }

扩展提升

见识到595的厉害了吧。138译码器通过3个输入口控制8个输出口,而且还只能是特定的8个输出值,

而595只用了一个输入口就可以输任意的8位数据。可谓短小精悍。

啥?你觉的1位控制8位输出还不够?让你的595串联起来吧!打造成加特林机关枪。

在上面的程序中用到的9脚,没用起作用,如果要让2个595串联起来的话,就需要它了。

想一下,我们将移位寄存器的8个位填满后,再往移位寄存器中塞一个会怎么样?也许你想到了。

对!移位寄存器的最后一个位数据会被挤出去,从哪里出去?就是从9脚输出的。如果我们把第一个595的

9脚连接到第二个的串行数据输入脚SER,那么,就形成了595的级联。这样,如果我们用2个595组合成了一个新的超级595,

这个草鸡595的移位寄存器和存储寄存器的容量都翻倍了,1口控制16口,有木有!你还可以继续级联下去!

最后还遗留2个 595 的脚没说

13脚OE  输出使能控制脚,如果它不工作,那么595的输出就是高阻态,595就不受我们程序控制了,这显然违背我们的意愿。

OE的上面画了一条线,表示他是低电平有效。于是我们将他接GND。

10脚MR ,位移寄存器清空脚,他的作用就是将位移寄存器中的数据全部清空,这个很少用到,所以我们一般不让他起作用,他

也是低电平有效,于是我们给他接VCC。

终于写完了,希望帮到大家。以后还会继续讲解其它的74系列的逻辑芯片,尽请期待!

如有错误欢迎指出。 :)

【C51】单片机芯片之——图解74HC595相关推荐

  1. 单片机芯片之——图解74HC595(第一部分)

    引脚图 14脚:DS(SER),串行数据输入引脚 13脚:OE,  输出使能控制脚,它是低电才使能输出,所以接GND 12脚:RCK,存储寄存器时钟输入引脚.上升沿时,数据从移位寄存器转存带存储寄存器 ...

  2. 【C51单片机学习笔记--DS1302时钟芯片蜂鸣器I2C总线AT24C02存储器】

    C51单片机学习笔记–DS1302时钟芯片&&蜂鸣器&&I2C总线&&AT24C02存储器 文章目录 一.DS1302时钟芯片介绍 二.DS1302时钟 ...

  3. 【单片机基础篇】74HC595芯片详解

    74HC595芯片详解 芯片简述:74HC595是一个8位串行输入.并行输出的位移缓存器:并行输出为三态输出.在SCK 的上升沿,串行数据由SER输入到内部的8位位移缓存器,并由QA~QH'输出,而并 ...

  4. C51单片机————总线与系统扩展

    C51单片机----总线与系统扩展 Created with Raphaël 2.1.2张三张三李四李四四哥,IO口不够用怎么办?你可以进行系统扩展!什么鬼?那是什么东西?...看书去 1.引文 前面 ...

  5. 基于C51单片机的万年历设计(LCD1602显示)

    C51单片机万年历设计 注:该程序基于普中科技C51 V2.2开发板设计,库函数和硬件资料均来自普中科技,侵删.main.c大部分为原创,如有雷同,纯属巧合. 名称:C51万年历. 硬件:以C51芯片 ...

  6. proteus8单片机c语言仿真教程,入门学习Proteus 8仿真软件以及C51单片机的LED点亮(C语言)——实例...

    入门学习Proteus 8仿真软件以及C51单片机LED的点亮(C语言)--实例 一.点亮LED的程序编译 1.打开Keil uVision 4新建一个工程 2.在Atmel下寻找AT89C52芯片并 ...

  7. 初识C51单片机(详解)

    前言: 单片机是一种我们常见的开发板,我们经常会在一些项目中使用到它.而今天我们要介绍的是C51单片机,下面来介绍一下今天的"主角":STC89C52RC40I-LQFP44单片机 ...

  8. 【C51开发应用】基于C51单片机开发的循迹灭火机器人

    基于C51单片机开发的循迹灭火机器人 一.作品摘要 二.系统设计步骤 三.方案设计 3.1   小车主体设计 3.1.1   购买玩具小车进行改装 3.1.2   自己设计小车主体结构 3.2   电 ...

  9. Proteus 8仿真以及C51单片机广告灯的设计(C语言)实例

    Proteus 8仿真以及C51单片机广告灯的设计(C语言)实例 一. 广告灯程序编译 二. Proteus8 仿真 三. 开发板调试 四. 注意事项 一. 广告灯程序编译 打开Keil uVisio ...

  10. C51单片机的省电模式

    C51单片机的省电模式 1.C51具有两种省电模式,分为IDLE 空闲模式和Doze/Deep Doze/Sleep 掉电模式. 2.PCON.BIT0 = 1 时,处于IDLE 空闲模式. 3.PC ...

最新文章

  1. 特征工程之离散变量处理
  2. linux内核启动时报错ubi0 error: validate_ec_hdr: bad data offset 256, expected 128
  3. 国产化达梦数据库数据迁移文档:oracle11g数据库转达梦8数据库实例演示
  4. 程序员为什么热衷于造轮子,而不是硬照,升职加薪吗?
  5. 【项目合作】指甲识别与实时渲染
  6. 用java网络编程中的TCP方式上传文本文件及出现的小问题
  7. 数学建模三大模型以及十大算法
  8. 基于R语言的DynNom包绘制动态列线图
  9. unity移动平台阴影解决方案
  10. 十年了,测试变了,我也变了,但总有一些东西未变
  11. mysql报错:1194-table “xxx“ is marked as crashed and should be repaired
  12. mysql导入数据库之后触发器没有权限_MYSQL设置触发器权限问题的解决方法
  13. 关于静态变量的缺省值
  14. Thinkphp3.2 PHPMailer 发送 QQ邮箱 163邮箱
  15. win10 windows文件查找通配符
  16. 新版androd studio怎样连接第三方模拟器
  17. UMLChina建模竞赛第3赛季第4轮:“答题抽奖”建模
  18. windows10环境安装openssl
  19. 大数据时代:大数据引擎或改变大数据竞争格局
  20. Python水仙花数,鸡兔同笼问题,百钱买百鸡问题,斐波那契数列,模拟发微信红包

热门文章

  1. 浅析统一操作系统UOS与深度Deepin区别
  2. vs2008gridview自带删除功能代码怎么实现
  3. unity游戏开发需要学什么?
  4. 重庆声光电安全预警平台项目启动会顺利召开
  5. Java面向对象练习题之计算圆的面积和周长
  6. Photoshop使用十大技巧
  7. Win10喇叭图标出现红叉提示未安装任何音频输出设备
  8. 聊一聊如何准备计算机Python二级考试
  9. Docker 基于centos7制作jdk8 镜像并添加字体; 运行jar 包
  10. IEEE Fellow、AAAS Fellow 同日公布,清华唐杰、京东郑宇等数十位华人入选