74HC595芯片的工作原理和用法简单介绍

描述

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

74HC595引脚图

数码管

74HC595管脚功能

数码管

74HC595工作原理

74HC595的数据端

数码管

74HC595的控制端说明

数码管

74HC595的引脚端说明

数码管

用法简单介绍

当SCK为上升沿的时候,由数据线端(既14引脚,也叫SI或者DS)输入的数据将在每一个上升沿周期,进行移位,当SCK为低电平时,将保存数据,依次类推数码管

上升沿为电平从低到高的那个过程。如下图红色线所示。下降沿即为电平从高电平到低电平的过程。

数码管

当RCK(既输出储存器锁存时钟)为上升沿时,数据从移位寄存器转存带存储寄存器。即刚刚在74HC95中的SI数据线端写入的信息,将在QA-QH端口呈现出来。

如下所示

数码管

以下面原理图为例子,编写74HC595驱动,其中OE端需要接地。

数码管

#include "reg52.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define  GPIO_LED P0  // 定义P0  IO口为GPIO_LED
sbit SRCLK=P3^6;      //74HC595的11引脚连接在单片机的36引脚
sbit RCLK1=P3^5;      //74HC595的12引脚连接在单片机的35引脚
sbit SER=P3^4;        //74HC595的14引脚连接在单片机的34引脚
void delay(u16 i)
{
 while(i--);
}
void Hc595SendByte(u8 dat)
{
  u8 a;
  SRCLK=0;
  RCLK1=0;  //初始化,将SRCLK、RCLK1拉低
 for(a=0;a< 7;a++)
  {
  SER=dat > >7;   //将主函数传进的参数右移7为后赋值给SER,即74HC595的数据端
  dat< <=1;      //在上一次的dat值中,左移一位后在重新赋值给dat,被移除的位等于写入74HC595的位  

  SRCLK=1;
  _nop_();
  _nop_();     //上升沿,让串行输入时钟变为高电平,并延时2个时钟周期
  SRCLK=0;

  }            //循环了8次后,即*位全部写入了74HC595中


   /*位移寄存器数据准备完毕,转移到存储寄存器*/
  RCLK1=1;
  _nop_();
  _nop_();    //上升沿,让存储寄存器时钟变为高电平,并延时2个时钟周期
  RCLK1=0;
}
void main()
{
 u8 ledNum;
 ledNum=0x01;
 while(1)
 {
  GPIO_LED=0x00;
  Hc595SendByte(ledNum);
  ledNum=_crol_(ledNum,1);
  delay(50000);
 }
}
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分