芯片简述:74HC595是一个8位串行输入、串并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SER输入到内部的8位位移缓存器,并由QA~QH’输出,在SH_cp(移位寄存器时钟输入)的上升沿输入到移位寄存器中,在ST_cp(存储器时钟输入)的上升沿输入到存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。

8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。三态。

芯片主要功能多用为:扩展端口,减小单片机芯片端口的压力。

1

图中7654321代表位数,学校校园网还是有点问题,github上不去,换个

shcp stcp就像两个看门的老大爷,一个管输入,一个管输出,都是上升沿有效,然后这里就可以写两个函数,参考网上的教程,以及课本(因为电路板连到了wr和rd口,没办法了,只能这样了)首先按照课本上的接线,用rxd和txd口发送

没想到卡在了电路层面,吐了,换个模拟元件就好了

image-20210626230318887

image-20210626230236798

黑色为1 倒叙

取反

image-20210626231258075

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
C实现二进制高低逆序
方法一:效率低

int func(unsigned int uiData , int length)
{
unsigned int uiValue = 0 ;
int i = 0 ;
for ( i = 0 ; i < length ; i++ )
{
uiValue = (uiValue << 1) + (uiData & 0x01) ;
uiData = uiData >> 1 ;
}
return uiValue ;
}
方法二:分治

int func (unsigned int uiData)
{
unsigned int uiValue = 0 ;
/* 分而治之的思想 */
/* 高16位和低16互换 */
uiValue = ((uiData >> 16)&0x0000ffff) |
((uiData << 16)&0xffff0000);
/*高低16位中的高低8位互换*/
uiValue = ((uiValue >> 8)&0x00ff00ff) |
((uiValue << 8)&0xff00ff00);
/*8位中的高低4位互换*/
uiValue = ((uiValue >> 4)&0x0f0f0f0f) |
((uiValue << 4)&0xf0f0f0f0);
/*4位中的高低2位互换*/
uiValue = ((uiValue >> 2)&0x33333333) |
((uiValue << 2)&0xcccccccc);
/*2位中的高低位互换*/
uiValue = ((uiValue >> 1)&0x55555555) |
((uiValue << 1)&0xaaaaaaaa);
return uiValue ;
}

image-20210626232027382

倒序,回头写个带界面的小程序画图。今晚就到这,先睡觉