分享

74HC595在单片机上的应用及程序

 月光下的幽会 2014-04-29

74HC595具有8位串入并出的三态门电路。

高速率:最高55MHz(5V工作电压)

宽的工作电压范围:2V -6V

每个口的最大电流值(QA-QH):±35mA

当单片机的I/O资源比较紧张时,采用595并进行级联是一个很好的选择。

管脚定义:

PIN NO  symbol         name and function

15       QA              data output

1        QB              data output

2        QC              data output

3        QD              data output

4        QE              data output

5        QF              data output

6        QG              data output

7        QH              data output

8        GND             ground

9        QH’           serial data outputs

10     /SCLR          shift register clock input

11      SCK           shift register clock input

12      RCK          storage register clock input

13      /G            output enable input

14      SI            serial data input

16      Vcc          positive  supply voltage

时序图:

请参照595的数据手册

程序编制:

端口定义 设置:

 sbit DATA=P1^5;

sbit SHIFT=P1^6;

sbit STORAGE=P1^7;

1、写595

 Void write_595(uchar x)//功能:将无符号8位数x,写入到595的shife register

{

 Uchar j;

 For(j=0;j<8;j++)//循环8次,以便shift register保存8位数据

       {

X=x<<1;//将数据左移一位,最高位数据进入到CY中

SHIFT=0;//shift端置0

_nop_();

 _nop_();

 _nop_();

DATA=CY;//将一位数据送入595串口数据端

SHIFT=1;//shift端产生一个上升沿,数据就送入到了shift register

_nop_();//延时

_nop_();

_nop_();

SHIFT=0;//shift端产生一个下降沿,shift register内容保持不变

}

}

3、595数据的输出

/********595输出函数函数*******************/

void out_595(void)

{

 STORAGE=0;

 _nop_();

 _nop_();

 STORAGE=1;//上升沿shift register 的内容保存到store register

 _nop_();

 _nop_();

 STORAGE=0;//下降沿store register 的内容保持不变

 

}

4、只要在主函数中分别调用以上两个函数即可将要显示的数值X显示出来。

  当然为方便显示可以定义一个数组。

如一个7段数码管的显示,595的QA,QB,QC,QD,QE,QF,QG, ,分别对应数码管的a,b,c,d,e,f,g,

数码管共阳极,则可以定义这样一个数组。

uchar code num[]={0x40,0xf3,0x89,0xa1,0xb2,0xa4,0x84,0xf1,0x80,0x20} ; //0-9代码

5、当两个或多个595进行级联时将

   11      SCK           shift register clock input

   12      RCK          storage register clock input

   进行并联,将9        QH’           serial data outputs

   连接另一片的14      SI            serial data input

然后再发送数据时,先连续发送数据,最后在out。

如:

write_595(duanma);

write_595(num[liangdu]);

 out_595();

完整详细程序请打开:http://www./chip/1799.html
  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多