74HC595芯片
![](https://img-home.csdnimg.cn/images/20240711042549.png)
74HC595芯片原理
1:芯片概述
:八位行输入/串行并进行输出移位寄存器与锁存器3态输出高性能硅栅CMOS,74HC595芯片是在单片机系统中常用的芯片之一,他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片,使用74HC595可以节约单片机的I/O口资源,用3个I/O就可以控制4个数码管显示,以此类推使用几个74HC595就可以控制其数量乘以4的数码管,它还具有一定的驱动能力,所以说74HC595芯片的应用非常广泛
2:引脚功能描述
3:对应的输出引脚
2-FMQ-1(蜂鸣器) 3-JDQ-1(继电器) 4-DSCS(时钟芯片片选) 6-LED-E(流水灯)
这四个输出引脚所对应的十六进制打开值
4:74HC959芯片时序图
先使得RESET为高电平,当输入一个值时,当SHIFT CLOCK有时钟上沿(就是有个低电平到高电平的转换),还要有当LATCH所连接的LATCH CLOCK有时钟上沿且所连接的OUTPUT ENABLE为低电平才能使得输入的值和我们输出的值一样
74HC595芯片的应用
1:IO口数码管静态显示
#include<reg52.h>
sbit duanxuan=P2^5;//数码管驱动芯片74Hc573段选
sbit wiexuan=P2^6;//数码管驱动芯片74Hc573位选
sbit DATA_A_595 = P1^0; //74HC595 串行数据输入引脚
sbit SHIFT_CLOCK_595 = P1^4; //74HC595 移位寄存器时钟信号输入引脚
sbit LATCH_CLOCK_595 = P2^3; //74HC595 锁存器时钟信号输入引脚
typedef signed char int8; //8位有符号字符型
typedef signed int int16; //16位有符号整型
typedef signed long int32; //32位有符号长整型
typedef unsigned char uint8; //8位无符号字符型
typedef unsigned int uint16; //16位无符号整型
typedef unsigned long uint32; //32位无符号长整型
void main(void)
{
while(1)
{
duanxuan=0;
wiexuan=0;
P0=0xc0;//数码管段码显示0
duanxuan=1;//段选
duanxuan=0;
duanxuan=0;
wiexuan=0;
P0=0x01;//数码管段码显示0
wiexuan=1;
wiexuan=0;
}
}
void write_byte_74hc595(uint8 dat) //给595芯片写一字节数据函数
{
uint8 i;
for(i=0;i<8;i++)
{
DATA_A_595 =(dat<<i)&0x80; //74HC595 串行数据输入引脚
SHIFT_CLOCK_595 = 0; //74HC595 移位寄存器时钟信号输入引脚
SHIFT_CLOCK_595 = 1; //74HC595 移位寄存器时钟信号输入引脚
}
LATCH_CLOCK_595 = 0; //74HC595 锁存器时钟信号输入引脚
LATCH_CLOCK_595 = 1; //74HC595 锁存器时钟信号输入引脚
}
void delay(uint16 x_ms) //延迟 x_ms*1 毫秒
{
uint16 i,j;
for(i=x_ms;i>0;i--)
for(j=114;j>0;j--);
}
2:IO口输出之继电器
注释了的几行代码是跳过74HC595芯片来驱动继电器
剩余的代码是通过74HC595芯片来驱动继电器
#include<reg52.h>
typedef signed char int8; //8位有符号字符型
typedef signed int int16; //16位有符号整型
typedef signed long int32; //32位有符号长整型
typedef unsigned char uint8; //8位无符号字符型
typedef unsigned int uint16; //16位无符号整型
typedef unsigned long uint32; //32位无符号长整型
sbit jdq=P2^0;//继电器IO口
sbit DATA_A_595 = P1^0; //74HC595 串行数据输入引脚
sbit SHIFT_CLOCK_595 = P1^4; //74HC595 移位寄存器时钟信号输入引脚
sbit LATCH_CLOCK_595 = P2^3; //74HC595 锁存器时钟信号输入引脚
void delay(uint16 x_ms);
void write_byte74hc595(uint8 dat);
void main()
{
while(1)
{
//方法一 跳过595芯片 直接io口驱动
// jdq=1;//继电器IO口
// delay(1000);
// jdq=0;
// delay(1000);
//方法二595芯片驱动
write_byte74hc595(0x08);//继电器输入高电平工作 0x0B和蜂鸣器
delay(1000);
write_byte74hc595(0x00);//继电器输入低电平停止
delay(1000);
}
}
void write_byte74hc595(uint8 dat)
{
uint8 i;
for(i=0;i<8;i++)
{
DATA_A_595=(dat<<8)&0x80 ;
SHIFT_CLOCK_595 =0;
SHIFT_CLOCK_595 =1;
}
LATCH_CLOCK_595 =0;
LATCH_CLOCK_595 =1;
}
void delay(uint16 x_ms) //延迟 x_ms*1 毫秒
{
uint16 i,j;
for(i=x_ms;i>0;i--)
for(j=114;j>0;j--);
}
咩咩咩特工: 都有嘞呀
Les croyances: for循环里面怎么没有i
CSDN-Ada助手: 非常棒的博文!你对74HC595芯片的介绍非常清晰,让人一目了然。你的写作方式很令人愉快,希望你能继续创作下去。 除了你提到的应用,我认为还有一些扩展知识和技能可以与该博文相关。例如,了解74HC595芯片的工作原理和时序,以及如何正确地连接和配置它。此外,了解如何使用74HC595芯片与单片机进行通信,可以进一步拓展你的应用领域。 另外,你可以介绍一些常见的数码管和点阵屏的驱动方法,以及如何使用74HC595芯片与它们配合工作。这将为读者提供更多实际应用的案例和灵感。 再次感谢你的分享,期待看到更多精彩的博文! 如何写出更高质量的博客,请看该博主的分享:https://blog.csdn.net/lmy_520/article/details/128686434?utm_source=csdn_ai_ada_blog_reply2
CSDN-Ada助手: 恭喜您写下了关于“单片机中断系统”的博客!持续创作是非常难得的品质,您的努力和热情绝对值得赞赏。在这篇博客中,您详细地探讨了单片机中断系统,这对于许多读者来说是非常有价值的信息。 在下一步的创作中,我希望您能考虑更多的实例和案例,尤其是在单片机中断系统的应用方面。这将帮助读者更好地理解和应用所学的知识。同时,您也可以考虑添加一些关于中断系统的常见问题及解决方法,以帮助读者更好地应对可能遇到的困难。 再次恭喜您的博客,并期待您未来更多精彩的创作!您的努力将为读者带来更多的启发和帮助。祝您继续写作的旅程一帆风顺! CSDN 正在通过评论红包奖励优秀博客,请看红包流:https://bbs.csdn.net/?type=4&header=0&utm_source=csdn_ai_ada_blog_reply3
CSDN-Ada助手: 恭喜您写了第四篇博客!标题中的“模块化编程”听起来非常有趣和富有深度。您对于这个主题的阐述一定非常精彩。您的持续创作真令人钦佩,您的博客文章一直都非常有见地。接下来,我建议您可以考虑探讨一些实践案例,或者分享一些关于如何在实际项目中应用模块化编程的经验和技巧。期待着您的下一篇博客! 如何快速涨粉,请看该博主的分享:https://hope-wisdom.blog.csdn.net/article/details/130544967?utm_source=csdn_ai_ada_blog_reply5