芯片简述:74HC595是一个8位串行输入、串并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SER输入到内部的8位位移缓存器,并由QA~QH’输出,在SH_cp(移位寄存器时钟输入)的上升沿输入到移位寄存器中,在ST_cp(存储器时钟输入)的上升沿输入到存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。三态。
芯片主要功能多用为:扩展端口,减小单片机芯片端口的压力。
图中7654321代表位数,学校校园网还是有点问题,github上不去,换个
shcp stcp就像两个看门的老大爷,一个管输入,一个管输出,都是上升沿有效,然后这里就可以写两个函数,参考网上的教程,以及课本(因为电路板连到了wr和rd口,没办法了,只能这样了)首先按照课本上的接线,用rxd和txd口发送
没想到卡在了电路层面,吐了,换个模拟元件就好了
黑色为1 倒叙
取反
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 ; uiValue = ((uiData >> 16)&0x0000ffff) | ((uiData << 16)&0xffff0000);
uiValue = ((uiValue >> 8)&0x00ff00ff) | ((uiValue << 8)&0xff00ff00);
uiValue = ((uiValue >> 4)&0x0f0f0f0f) | ((uiValue << 4)&0xf0f0f0f0);
uiValue = ((uiValue >> 2)&0x33333333) | ((uiValue << 2)&0xcccccccc);
uiValue = ((uiValue >> 1)&0x55555555) | ((uiValue << 1)&0xaaaaaaaa); return uiValue ; }
|
倒序,回头写个带界面的小程序画图。今晚就到这,先睡觉