芯片的应用,Arduino基础入门篇22

发布时间:2019-10-06  栏目:编程  评论:0 Comments

Arduino开发板的普通IO引脚是有限的,必要时要对IO口进行扩展,才能满足外部设备对IO口的需求。本篇介绍74HC595芯片,使用它来扩展Arduino的IO口,用3个IO来控制8路LED灯。

74HC595是在单片机系统中常用的芯片之一。它的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片,使用74HC595可以节约单片机的io口资源,用3个io就可以控制8个数码管的引脚,它还具有一定的驱动能力,可以免掉三极管等放大电路,所以这块芯片是驱动数码管的神器,应用非常广泛。我们先看一下图一74HC595的引脚图。

   
最近由于找到的工作是偏于嵌入式方向,因此又重新开始学习已经丢弃两年的知识。新手学习知识感觉有一个通病:喜欢收集各种各样的视频、资料,网盘里收藏一大堆,但是却从没有打开看过,到头来还是个小白,只听说过几个概念,而实际却是不知所云,这就是所谓的”学习综合征”。而我也是其中的一员,最近痛定思痛,就准备根据一套资料沉下心学习下去,不再进入收集资料的大军。市场上关于嵌入式方面的视频或资料有很多,比如国嵌、韦东山、华清远见、朱有鹏等等,各有千秋但是最后还是殊途同归,以我之见把其中一套吃透也算是入门,之后的成长还是要靠工作中的沉淀,看源码,做项目才能提高。

74HC595芯片是一个串行输入,并行输出设备。其内部包括一个8位移位寄存器、一个存储器以及三态输出门电路,其中移位寄存器和存储器都有相互独立的时钟。

图片 1

   
现在准备根据韦东山老师的视频写一下自己学习的体会,这一次写的主要是关于如何看原理图,主要分为以下几个部分:GPIO和门电路,协议类接口(UART/I2C/SPI/NAND)、内存类接口。

图片 274HC595芯片

图一

一、GPIO和门电路原理图

1. 引脚说明

74HC595芯片引脚定义说明如下所示:

图片 3管脚定义

  • VCC、GND为芯片供电管脚,工作电压5V。

  • Q0~Q7这8个引脚是芯片的输出引脚。

  • DS引脚为串行输入引脚。我们需要将数据一位一位的写入该引脚。

  • STCP引脚为锁存引脚。当移位寄存器的8位数据全部传输完毕后,通过控制此引脚将数据复制到锁存器准备并行输出。

  • SHCP引脚为时钟引脚。通过控制此引脚将数据写入移位寄存器。

  • OE引脚为输出使能。其作用是控制锁存器里的数据是否最终输出到Q0-Q7输出引脚上。低电平时输出,高电平时不输出,本实验直接接在GND使其一直保持低电平输出数据。

  • MR是用来重置内部寄存器的引脚。低电平时重置内部寄存器。本实验直接连接在VCC上一直保持高电平。

  • Q7S引脚为串行输出引脚,专门用于芯片级联。

74HC595的数据端:

 
 General Purpose Input Output(通用输入/输出)简称为GPIO,或总线扩展器。通常GPIO寄存器可以分为三类:

2. 操作说明

根据74HC595引脚说明,有三个重要的引脚:数据引脚、锁存引脚、时钟引脚。

74HC595操作步骤 操作说明
latch = LOW 只有为low时才可以输入数据
data 通过data传输数据第一位,HIGH/LOW
clock = HIGH 数据锁存
clock = LOW 准备下一个
data… 继续上面步骤,直到传输完成
clock = HIGH 储存全部的数据
clock = LOW 禁止数据再进行传输
latch = HIGH 并行送出数据
  • Uno R3开发板
  • 配套USB数据线
  • 面包板及配套连接线
  • 74HC595芯片
  • 8个220Ω限流电阻
  • 8个LED发光二极管

QA–QH(有的也叫Q0-Q7):
八位并行输出端,可以直接控制数码管的8个段,也可以直接控制8个LED。

控制寄存器:为输入、输出、或其它特殊功能

1. 根据原理图搭建电路。

8个LED发光二极管的负极接开发板GND,正极分别接入220Ω限流电阻,电阻另一端分别接入74HC595芯片的Q0~Q7输出引脚。

74HC595的VCC、MR引脚接入开发板5V,OE、GND引脚接入开发板的GND。DS、SHCP、STCP这三个控制引脚分别接入开发板的8、9、10数字引脚。

实验原理图如下图所示:

图片 4实验原理图

实物连接图如下图所示:

图片 5实物连接图

QH’: 级联输出端。通常我们将它接下一个595的SI端,实现多个芯片之间的级联。

数据寄存器:1或0

2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

/* Shift 74HC595扩展IO,串行驱动8路LED灯*/int latchPin = 10;//锁存引脚int clockPin = 9; //时钟引脚int dataPin = 8; //数据引脚void setup (){ pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); //让三个脚都是输出状态}void loop(){ for (int data = 0; data < 255; data++) { digitalWrite(latchPin, LOW); //将ST_CP口上加低电平让芯片准备好接收数据 shiftOut(dataPin, clockPin, LSBFIRST, data); digitalWrite(latchPin, HIGH); //将ST_CP这个针脚恢复到高电平 delay; //暂停1秒钟观看显示效果 }}

SI: 串行数据输入端。

上拉寄存器:设置IO的输出模式是高阻,还是带上拉的电平输出,或者不带上拉的电平输出

3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

图片 6程序下载

8个LED灯移位进行亮灭显示。

图片 7实验现象

shiftOut()

  • 描述:将数据在时钟引脚脉冲控制下按位移出写入到数字引脚。
  • 函数原型:shiftOut(dataPin, clockPin, bitOrder, value)
  • 参数:
    • dataPin: 数据输入引脚。
    • clockPin: 时钟引脚。
    • bitOrder: 移位顺序。MSBFIRST、LSBFIRST。
    • value: 需要移位的数据。
  • 返回值:没有。

程序中将74HC595三个控制引脚设置为输出模式,然后使用shiftOut()函数将数据进行移位写入74HC595的移位寄存器,然后通过控制锁存引脚将数据进行锁存输出。shiftOut()函数的value参数是一个字节长度,即每执行一次会将一个字节进行移位输出。如果移位的数据大于一个字节,需要执行两次shiftOut()函数,例如:

//Do this for MSBFIRST serialint data = 500;// shift out highbyteshiftOut(dataPin, clock, MSBFIRST, (data >> 8));// shift out lowbyteshiftOut(dataPin, clock, MSBFIRST, data);// Or do this for LSBFIRST serialdata = 500;// shift out lowbyteshiftOut(dataPin, clock, LSBFIRST, data);// shift out highbyteshiftOut(dataPin, clock, LSBFIRST, (data >> 8));

74hc595的控制端说明:

图片 8图片 9

/SCLR(10脚): 低电平时将移位寄存器的数据清零。通常我们将它接Vcc。

 
 
上图所示,可以配置按键所以对应引脚控制寄存器为输入功能,LED引脚为输出功能,那么就通过按键控制LED灯的亮与灭。上拉(下拉)电阻是将不确定的信号通过一个电阻钳位在高(低)电平,电阻同时起限流作用。

SCK(11脚):上升沿时数据寄存器的数据移位。QA–>QB–>QC–>…–>QH;下降沿移位寄存器数据不变。图二是74HC595脉冲图。

  

图片 10

图片 11图片 12

图二

 
上图所示的电阻作用就是分别对应上拉电阻,与下拉电阻。引脚输出高电平,但由于后续电路的影响,输出的高电平不高,就是达不到VCC,影响电路工作,所以要接上拉电阻。下拉电阻情况相反,让芯片引脚输出低电平,结果由于后续电路影响输出的低电平达不到GND,所以接个下拉电阻。

控制移位寄存器

 
门电路用以实现基本逻辑运算和复合逻辑运算的单元电路。常用的门电路在逻辑功能上有与门、或门、非门、与非门、或非门、与或非门、异或门等几种。如下图所示:

SCK 上升沿 数据  移位        SCK 下降沿 数据  保持

图片 13

RCK(12脚):上升沿时移位寄存器的数据进入存储寄存器,下降沿时存储寄存器数据不变。通常我将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲,更新显示数据。图三为74HC595真值表。

二、协议类接口

图片 14

 
 协议类接口电路分为两个方面:硬件电路的搭建与引脚工作的时序。协议类接口主要实在两个设备之间进行通信,类比两个人的对话,就要解决两个问题:

图三

1、你说的话别人要能听懂(两个设备之间约定好相同的信号协议)

控制存储寄存器

2、双方说话的语速不能太快,要不然别人反应不过来(双方满足相同的时序要求)

RCK 上升沿,移位寄存器的数据进入存储寄存器。       RCK
下降沿,存储寄存器数据不变。

  •   UART

留下评论

网站地图xml地图