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);
}
}
全部0条评论
快来发表一下你的评论吧 !