当前位置:   article > 正文

74HC595芯片

74hc595

74HC595芯片原理

25d4ae4714a1464785fe50be44c07478.jpeg

1:芯片概述

   :八位行输入/串行并进行输出移位寄存器与锁存器3态输出高性能硅栅CMOS,74HC595芯片是在单片机系统中常用的芯片之一,他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片,使用74HC595可以节约单片机的I/O口资源,用3个I/O就可以控制4个数码管显示,以此类推使用几个74HC595就可以控制其数量乘以4的数码管,它还具有一定的驱动能力,所以说74HC595芯片的应用非常广泛

2:引脚功能描述

 a7a72187968e43369ab29afd8c7a2519.png

3:对应的输出引脚

2-FMQ-1(蜂鸣器)    3-JDQ-1(继电器)   4-DSCS(时钟芯片片选)  6-LED-E(流水灯)

这四个输出引脚所对应的十六进制打开值

9179e03843b44b60947afacb40097ca4.png

4:74HC959芯片时序图

abfe6bb05e6b411da022c2c682de2dd4.png

f02a76ebb92d4c679fa75ec5f3154d56.png67a3a5ba83374e9a9aac17e836510a53.png

 先使得RESET为高电平,当输入一个值时,当SHIFT CLOCK有时钟上沿(就是有个低电平到高电平的转换),还要有当LATCH所连接的LATCH CLOCK有时钟上沿且所连接的OUTPUT ENABLE为低电平才能使得输入的值和我们输出的值一样

74HC595芯片的应用

1:IO口数码管静态显示

  1. #include<reg52.h>
  2. sbit duanxuan=P2^5;//数码管驱动芯片74Hc573段选
  3. sbit wiexuan=P2^6;//数码管驱动芯片74Hc573位选
  4. sbit DATA_A_595 = P1^0; //74HC595 串行数据输入引脚
  5. sbit SHIFT_CLOCK_595 = P1^4; //74HC595 移位寄存器时钟信号输入引脚
  6. sbit LATCH_CLOCK_595 = P2^3; //74HC595 锁存器时钟信号输入引脚
  7. typedef signed char int8; //8位有符号字符型
  8. typedef signed int int16; //16位有符号整型
  9. typedef signed long int32; //32位有符号长整型
  10. typedef unsigned char uint8; //8位无符号字符型
  11. typedef unsigned int uint16; //16位无符号整型
  12. typedef unsigned long uint32; //32位无符号长整型
  13. void main(void)
  14. {
  15. while(1)
  16. {
  17. duanxuan=0;
  18. wiexuan=0;
  19. P0=0xc0;//数码管段码显示0
  20. duanxuan=1;//段选
  21. duanxuan=0;
  22. duanxuan=0;
  23. wiexuan=0;
  24. P0=0x01;//数码管段码显示0
  25. wiexuan=1;
  26. wiexuan=0;
  27. }
  28. }
  29. void write_byte_74hc595(uint8 dat) //给595芯片写一字节数据函数
  30. {
  31. uint8 i;
  32. for(i=0;i<8;i++)
  33. {
  34. DATA_A_595 =(dat<<i)&0x80; //74HC595 串行数据输入引脚
  35. SHIFT_CLOCK_595 = 0; //74HC595 移位寄存器时钟信号输入引脚
  36. SHIFT_CLOCK_595 = 1; //74HC595 移位寄存器时钟信号输入引脚
  37. }
  38. LATCH_CLOCK_595 = 0; //74HC595 锁存器时钟信号输入引脚
  39. LATCH_CLOCK_595 = 1; //74HC595 锁存器时钟信号输入引脚
  40. }
  41. void delay(uint16 x_ms) //延迟 x_ms*1 毫秒
  42. {
  43. uint16 i,j;
  44. for(i=x_ms;i>0;i--)
  45. for(j=114;j>0;j--);
  46. }

2:IO口输出之继电器

注释了的几行代码是跳过74HC595芯片来驱动继电器

剩余的代码是通过74HC595芯片来驱动继电器

  1. #include<reg52.h>
  2. typedef signed char int8; //8位有符号字符型
  3. typedef signed int int16; //16位有符号整型
  4. typedef signed long int32; //32位有符号长整型
  5. typedef unsigned char uint8; //8位无符号字符型
  6. typedef unsigned int uint16; //16位无符号整型
  7. typedef unsigned long uint32; //32位无符号长整型
  8. sbit jdq=P2^0;//继电器IO口
  9. sbit DATA_A_595 = P1^0; //74HC595 串行数据输入引脚
  10. sbit SHIFT_CLOCK_595 = P1^4; //74HC595 移位寄存器时钟信号输入引脚
  11. sbit LATCH_CLOCK_595 = P2^3; //74HC595 锁存器时钟信号输入引脚
  12. void delay(uint16 x_ms);
  13. void write_byte74hc595(uint8 dat);
  14. void main()
  15. {
  16. while(1)
  17. {
  18. //方法一 跳过595芯片 直接io口驱动
  19. // jdq=1;//继电器IO口
  20. // delay(1000);
  21. // jdq=0;
  22. // delay(1000);
  23. //方法二595芯片驱动
  24. write_byte74hc595(0x08);//继电器输入高电平工作 0x0B和蜂鸣器
  25. delay(1000);
  26. write_byte74hc595(0x00);//继电器输入低电平停止
  27. delay(1000);
  28. }
  29. }
  30. void write_byte74hc595(uint8 dat)
  31. {
  32. uint8 i;
  33. for(i=0;i<8;i++)
  34. {
  35. DATA_A_595=(dat<<8)&0x80 ;
  36. SHIFT_CLOCK_595 =0;
  37. SHIFT_CLOCK_595 =1;
  38. }
  39. LATCH_CLOCK_595 =0;
  40. LATCH_CLOCK_595 =1;
  41. }
  42. void delay(uint16 x_ms) //延迟 x_ms*1 毫秒
  43. {
  44. uint16 i,j;
  45. for(i=x_ms;i>0;i--)
  46. for(j=114;j>0;j--);
  47. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/801791
推荐阅读
相关标签
  

闽ICP备14008679号