一、原理介绍

595有两个寄存器,都是8位的,如下所示:

595是串入并出带有锁存功能移位寄存器,它的使用方法简单:

 – –  在正常使用时 /SCLR接高电平,/G接低电平。

 – –  从SER每输入一位数据,串行输入时钟SCK上升沿有效一次,直到八位数据输入完毕 

 – – 输出时钟上升沿有效一次,此时,输入的数据就被送到了输出端。

 

 

不同的595引脚名称会不一样,但是功能是一样的。大家看引脚序号即可。以下是595引脚图:

595具体使用的步骤:
第一步:目的:将要准备输入的位数据移入74HC595数据输入端上。(用到SER数据输入引脚)
方法:送位数据到595。

第二步:目的:将位数据逐位移入74HC595,即数据串入(用到SCK引脚移位寄存器
方法:SCK 产生一上升沿,将595上的数据移入74HC595中的移位寄存器中,从低到高

第三步:目的:并行输出数据。即数据并出(用到RCK引脚锁存器
方法:RCK 产生一上升沿,将由SER上已移入数据寄存器中的数据送入到输出锁存器。 

二、proteus  仿真画图

 由于手头上没有595的硬件,用proteus进行仿真。

 接线:

         单片机的P1.4接按键;

         单片机的P1.5接 LED;(起初用来测试按键,可忽略)

         单片机的P2.0接595的DS(即SER)

    单片机的P2.1接595的SH_CP(即SCK)

    单片机的P2.2接595的ST_CP(即RCK)

         595的8个输出口,接8个LED灯的正极

功能:

         按下按键,8个LED灯亮起;(长按、短按)

         松开按键,8个LED灯熄灭;

 

三、单片机程序

 1、定义io、标志位

  1. sbit SER_595=P2^0; // DS 串行数据输入端
  2. sbit RCK_595=P2^2; // ST_CP 数据:移位寄存器--To--存储寄存器 (上升沿)
  3. sbit SCK_595=P2^1; // SH_CP 数据移位:QA--QB--QC-- ... --QH (上升沿)
  4. sbit Button=P1^4; //按键
  5. sbit LED=P1^5;
  6. uchar Btn_State=1; //按键状态标志
  7. uchar Count_Put=0xFF; //取反标志

 

2、发送数据函数:

  1. //发送数据
  2. void HC595_Send_Data(uchar send_data)
  3. {
  4. uchar i;
  5. for(i=0;i<8;i++)
  6. {
  7. if((send_data<<i)&0x80)//判断最高位是否是1
  8. SER_595=1; //是1,则使SER=1,
  9. else SER_595=0; //是0,则使SER=0
  10. SCK_595=0;//上升沿(移入数据)
  11. _nop_();
  12. _nop_();
  13. SCK_595=1;
  14. }
  15. }

函数功能解释:

  (1)一次只能发送8位数据,循环8次以下工作:

  – – 将这8位数据和先向左移 i 位,再和0x80做与运算,从而判断数据的第一位是0还是1,进而使SER=0或者1

  – – 接着给SCK_595一个上升沿脉冲,微妙级,将最高位数据0或者1送入595的移位寄存器

 (2)i从0开始,也就是从数据的最高位开始,假如数据为01101100,则0先被送至移位寄存器,接着是1,以此类推。

3、输出数据函数:

  1. //输出数据
  2. void HC595_Put_Data()
  3. {
  4. RCK_595=0;
  5. _nop_();
  6. _nop_();
  7. RCK_595=1;
  8. }

4、主函数:

  1. void main()
  2. {
  3. LED=1;//初始关闭
  4. while(1){
  5. //按键控制8个LED灯
  6. if(Button!=Btn_State) //按下 Button=0 Btn_State=1
  7. {
  8. HC595_Send_Data(0xFF&Count_Put);
  9. HC595_Put_Data();
  10.  Count_Put=~Count_Put;
  11. LED=~LED;
  12. Btn_State=Button; //Button=0 Btn_State=0
  13. }
  14. }
  15. }

 

四、现象

 

另外:看到有篇文章写的很好,大家可以去看看这个:

http://www.21ic.com/jichuzhishi/datasheet/74HC595/data/757249.html

 

版权声明:本文为zeng-1995原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zeng-1995/p/11704557.html