一张图片和一段文字,哪种信息传递方式给人的第一视觉冲击是最大的?我想大家心中都有答案。 这也是我文章标题的来由。废话就到这里,下面我就用图片来分析595这个chip。 74HC595的最重要的功能就是:串行输入,并行输出。3态高速位移寄存器(好腻害的说) 595里面有2个8位寄存器:位移寄存器、存储寄存器 位移寄存器 在我看来,74HC595的位移寄存器工作方式就像shou qiang弹夹。但是子弹的发射(位移寄存器中的数据转储到存储寄存器),又像是【散x弹】(因为是并行输出嘛) //这里本来是一张shou qiang的图的,博客园不让发 (┬_┬) 为什么说和弹夹很像呢? 1、串行输入,已进入的位数据依次下移(所以叫位移寄存器) | 子弹也是一颗一颗上的,先上的子弹,被后上的慢慢往下压。 2、第一个输入的位,是并行输出的最后一个位 | 最先进入弹夹的子弹,最后射出。 74HC595的引脚图 14脚:DS,又叫SER 英文全称是:Serial data input ,顾名思义,就是串行数据输入口 。 595的数据来源只有这一个口,一次只能输入一个位,那么连续输入8次,就可以积攒为一个字节了。 假如,我们要将二进制数据0111 1111 输入到595的位移寄存器中,下面来上一张动态图,模拟了前2个位输入的情景。 这个图有7帧,做了很久,毕竟不是做美工的。可谓术业有专攻,闻道有先后啊,还是要虚心学习 :) 0111 1111 这个数据完全输入后是这样的 我们还要注意一个脚: 11脚,(shift register clock input) 位移寄存器时钟引脚 。上升沿有效。 首先我们要介绍这个引脚的作用。 我们知道51单片机的工作离不开晶振,他使CPU的工作步调稳定有序,就像跑步时喊1,2,1的那个人。 那么这里的位移寄存器时钟也是同样的道理,当一个新的位数据要进来时,已经进入的位数据就在位移寄存器时钟脉冲的控制下,整体后移,让出位置。 上升沿 :电平从低到高的那个过程。位移寄存器时钟在上升沿这个过程中才起作用。 存储寄存器 到这里我们已经大致讲了怎么上子弹,也把子弹上齐了。下面来将怎么将子弹打出去,也就是怎么 将位移寄存器的数据转移到存储寄存器 存储寄存器是直接和8个输出引脚相通的,将位移寄存器的数据转移到存储寄存器后,Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 就可以接受带到我们 开始输入的一个字节的数据。所谓存储寄存器,就是数据可以存在这个寄存器中,并不会随着一次输出就消失,只要595不断电,也没有新 的 数据从位移寄存器中过来,数据就一直不变且有效。新的数据过来后,存储寄存器中的数据就会被覆盖更新。 12脚: (storage register clock input ) 存储寄存器时钟 数据从位移寄存器转移到存储寄存器,也是需要时钟脉冲驱动的,这就是12脚的作用。它也是上升沿有效。 自此,我们已经讲解了一个595正常情况下的工作流程,下面写一个程序,让8个LED保持 亮暗亮暗.... 间隔的效果。 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 分别接 8个LED正极 14脚SER 接 单片机P3.4 11脚SCK 接 单片机P3.6 12脚RCK接 单片机P3.5 13脚OE接GND 10脚MR接VCC 9脚闲置不接 #include 扩展提升 见识到595的厉害了吧。138译码器通过3个输入口控制8个输出口,而且还只能是特定的8个输出值, 而595只用了一个输入口就可以输任意的8位数据。可谓短小精悍。 啥?你觉的1位控制8位输出还不够?让你的595串联起来吧!打造成加特林机关枪。 在上面的程序中用到的9脚,没用起作用,如果要让2个595串联起来的话,就需要它了。 想一下,我们填满了8个位移寄存器后,再往位移寄存器中塞一个会怎么样?也许你想到了。 对!位移寄存器的最后一个位数据会被挤出去,从哪里出去?就是从9脚输出的。如果我们把第一个595的 9脚连接到第二个的串行数据输入脚SER,那么,就形成了595的级联。这样,如果我们用2个595组合成了一个新的超级595, 这个草鸡595的位移寄存器和存储寄存器的容量都翻倍了,1口控制16口,有木有!你还可以继续级联下去! 最后还遗留2个 595 的脚没说 13脚OE 输出使能控制脚,如果它不工作,那么595的输出就是高阻态,595就不受我们程序控制了,这显然违背我们的意愿。 OE的上面画了一条线,表示他是低电平有效。于是我们将他接GND。 10脚MR ,位移寄存器清空脚,他的作用就是将位移寄存器中的数据全部清空,这个很少用到,所以我们一般不让他起作用,他 也是低电平有效,于是我们给他接VCC。 终于写完了,希望帮到大家。以后还会继续讲解其它的74系列的逻辑芯片,尽请期待! 如有错误欢迎指出。 :) |
|