原文地址是迷你强的BLOG:http://www.miniqiang.com/?p=3
看了很多有关于74hc595芯片的介绍,手册,教程,以及各种详细讲解,云里雾里各种不理解,但是跟着将程序写出来,执行后,我顿时理解了这玩意的用处,这玩意简单的说就是一个通过输入一个10进制数(0-255),芯片会将其转换成8位2进制数以高低电平的方式由其对应的引脚输出。 [/url]
Q0-Q7这8个脚就是输出脚
vcc接5V
GUN接地
MR是主复位针脚低电平有效,所以我们要给他加高电平,一样接到5v上面
OE是输出控制器,低电平才能让芯片输出,所以我们将它接到地线上
然后将DS(pin14)接到arduino的11号数字口上,SH_CP(pin11)接到arduino12号数字口,ST_CP(pin12)接到arduino的8号口上(后面这三个针脚接arduino针脚按自己喜好接,程序中定义好就行了,无所谓的)
然后Q0-Q7按自己喜好,接数码管也行,接led也行,反正能实现同时控制8个东东
[url=http://www.miniqiang.com/wp-content/uploads/2011/11/QQ%E6%88%AA%E5%9B%BE20111116095511.png]
以LED为例,LED别忘了接上200Ω左右的电阻保护下。。然后后看下面的程序- int latchPin = 8;
- int clockPin = 12;
- int dataPin = 11; //这里定义了那三个脚
- void setup ()
- {
- pinMode(latchPin,OUTPUT);
- pinMode(clockPin,OUTPUT);
- pinMode(dataPin,OUTPUT); //让三个脚都是输出状态
- }
- void loop()
- {
- for(int a=0; a<256; a++)
- /*这个循环的意思是让a这个变量+1一直加到到256,每次循环都进行下面的活动*/
- {
- digitalWrite(latchPin,LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
- shiftOut(dataPin,clockPin,MSBFIRST,a);
- /*这个就是用MSBFIRST参数让0-7个针脚以高电平输出(LSBFIRST 低电平)是dataPin的参数,
- clockPin的参数是变量a,前面我们说了这个变量会一次从1+1+到256,是个十进制数,
- 输入到芯片后会产生8个二进制数,达到开关的作用*/
- digitalWrite(latchPin,HIGH); //将ST_CP这个针脚恢复到高电平
- delay(1000); //暂停1秒钟让你看到效果
- }
- }
复制代码 此程序的效果就是通过LED的明灭来表示0或者1,8个二极管就能表示8位二进制数,换算成10进制数的话正好是0-255,与我们程序对应
附录:8位二进制与10进制数字的换算关系
十进制与二进制换算表
十进制:128 64 32 16 8 4 2 1
二进制:0 0 0 0 0 0 0
简单的说,二进制的数值换算十进制按上面的表推算就行了 比如说二进制数101就相当于00000101,按上面表对应得数字就是4和1,4+1=5所以十进制的值就是5,将a这个变量赋值为5的话,led的效果应该是灭灭灭灭灭亮灭亮 ,这个就是所谓的通过三只脚能扩展控制8个脚的原理,因为针脚的作用其实也就是开开关关。。。。
具体换算原理不做深究,请自己查询。
|