74HC595的使用及多个74HC595的连接使用(附代码)

目录

1.74H595的介绍

1.什么是74H595

2.74HC595的引脚介绍

2.74HC595的使用

1.74H595的介绍

1.什么是74H595

74H595简单来说是一款少量io控制8个io的芯片,通过移位的方式将串行数据变为并行数据。芯片引脚如图所示:

2.74HC595的引脚介绍

SH_CP引脚:移位寄存器时钟引脚,上升沿时,移位寄存器中的bit 数据整体后移一位,并接受新的bit(从DS输入脚,也就是14脚),代码处理如下:

           
            SH_CP = 0;            //初始化时,先将SH_CP拉低


            SH_CP = 1;           //将SH_CP拉高
            _nop_();
            _nop_();            //延时一段时间后拉低
            SH_CP = 0;         

ST_CP引脚:存储寄存器时钟输入引脚。上升沿时,数据从移位寄存器转存到存储寄存器,也就是将数据表示出来。代码处理如下:

            ST_CP = 0;            //初始化时,先将SH_CP拉低


            ST_CP = 1;           //将ST_CP拉高
            _nop_();
            _nop_();            //延时一段时间后拉低
            ST_CP = 0;         

DS引脚:数据输入角,串行数据由此输入。

MR引脚:数据清空脚,低电平时会清除移位数据寄存器的数据,一般的话直接接高电平。

OE引脚:芯片使能引脚,低电平使能失能。

Q?(?代指0~7和7')引脚:数据输出引脚

2.74HC595的使用

74H595就如同一截水管,由于输入的是串行数据,所以要一位一位的输入,每输入一个数据就要ST_CP引脚进行一次上升沿的产生将数据移位才能存储下一个数据,由于是一次性可以显示8位数据,所以一般会存储8个数据后ST_CP引脚进行上升沿将数据进入存储寄存器从而显示出来。74HC595演示视频如下:

74HC595

视频可见,数据随着后面数据的出现被挤在后面了,由此也可以看出,先进入的数据最先出来,所以在处理数据的时候要注意先放入高位,再放入低位。在处理多个74HC595的级联时,可以将ST_CP引脚SH_CP引脚连接同一个io口,这样既可以同时控制,也可以节省io口。多个74HC595的级联代码如下

void SendTo595(uchar times,uchar byteData)  //times为控制第几个74HC595,byteData为级联的位
{
   char i,j=0;
    for(j=times_595;j>0;j--)               //times_595为74HC595的级联个数
    {
        for(i=8;i>0;i--)
       {
           if(byteData==i)
           {
               if(j==times)
               SER=1;
           }
           else
            SER=0;
            SH_CP = 1;         
            _nop_();
            _nop_();
            SH_CP = 0;          
       }  
       ST_CP = 1;       
       _nop_();
       _nop_();
       ST_CP = 0; 
    }
}

通过该代码可以控制任意74HC595的任意io进行显示高电平。但不建议在对时序要求特别严格的地方使用。

注意:使用时在初始化要将ST_CP引脚和SH_CP引脚拉低,否则会出现最后一个74HC595的最后一位显示不出来的BUG。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值