图示是74HC165移位寄存器,串联起来的,一个是8位,两个可以实现16位的数据输出(最终由第二级的QH端输出到单片机),当SH/LD为低电平的时候,8位并行数据输入到寄存器内(应该是2个寄存器都存好了8位数据,总共16位数据),当SH/LD为高电平时,并且CLK_INH为低,CLK有钟脉冲给到寄存器时,开始移位数据,从QH端输出,再从下一级的SER端输入;
搞不明白的是串联起来后,这16位数据具体是怎么串行移位到最后一级QH端的,第一个寄存器的8位数据从第一个寄存器的QH端输出,比如第一位是1,那么1给到第二个寄存器的SER端输入,再从第二个寄存器的QH端输出1,这样一来第二个寄存器的8位数据怎么传出呢?输出端只有QH一个,不冲突了吗?谢谢指点。
本帖最后由 elec32156 于 2020-4-19 16:33 编辑
楼主应该仔细看看165的器件手册,特别是其真值表。简单说,先有个并行输入口的读入操作,然后在时钟的驱动下,内部移位寄存器将读入的并口数据依次从输出端按位输出,同时165还有个串行输入端,所以支持多片串联。
74HC165是并入/串出移位寄存器。你自己说的 “当SH/LD为低电平的时候,8位并行数据输入到寄存器内”,这是对的。但 “当SH/LD为高电平时,并且CLK_INH为低,CLK有钟脉冲给到寄存器时,开始移位数据,从QH端输出,再从下一级的SER端输入” 则不大准确。
当SH/LD为高电平时,并且CLK_INH为低,每来一个CLK脉冲,A、B、C……各寄存器内容依次移动,A内容-->B,B内容-->C,……H内容-->!QH(注意不是QH),取反后-->QH。而SER电平取反后移入A。8个CLK脉冲后,这片74HC165各寄存器内容依次从!QH移出,各寄存器内容成为各个脉冲到来时SER取反送入的内容。
所以,你的电路,16个CLK脉冲后,两片74HC165各寄存器内容(SH/LD为低电平的时候锁入的)取反后依次从第二片的9脚输出,而两片74HC165各寄存器内容是各CLK脉冲到来时第一片SER引脚电平取反。
引用: maychang 发表于 2020-4-19 18:07 74HC165是并入/串出移位寄存器。你自己说的 “当SH/LD为低电平的时候,8位并行数据输入到寄存器内&rdq ...
谢谢!基本弄明白了,但有个疑问,您说的A-->H的数据是给到!QH取反,再输出给QH的,我看实际电路上!QH是悬空没有用到的,如下是165A的框图,跟您这个有点不一样,SER输入取反了,再到QH取反输出,那什么情况下会用到!QH呢?
引用: elec32156 发表于 2020-4-20 16:20 谢谢!基本弄明白了,但有个疑问,您说的A-->H的数据是给到!QH取反,再输出给QH的,我看实际电路上!QH ...
“那什么情况下会用到!QH呢?”
多片74HC165级联(构成16位、24位、32位……移位寄存器),用不到!QH。其它情况,可能用得到。