74HC595 驱动
目录
一、芯片介绍
二、驱动电路
三、驱动程序
四、实测波形
五、 两片级联
一、芯片介绍
本例使用的芯片为飞利浦的74HC595芯片
该芯片支持100M的操作频率
各个pin脚的定义
Q0~Q7: 并行数据数据输出端;
GND: 接地引脚;
Q7S: 串行数据输出(多芯片级联时使用);
MR: 复位引脚,当引脚接低电平时芯片内部数据存储寄存器数据清零复位.如不使用一般接高电平;
SHCP: 移位寄存器的时钟输入,当接收到上升沿时移位寄存器内部数据整体后移;
STCP: 数据存储寄存器时钟输入,当检测到上升沿时使能数据存储寄存器,将芯片接收到的数据输出到Q0~Q7 ,Q7S引脚.可以将其理解为锁存信号,当数据发送给芯片完成后对该引脚发送上升沿;
OE: 输出使能引脚,为高电平时芯片输出引脚为高组态,当为低电平时芯片输出引脚为高(低)电平.该引脚可用于同时控制并行输出引脚的电平,如控制LED闪烁等.当不使用该功能时通常接低电平;
DS: 串行数据输入端
VCC: 电源引脚
功能框图:从功能框图中可以看出74HC595含有一个移位寄存器,一个存储寄存器和一个三态输出控制器。
逻辑框图和时序图
二、驱动电路
三、驱动程序
.c文件
/******************************************************************************** 名称: void HC595_Init(void)* 功能: 74HC595的初始化操作;* 说明: 总共3个端口,SER-PC1,RCLK(ST)-PC2,SRCLK(SH)-PC3;*******************************************************************************/void HC595_Init(void)
{//将595所有引脚设为推挽输出Gpio_InitIOExt(DS_SER_PORT, DS_SER_PIN, GpioDirOut, TRUE, FALSE, FALSE, FALSE);Gpio_InitIOExt(ST_CP_PORT, ST_CP_PIN, GpioDirOut, TRUE, FALSE, FALSE, FALSE);Gpio_InitIOExt(SH_CP_PORT, SH_CP_PIN, GpioDirOut, TRUE, FALSE, FALSE, FALSE);//将所有指示灯都关闭HC595Send(HC595_LED_Leakage,FALSE);HC595Send(HC595_LED_LED_Run,FALSE);HC595Send(HC595_LED_LED_Gun,FALSE);HC595Send(HC595_LED_Signal2,FALSE);HC595Send(HC595_LED_Overload,FALSE);HC595Send(HC595_Relay,FALSE);
}void GPIO_WriteHigh(u8 _port,u8 _pin)
{Gpio_SetIO(_port,_pin,TRUE);
}void GPIO_WriteLow(u8 _port,u8 _pin)
{Gpio_SetIO(_port,_pin,FALSE);
}/******************************************************************************** 名称: void HC595Send(HC595_TypeDef _location,u8 _state)* 功能: 8位串行输出函数;* 说明: 第一个为点灯的位置,第二个为目标的状态*******************************************************************************/
void HC595Send(HC595_TypeDef _location,u8 _state)
{static u8 current_data = 0;u8 data = 0;if(_state == TRUE){current_data|=(0x01<<_location);}else{current_data&=(~(0x01<<_location));}data = current_data;for(u8 i=0;i<8;i++){GPIO_WriteLow(SH_CP_PORT,SH_CP_PIN);__NOP();__NOP();if(data&0x80)GPIO_WriteHigh(DS_SER_PORT,DS_SER_PIN);elseGPIO_WriteLow(DS_SER_PORT,DS_SER_PIN);GPIO_WriteHigh(SH_CP_PORT,SH_CP_PIN);data = data<<1;}__NOP();__NOP();GPIO_WriteLow(ST_CP_PORT,ST_CP_PIN);__NOP();__NOP();GPIO_WriteHigh(ST_CP_PORT,ST_CP_PIN);Delay_Tim_1ms(1);
}
.h文件
/* 595控制端口定义 */#define SH_CP_PORT 2
#define SH_CP_PIN 7#define ST_CP_PORT 3
#define ST_CP_PIN 1#define DS_SER_PORT 3
#define DS_SER_PIN 2typedef enum
{HC595_LED_Leakage = 1,HC595_LED_LED_Run = 2,HC595_LED_LED_Gun = 3,HC595_LED_Signal2 = 4,HC595_LED_Overload = 5,HC595_Relay = 6,
} HC595_TypeDef;
四、实测波形
五、 两片级联
74HC595 驱动相关推荐
- 定时器驱动数码管c语言程序,74hc595驱动数码管时间程序
74hc595驱动数码管时间程序 这里是电路图: 下面是51单片机驱动74hc595芯片的程序: #include //包含51单片机的头文件 # ...
- Arduino 74HC595驱动数码管0-9循环显示+Proteus仿真
Arduino 74HC595驱动数码管0-9循环显示+Proteus仿真 Proteus仿真 实例代码(do{}while();实现方法) /*74HC595控制1位共阳数码管* * * * * * ...
- 74HC595驱动四位数码管
74HC595驱动四位数码管 数码管编码 出处 硬件原理图 出处 驱动程序 出处 1.数码管编码介绍 它每一段是一个发光二极管,排成一个"日"字形.通过控制某几段发光二极管的发光来 ...
- c语言595驱动数码管,74hc595驱动4位数码管程序解析 - 74hc595驱动4位数码管电路连接图及程序解析...
74hc595驱动4位数码管程序解析 //MCU:AT89S52 //晶振:11.0592M. //采用4位共阳极数码管 #include <regx51.h> //#include &l ...
- c语言595驱动数码管,74hc595驱动4位数码管电路连接图及程序解析 - 全文
本设计使用了一个4位的数码管,为共阳型,为了节省单片机的IO口,使用了两片74HC595作为数码管的驱动芯片,共占用3个IO口.74HC595部分电路图如下: 与单片机相连接的三个脚分别为: HC_D ...
- 74HC595驱动2位数码管代码实现和注意事项
74HC595驱动2位数码管 驱动芯片:74HC595,74LS595, 单片机:AT89C52,或者STC89C52都可以 实例代码 #include <STC89C5xRC.H> // ...
- 单片机控制74hc595驱动4个单数码管计数显示
单片机控制74hc595驱动4个单数码管静态显示 演示效果: *材料 AT89C52 .74HC595共阳数码管 采用Proteus仿真 实例程序 #include<reg51.h> #d ...
- 基于STC15W4K32S4单片机仿真《74HC595驱动数码管动态显示》
1. 编 程 软 件:keil5版本. 2.仿 真 软 件:Proteus8.12 3.单片机选型:STC15W4K32S4 4.学 习 目 标:1.学习74HC595驱动数码管动态显示 5.程 序 ...
- 第十七节:两片联级74HC595驱动16个LED灯的基本驱动程序
. 开场白: 上一节讲了如何把矩阵键盘翻译成独立按键的处理方式.这节讲74HC595的驱动程序.要教会大家两个知识点: 第一点:朱兆祺的学习板是用74HC595控制LED,因此可以直接把595的OE引 ...
- 基于STC15W4K32S4单片机仿真《74HC595驱动数码管静态显示》
1. 编 程 软 件:keil5版本. 2.仿 真 软 件:Proteus8.12 3.单片机选型:STC15W4K32S4 4.学 习 目 标:1.学习74HC595芯片工作方式 ...
最新文章
- Ubuntu镜像下载地址
- python假设税前工资和税率如下_Python来做假设检验
- shell 两时间之差
- 三星Galaxy S22或放弃Exynos 2200?假消息!依旧双版本
- MySQL学习之备份
- 数据库工作笔记15---Sqlserver2005中的DTS_以及DTS升级成Sqlserver2016的思路
- 将Hibernate中的枚举转换为自定义数值
- 使用 Stacer 优化 Ubuntu 系统
- 诚龙网刻PXE网刻出错解决
- SPSS应用——时间序列分析
- 能使用firebug的火狐浏览器下载地址
- usb无线网卡安装在服务器上,USB无线网卡怎么用?USB无线网卡如何安装?
- 13款入侵检测系统介绍(HIDS)
- hiveql 没有left()right()函数,可用substr()替代
- 【中国数据创新琅琊榜】数联易康医疗大数据平台,创新健康医疗产业变革的推动者和见证者!
- 网页点名器(移动端、pc端)
- Oracle开发实战学习
- 基于canal根据配置实现数据库数据的同步
- loc函数、iloc函数、df.drop()函数的用法
- 精通Web Analytics 2.0 (13) 第十一章:变身分析忍者的指导原则
热门文章
- 前端canvas实现图画工具
- 企业制程控制需要注意什么?
- 【路径规划】基于FLOYD算法实现邮政运输网络中的邮路规划和邮车调度matlab代码
- 为什么曾经优秀的人突然变得平庸?
- 素人做课会踩的3大坑,你中了几个?
- CSAPP: bomb lab
- python人脸识别门禁系统毕设_开源|手把手教你用Python进行人脸识别(附源代码)...
- 3BHE029110R0111 ABB
- Java政务办公源码,基于jsp的电子政务系统-JavaEE实现电子政务系统 - java项目源码...
- Windows Linux 相同功能软件对应列表(转)