目录

一、芯片介绍

二、驱动电路

三、驱动程序

四、实测波形

五、 两片级联


一、芯片介绍

本例使用的芯片为飞利浦的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 驱动相关推荐

  1. 定时器驱动数码管c语言程序,74hc595驱动数码管时间程序

    74hc595驱动数码管时间程序 这里是电路图: 下面是51单片机驱动74hc595芯片的程序: #include                            //包含51单片机的头文件 # ...

  2. Arduino 74HC595驱动数码管0-9循环显示+Proteus仿真

    Arduino 74HC595驱动数码管0-9循环显示+Proteus仿真 Proteus仿真 实例代码(do{}while();实现方法) /*74HC595控制1位共阳数码管* * * * * * ...

  3. 74HC595驱动四位数码管

    74HC595驱动四位数码管 数码管编码 出处 硬件原理图 出处 驱动程序 出处 1.数码管编码介绍 它每一段是一个发光二极管,排成一个"日"字形.通过控制某几段发光二极管的发光来 ...

  4. c语言595驱动数码管,74hc595驱动4位数码管程序解析 - 74hc595驱动4位数码管电路连接图及程序解析...

    74hc595驱动4位数码管程序解析 //MCU:AT89S52 //晶振:11.0592M. //采用4位共阳极数码管 #include <regx51.h> //#include &l ...

  5. c语言595驱动数码管,74hc595驱动4位数码管电路连接图及程序解析 - 全文

    本设计使用了一个4位的数码管,为共阳型,为了节省单片机的IO口,使用了两片74HC595作为数码管的驱动芯片,共占用3个IO口.74HC595部分电路图如下: 与单片机相连接的三个脚分别为: HC_D ...

  6. 74HC595驱动2位数码管代码实现和注意事项

    74HC595驱动2位数码管 驱动芯片:74HC595,74LS595, 单片机:AT89C52,或者STC89C52都可以 实例代码 #include <STC89C5xRC.H> // ...

  7. 单片机控制74hc595驱动4个单数码管计数显示

    单片机控制74hc595驱动4个单数码管静态显示 演示效果: *材料 AT89C52 .74HC595共阳数码管 采用Proteus仿真 实例程序 #include<reg51.h> #d ...

  8. 基于STC15W4K32S4单片机仿真《74HC595驱动数码管动态显示》

    1. 编 程 软 件:keil5版本. 2.仿 真 软 件:Proteus8.12 3.单片机选型:STC15W4K32S4 4.学 习 目 标:1.学习74HC595驱动数码管动态显示 5.程 序 ...

  9. 第十七节:两片联级74HC595驱动16个LED灯的基本驱动程序

    . 开场白: 上一节讲了如何把矩阵键盘翻译成独立按键的处理方式.这节讲74HC595的驱动程序.要教会大家两个知识点: 第一点:朱兆祺的学习板是用74HC595控制LED,因此可以直接把595的OE引 ...

  10. 基于STC15W4K32S4单片机仿真《74HC595驱动数码管静态显示》

    1. 编 程 软 件:keil5版本. 2.仿 真 软 件:Proteus8.12 3.单片机选型:STC15W4K32S4 4.学 习 目 标:1.学习74HC595芯片工作方式           ...

最新文章

  1. Ubuntu镜像下载地址
  2. python假设税前工资和税率如下_Python来做假设检验
  3. shell 两时间之差
  4. 三星Galaxy S22或放弃Exynos 2200?假消息!依旧双版本
  5. MySQL学习之备份
  6. 数据库工作笔记15---Sqlserver2005中的DTS_以及DTS升级成Sqlserver2016的思路
  7. 将Hibernate中的枚举转换为自定义数值
  8. 使用 Stacer 优化 Ubuntu 系统
  9. 诚龙网刻PXE网刻出错解决
  10. SPSS应用——时间序列分析
  11. 能使用firebug的火狐浏览器下载地址
  12. usb无线网卡安装在服务器上,USB无线网卡怎么用?USB无线网卡如何安装?
  13. 13款入侵检测系统介绍(HIDS)
  14. hiveql 没有left()right()函数,可用substr()替代
  15. 【中国数据创新琅琊榜】数联易康医疗大数据平台,创新健康医疗产业变革的推动者和见证者!
  16. 网页点名器(移动端、pc端)
  17. Oracle开发实战学习
  18. 基于canal根据配置实现数据库数据的同步
  19. loc函数、iloc函数、df.drop()函数的用法
  20. 精通Web Analytics 2.0 (13) 第十一章:变身分析忍者的指导原则

热门文章

  1. 前端canvas实现图画工具
  2. 企业制程控制需要注意什么?
  3. 【路径规划】基于FLOYD算法实现邮政运输网络中的邮路规划和邮车调度matlab代码
  4. 为什么曾经优秀的人突然变得平庸?
  5. 素人做课会踩的3大坑,你中了几个?
  6. CSAPP: bomb lab
  7. python人脸识别门禁系统毕设_开源|手把手教你用Python进行人脸识别(附源代码)...
  8. 3BHE029110R0111 ABB
  9. Java政务办公源码,基于jsp的电子政务系统-JavaEE实现电子政务系统 - java项目源码...
  10. Windows Linux 相同功能软件对应列表(转)