极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 91856|回复: 40

关于74hc595芯片的实验-arduino串入并出实验(转)

  [复制链接]
发表于 2011-11-17 11:27:16 | 显示全部楼层 |阅读模式
原文地址是迷你强的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Ω左右的电阻保护下。。然后后看下面的程序
  1. int latchPin = 8;
  2. int clockPin = 12;
  3. int dataPin = 11; //这里定义了那三个脚
  4. void setup ()
  5. {
  6.   pinMode(latchPin,OUTPUT);
  7.   pinMode(clockPin,OUTPUT);
  8.   pinMode(dataPin,OUTPUT); //让三个脚都是输出状态
  9. }
  10. void loop()
  11. {
  12.   for(int a=0; a<256; a++)
  13.     /*这个循环的意思是让a这个变量+1一直加到到256,每次循环都进行下面的活动*/
  14.   {
  15.     digitalWrite(latchPin,LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
  16.     shiftOut(dataPin,clockPin,MSBFIRST,a);
  17.     /*这个就是用MSBFIRST参数让0-7个针脚以高电平输出(LSBFIRST 低电平)是dataPin的参数,
  18.      clockPin的参数是变量a,前面我们说了这个变量会一次从1+1+到256,是个十进制数,
  19.      输入到芯片后会产生8个二进制数,达到开关的作用*/
  20.     digitalWrite(latchPin,HIGH); //将ST_CP这个针脚恢复到高电平
  21.     delay(1000); //暂停1秒钟让你看到效果
  22.   }
  23. }
复制代码
此程序的效果就是通过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个脚的原理,因为针脚的作用其实也就是开开关关。。。。
具体换算原理不做深究,请自己查询。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1 +1 收起 理由
幻生幻灭 + 1 19楼附实验图。强子BLOG打不开了

查看全部评分

回复

使用道具 举报

发表于 2012-2-9 22:32:45 | 显示全部楼层
那个进制换算使神吗意思
回复 支持 反对

使用道具 举报

发表于 2012-2-10 21:55:34 | 显示全部楼层
不是进制换算,其实是串入并处,表现形式就是输送一个十进制数,会在芯片的8个脚输出等同的8位二进制的高低电平
回复 支持 反对

使用道具 举报

发表于 2012-2-27 11:27:44 | 显示全部楼层
支持啊,这里面学习的东西非常的多啊,好好利用!
回复 支持 反对

使用道具 举报

发表于 2012-2-27 12:42:03 | 显示全部楼层
直觉上是个好东西……举个应用的例子呗?比如用来驱动数码管?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-27 17:50:12 | 显示全部楼层
黑马 发表于 2012-2-27 12:42
直觉上是个好东西……举个应用的例子呗?比如用来驱动数码管?

这个是数码管例子

http://www.geek-workshop.com/forum.php?mod=viewthread&tid=204
回复 支持 反对

使用道具 举报

发表于 2012-3-13 14:55:24 | 显示全部楼层
按教程链接试下 为什么木有反应 求解答?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2012-3-17 13:54:46 | 显示全部楼层
黑格士 发表于 2012-3-13 14:55
按教程链接试下 为什么木有反应 求解答?

256前面应该是<, 不是>
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-3-17 14:11:18 | 显示全部楼层
smallzzy 发表于 2012-3-17 13:54
256前面应该是

原来如此。。。我把错误代码改过来了
回复 支持 反对

使用道具 举报

发表于 2012-9-13 22:35:25 | 显示全部楼层
弘毅 发表于 2012-3-17 14:11
原来如此。。。我把错误代码改过来了

我尝试了一下,一片可以很容易的驱动起来,两片就不行了。我用两个级联来驱动4位共阳极数码管,八个码位接第一片595,四位阳极选择端接第二片595,想法是先输出选择端数据,移位,然后再输出数码位。这里有个问题,第一次输出是高电平,第二次输出是低电平,但是我试了N多次都没有成功,希望弘毅老兄给写个两位乃至几位级联的例子。
回复 支持 反对

使用道具 举报

发表于 2012-9-16 12:49:32 | 显示全部楼层
595的级联,你是如何发送? 我以前看过的文章上说,如果是16位,先发高8位,再发低8位
回复 支持 反对

使用道具 举报

发表于 2012-9-16 20:36:21 | 显示全部楼层
lanxix 发表于 2012-9-16 12:49
595的级联,你是如何发送? 我以前看过的文章上说,如果是16位,先发高8位,再发低8位

我就是按照这个来做的,如果两个八位都是低电平输出木有问题,用两片同时驱动两个数码管可以正常显示,而且第二个比第一个延迟一个步骤。但是如果驱动四位数码管就不同了,我的是共阳极的,第一个595连接八个码位,第二个连接四个阳极选择位。按照要求,需要先输出第二片的控制,这个时候是高电平输出,然后再输出第一块的数据,又是低电平输出,然后就不正常了。
回复 支持 反对

使用道具 举报

发表于 2012-9-16 21:02:43 | 显示全部楼层
萧芸凤 发表于 2012-9-16 20:36
我就是按照这个来做的,如果两个八位都是低电平输出木有问题,用两片同时驱动两个数码管可以正常显示,而 ...

你说高电平输出和低电平输出是指MSBFIRST和LSBFIRST 吗?其实这不叫高低电平,应该叫二进制高低位

SPI接口要说明先传高位还是低位,MSBFIRST是高位到低位的发送,LSBFIRST反之

像11110000 如果是MSBFIRST发送,那么是按从左到右的方向发送,LSBFIRST反之.

一块595,接收方向我映像中是从高位开始填充,就是Q7至Q0 意思就是11110000以MSBFIRST发送的话,
那么Q7~Q0的位置正好对应这个二进制的位置,LSBFIRST反之.

如果级联595,似乎是最后一块开始填充吧,这个没试验,那是以前无意看到的,不知道有没有记错,如果说错了还不要介意,交流下
回复 支持 反对

使用道具 举报

发表于 2012-9-16 21:10:19 | 显示全部楼层
lanxix 发表于 2012-9-16 21:02
你说高电平输出和低电平输出是指MSBFIRST和LSBFIRST 吗?其实这不叫高低电平,应该叫二进制高低位

SPI接 ...

如果就只传输一个字节,那应该是传到最后一块的还是第一块的,如果是最后一块我就需要重新思考了,我是5块连到一起的
回复 支持 反对

使用道具 举报

发表于 2012-9-16 22:56:35 | 显示全部楼层
萧芸凤 发表于 2012-9-16 21:10
如果就只传输一个字节,那应该是传到最后一块的还是第一块的,如果是最后一块我就需要重新思考了,我是5块 ...

应该是最后一块收到
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 04:47 , Processed in 0.063091 second(s), 33 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表