这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » 请问74HC595时序图,谢谢

共3条 1/1 1 跳转至

请问74HC595时序图,谢谢

菜鸟
2012-02-16 21:14:36     打赏


其中其时序图见这里:http://blog.21ic.com/user1/6248/archives/2010/67056.html

分析过,应该是8位串行数据输入,首先是锁存到锁存器,然后再输出,而且是Qa先输出,然后是Qb,Qc,...Qh最后输出。但是实验发现串行输入00000010,输出从Qa到Qh变为了00000100,串行输入00000100,输出从Qa到Qh变为了00000010,串行输入00001000,输出从Qa到Qh变为了00000001,请问为什么后四位倒置了?

另外,关于QH'(串行输出),从时序图看出QH1'输出比DS晚了7个周期,但是那个时序图中为什么DS只有一个啊?是不是指只输入了一个串行数据(还差7个)。因为我控制数码管需要两个74hc595串联,第二个的串行输入接到第一个的串行输出上面,思路是将第一个595先输入
期望从第二个595输出的数据,然后在来一次循环(全部输入0)将第一次输入的“压”到第二个上面。可是我不懂QH’的时序。
刚刚接触芯片,手册看不太明白,望指点。多谢

我看是这么写的:
void drive595(unsigned char byte)
{  
    unsigned char i;
    for(i=0;i<8;i++)   //第一次循环,期望从第二个595输出的数据
    {
        SCK_595=0;
        byte=byte<<1;
        DS_595=CY;
        SCK_595=1;
    }
    for(i=0;i<8;i++)    //第二次循环(全部输入0)
    {
        SCK_595=0;
        DS_595=0;
        SCK_595=1;
    }
    RCK_595=0;
    RCK_595=1;
}

74HC595的驱动(单个595)我是这么写的:
void drive595(unsigned char byte)
{  
    unsigned char i;
    for(i=0;i<8;i++)
    {
        SCK_595=0;
        byte=byte<<1;
        DS_595=CY;
        SCK_595=1;
    }
    RCK_595=0;
    RCK_595=1;
}

 




关键词: 请问     74HC595     时序     谢谢     输入     输出    

高工
2012-02-16 22:30:29     打赏
2楼
把QH'(串行输出)想成CY就能明白了,也就是一個脉衝往前移動一位

菜鸟
2012-02-17 11:43:57     打赏
3楼
谢谢,Q7S我有些明白了,但是为什么并行输出低四位倒置?按照驱动程序,应该是串行输入00000010并行输出从Q1--Q7也分别是0,0,0,0,0,0,1,0,但是实验发现是0,0,0,0,0,1,0,0。请问是不是芯片有不同?写的是74HC595D啊,我查了和74hc595一样啊。

实验发现串行输入00000010,输出从Qa到Qh变为了00000100,串行输入00000100,输出从Qa到Qh变为了00000010,串行输入00001000,输出从Qa到Qh变为了00000001。

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]