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

74HC595芯片详解

       芯片简述:74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SER输入到内部的8位位移缓存器,并由QA~QH'输出,而并行输出则是在SCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。

     芯片主要功能多用为:扩展端口,减小单片机芯片端口的压力。

 

引脚说明

 【单片机基础篇】74HC595芯片详解_第1张图片          【单片机基础篇】74HC595芯片详解_第2张图片  

 

原理:

    74HC595芯片,重点需要了解的是QA~QH,SER,SCK和RCK

    整个流程可以简述为:外部输入一个高电平(或低电平)到SER,此时SCK 从低电平到高电平(切换一个上升沿),会记录一位状态,以此类推,8位都填充入寄存器后,触发RCK从低电平到高电平(切换一个上升沿),它会把之前SCK移位寄存器记录的8位移进数据寄存器,并通过8位并行数据端口输出。

【单片机基础篇】74HC595芯片详解_第3张图片

 

注意:先输入的位控制的是QH端,最后输入的是控制QA端

 

功能演示:

实现对QA端口进行控制LED灯闪烁,其他端口保持低电平不工作

【单片机基础篇】74HC595芯片详解_第4张图片

【单片机基础篇】74HC595芯片详解_第5张图片

 

代码参考:

/**************************************************************************************
*		              74HC595芯片实验												  *																				  
***************************************************************************************/

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器
#include		//因为要用到左右移函数,所以加入这个头文件

typedef unsigned int u16;	  //对数据类型进行声明定义

sbit SI_595 = P0^0;
sbit SCK_595 = P0^1;
sbit RCK_595 = P0^2;


#define SPEED 50000

/*******************************************************************************
* 函 数 名         : delay
* 函数功能		   : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
	while(i--);	
}

void setSck(u16 j)
{
    
	SCK_595 = 0;
	SI_595 = j;
	SCK_595 = 1;
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
void main()
{	

	RCK_595 = 0;

    setSck(0);
    setSck(0);
	setSck(0);
	setSck(0);
	setSck(0);
	setSck(0);
    setSck(0);
    setSck(1);

	RCK_595 = 1;

	delay(SPEED);
	delay(SPEED);
	delay(SPEED);
	delay(SPEED);
	delay(SPEED);

}

 

 

 

【单片机基础篇】74HC595芯片详解_第6张图片

 

总结不好多多担待,文章只单纯个人总结,如不好勿喷,技术有限,有错漏麻烦指正提出。本人QQ:373965070

 

 

你可能感兴趣的:(嵌入式,C语言)