2_74HC595使用文档
文件网盘链接:https://pan.baidu.com/s/158e_RyHuAqLyWNqZZhgi2A?pwd=1111 提取码:1111
1、74HC595工作原理
74HC595是一款8位移位寄存器,可以使用串行方式向芯片输入8位数据,然后芯片使用并行方式输出该8位数据。本次以华冠的74HC595为例进行说明(其他厂家的引脚丝印有差别,但是对应引脚号的功能大部分都是相同的),引脚如下图所示
引脚功能如下表所示
2、外围电路原理图
本次使用立创EDA绘制原理图。使用单片机的P1.4口输出8位串行数据给74HC595,然后74HC595并行输出这8位数据控制8个LED的亮灭情况
3、仿真工程及代码
3.1仿真工程
3.2仿真代码
1、74HC595的头文件
点击查看代码
#ifndef __74HC595_H__
#define __74HC595_H__
#define uint8 unsigned char
void write_byte_74HC595(uint8 dat);
#endif
2、74HC595的C文件
点击查看代码
/***************************************************************************************
文 件 名:74HC595.c
功能描述:使用串行方式给74HC595芯片写入一字节数据,然后芯片用并行方式输出该数据
芯片使用说明:74HC595是8位CMOS移位寄存器
(1)13脚是芯片使能端EA(低电平有效),8脚是芯片GND,16脚是芯片工作电源VCC
(2)10脚是清空芯片移位寄存器CLR(低电平有效)
(3)11脚是控制串行输入时钟SCK(上升沿有效)
(4)12脚是控制并行输出时钟LCK(上升沿有效)
(5)14脚是串行输入数据口data_in
(6)1~7和15脚是并行输出数据口data_out
SCK每接收一个上升沿就将data_in的一位数据移入移位寄存器
RCK每接收一个上升沿就将移位寄存器存储的八位数据并行输出,QA是数据最低位
****************************************************************************************/
#include <reg52.h>
#include "74HC595.h"
sbit EA_74HC595 = P1^0; //使能74HC595(低电平有效)
sbit CLR_74HC595 = P1^1; //清空74HC595(低电平有效)
sbit data_out_LCK = P1^2; //控制并行输出时钟(上升沿有效)
sbit data_in_SCK = P1^3; //控制串行输入时钟(上升沿有效)
sbit data_in = P1^4; //串行输入数据
/**********************************************************
函数名:write_byte_74HC595(uint8 dat)
函数功能:使用串行方法给74HC595芯片写入8位数据,然后用并行方法输出该数据
参数列表:
dat,8位数据
***********************************************************/
void write_byte_74HC595(uint8 dat)
{
uint8 i; //C51定义变量要放在函数最开始的地方,否则编译错误
EA_74HC595 = 0; //使能芯片
CLR_74HC595 = 0; //清空芯片数据
CLR_74HC595 = 1; //清空完置1
for(i=0;i<8;i++) //将八位串行数据逐位传入移位寄存器
{
data_in=(dat<<i)&0x80; //将dat从高位到低位逐位移入74HC595
data_in_SCK=0; //SCK每接收一个上升沿就将data_in移入74HC595
data_in_SCK=1;
}
data_out_LCK=0; //LCK每接收一个上升沿就将74HC595存储的8位数据并行输出
data_out_LCK=1;
data_in=1; //74HC595使用结束,将单片机IO口置1复位
}
3、main函数代码
点击查看代码
#include <reg52.h>
#include "74HC595.h"
void main()
{
write_byte_74HC595(0x0f); //点亮LED4~LED7
}