【单片机基础篇】74HC595芯片详解
74HC595芯片详解芯片简述:74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SER输入到内部的8位位移缓存器,并由QA~QH'输出,而并行输出则是在SCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。芯片主要功能多用为:扩展端口,减小单
74HC595芯片详解
芯片简述:74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SER输入到内部的8位位移缓存器,并由QA~QH'输出,而并行输出则是在SCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。
芯片主要功能多用为:扩展端口,减小单片机芯片端口的压力。
引脚说明
原理:
74HC595芯片,重点需要了解的是QA~QH,SER,SCK和RCK
整个流程可以简述为:外部输入一个高电平(或低电平)到SER,此时SCK 从低电平到高电平(切换一个上升沿),会记录一位状态,以此类推,8位都填充入寄存器后,触发RCK从低电平到高电平(切换一个上升沿),它会把之前SCK移位寄存器记录的8位移进数据寄存器,并通过8位并行数据端口输出。

注意:先输入的位控制的是QH端,最后输入的是控制QA端
功能演示:
实现对QA端口进行控制LED灯闪烁,其他端口保持低电平不工作


代码参考:
/**************************************************************************************
* 74HC595芯片实验 *
***************************************************************************************/
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include<intrins.h> //因为要用到左右移函数,所以加入这个头文件
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);
}

总结不好多多担待,文章只单纯个人总结,如不好勿喷,技术有限,有错漏麻烦指正提出。本人QQ:373965070
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)