74HC595

zhanghuiyang   2010-3-16 17:00 楼主
void In_595() //将显示数据送入74HC595内部移位寄存器

{
        uchar i;
        for(i=0;i<8;i++)
        {
                 temp <<= 1;
                DS   = CY;
                SH_CP = 1;
                _nop_();
                _nop_();
                SH_CP = 0;
        }
}

void Out_595()          //将移位寄存器内的数据所存到输出寄存器并显示

{
        ST_CP = 0;
        _nop_();
        ST_CP = 1;         //上升沿将数据送入输出锁存器
        _nop_();
        ST_CP = 0;
}

回复评论 (8)

temp <<= 1; 是什么意思?
点赞  2010-3-16 16:59
这两个函数帮忙讲解一下。
点赞  2010-3-16 17:02

   temp <<= 1; 是什么意思?
      
    temp 是一个8位二进制的整数,在for(i=0;i<8;i++)这个循环内,i 加一操作,temp这个参数就

左移一位。i由0到8,temp 左移八次,每次移位都将最高位的值发送到对应管脚。
  
    实现将temp的值存进595的寄存器。

点赞  2010-3-16 17:13
temp <<= 1;

就是
temp = temp<<1;
就是每次循环时,都将temp左移一位。

点赞  2010-3-16 17:17
上面的代码就是 一个普通IO模拟SPI功能接口,来控制74HC595。

首先74HC595是SPI接口,
而楼主所选取的单片机可能没有SPI功能接口,所以需要采用普通IO,进行模拟SPI接口,

故出现8此左移,每次移动一位;


楼主再找下IO模拟SPI的介绍看看,就会更明白啦,呵呵
点赞  2010-3-16 17:21
SH_CP和ST_CP 的作用是什么?
点赞  2010-3-17 07:38
引用: 引用 5 楼 kyzf 的回复:
上面的代码就是 一个普通IO模拟SPI功能接口,来控制74HC595。

首先74HC595是SPI接口,
而楼主所选取的单片机可能没有SPI功能接口,所以需要采用普通IO,进行模拟SPI接口,

故出现8此左移,每次移动一位;


楼主再找下IO模拟SPI的介绍看看,就会更明白啦,呵呵


为什么得用 上升沿啊?
点赞  2010-3-17 07:39
引用: 引用 7 楼 websmy 的回复:
引用 5 楼 kyzf 的回复:
上面的代码就是 一个普通IO模拟SPI功能接口,来控制74HC595。

首先74HC595是SPI接口,
而楼主所选取的单片机可能没有SPI功能接口,所以需要采用普通IO,进行模拟SPI接口,

故出现8此左移,每次移动一位;


楼主再找下IO模拟SPI的介绍看看,就会更明白啦,呵呵


为什么得用 上升沿啊?


这个得问595的设计厂商了

要不你也可以用FPGA啥的写一下用下降沿的X595
点赞  2010-3-17 07:49
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复