关于74HC595食用过程

什么是74HC595

74HC595是一颗单片机IO口扩展芯片,阅读芯片资料后,发现它有以下特点:

  1. 8位串行输入
  2. 8位串行或并行输出
  3. 引脚可输出低电平,高电平以及高阻态
  4. 输出寄存器可以直接清除

74HC595通过将串行输入转为并行输出,只占用单片机3个I/O即可引出更多的管脚,大大的节省了单片机的I/O资源。


74HC595管脚说明

image.png
如图74HC595总共拥有16个引脚,以下是其功能:

引脚号定义功能
14脚DS(SER)串行数据输入引脚
0-7脚Q0…Q7并行数据输出
8脚GND
16脚VCC电源
9脚Q7S级联输出端(用于接下一个74HC595的DS)
10脚MR清空移位寄存器
11脚SCK(SHCP)移位寄存器时钟引脚(上升沿)
12脚RCK(STCP)存储寄存器时钟输入引脚(上升沿)
13脚OE输出使能控制脚(低电平有效)

功能表

image.png


食用方法

通常我们会用将SCK,RCK和DS三根线与单片机I/O接口连接
因此我会重点讲述这三根线的使用

我们先来分析一下74HC595的原理
如图
image.png

这是8个寄存器,我们可以把它当作一个栈,DS用来输入数据,当移位寄存器时钟引脚(SCK)处于上升沿的的时候,这根引脚的状态将被保存在第一个位置,而原先在这里的数据将被移到下一位
如下图
image.png

image.png

image.png

以此类推,直至8位寄存器全部填满

那么
寄存器满了之后如果DS还有数据输入呢

如果你的Q7S管脚恰好一不小心接到了另外一个74HC595DSimage.png

那么最后一位被移出去的数据就会做为下一个74HC595的输入
image.png

寄存器的最后一位被填满后,就需要存储寄存器时钟输入引脚(RCK)
image.png

存储寄存器时钟输入引脚(RCK)处于上升沿的的时候,寄存器将会将内部的数据全部输出
如图
image.png
image.png

如上所述,74HC595就可以进行串行输入转并行输出了


示例代码

这是我用51单片机和16*16LED点阵屏播放Badapple的时候写的74HC595的驱动代码
这里使用了4块74HC595引出32根管脚用于驱动点阵屏

#include "IO.h"
void HC595_in(u8 datah1,u8 datah2,u8 datal1,u8 datal2)
{
	u8 i;
	SE = 0;//DC管脚 
	SC = 0;//移位寄存器时钟引脚(SCK)
	RC = 0;//存储寄存器时钟输入引脚(RCK)
	for(i=1;i<=8;i++)//对输入的8位二进制数遍历来控制DC输入的电平
	{
		if(datal2 >= 0x80)SE = 0;
		else SE = 1;
		SC = 0;
		SC = 1;
		datal2 <<= 1;
	}
	for(i=1;i<=8;i++)
	{
		if(datal1 >= 0x80)SE = 0;
		else SE = 1;
		SC = 0;
		SC = 1;
		datal1 <<= 1;
	}
	for(i=1;i<=8;i++)
	{
		if(datah2 >= 0x80)SE = 1;
		else SE = 0;
		SC = 0;
		SC = 1;
		datah2 <<= 1;
	}
	for(i=1;i<=8;i++)
	{
		if(datah1 >= 0x80)SE = 1;
		else SE = 0;
		SC = 0;
		SC = 1;
		datah1 <<= 1;
	}
	SE = 0;
	SC = 0;
	RC = 0;
}

void scan()//拉高RCK输出数据
{
	RC = 0;
	RC = 1;
	RC = 0;
}
void clear()//清屏
{
	HC595_in(0x00,0x00,0x00,0x00);
	scan();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值