极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 60103|回复: 14

74HC595控制数码管显示数字(arduino-74hc595试验2)(转)

[复制链接]
发表于 2011-11-17 11:39:41 | 显示全部楼层 |阅读模式
原文地址是迷你强的BLOG:http://www.miniqiang.com/?p=58

经过昨天的研究,发现之前的理解还是有误的。串入并处并不是啥进制转换,而是将八位二进制数通过八只脚同时输出,,串行的一个一个输出,然后并行同时输出。
随后研究了用74HC595的8只脚控制四位共阳数码管中得一个管依次显示0-9这几个数,数码管资料如下:
[/url]
因为目前只涉及一个芯片,针脚有限,所以此实验只点亮一个数码。我们将12号针脚加220Ω保护电阻接入V5电路,其他各脚依次接入电路。
接线方式如下图:
[url=http://www.miniqiang.com/wp-content/uploads/2011/11/74hc595%E9%A9%B1%E5%8A%A8%E6%95%B0%E7%A0%81%E7%AE%A1_bbc.png]



74hc595引脚资料如下
[url=http://www.miniqiang.com/wp-content/uploads/2011/11/QQ%E6%88%AA%E5%9B%BE20111116095314.png][/url]
四位共阳数码管一共有12只引脚
依据上图的视角引脚编号为:
12,11,10,9,8,7
1,2,3,4,5,6
参照上面的参数图,我们将12号脚接入电源高电平,依次接入各输出脚,然后下面来看程序
  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.   int a[10]={
  13.     3,159,37,13,153,73,65,27,1,9  };   //定义功能数组,数组依次为数码管得定义
  14.   for(int x=9; x>-1 ;x-- )                        //倒数功能循环
  15.   {
  16.     digitalWrite(latchPin,LOW);
  17.     shiftOut(dataPin,clockPin,MSBFIRST,a[x]);     //显示数组a[x]
  18.     digitalWrite(latchPin,HIGH);
  19.     delay(1000);
  20.   }
  21. }
复制代码
以上程序用到了数组,数组内部的数字是数码管的8位二进制显示状态的十进制数,通过调用数组循环倒数0-9这几个数,通过输出高电平来熄灭相应的灯管达到显示数字的目的
今天的试验就到这里了。明天应该是加上一个74hc595,用来控制四个阳极,来达到完整控制整个数码管。



本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2012-3-4 15:59:37 | 显示全部楼层
怎么引脚定义里连议员/副秘书长都出来了?
回复 支持 反对

使用道具 举报

发表于 2012-3-10 03:50:04 | 显示全部楼层
你好,我想问下,假如是共阴极的四位数码管,再加上一个74HC595之后如何来控制阴极间的干扰,因为我现在从第一个595往第二个595传的时候,完全传不过去,四位依然都是显示一样的。能不能指导一下?谢谢!
回复 支持 反对

使用道具 举报

发表于 2012-3-13 22:29:03 | 显示全部楼层
你的原来的段码的值没有清除的,所以在选择新的位之后,也会显示先前定义的数字。

不清楚你说的传不过去是什么意思,如果是第二个数码管没法正常工作,那应该是595的级连接错了。
回复 支持 反对

使用道具 举报

发表于 2012-3-31 16:45:37 | 显示全部楼层
这个芯片的应用就是那个光立方吧
回复 支持 反对

使用道具 举报

发表于 2012-5-19 01:50:24 | 显示全部楼层
int a[10]={    3,159,37,13,153,73,65,27,1,9  };   //定义功能数组,数组依次为数码管得定义  for(int x=9; x>-1 ;x-- )                        //倒数功能循环  {    digitalWrite(latchPin,LOW);    shiftOut(dataPin,clockPin,MSBFIRST,a[x]);     //显示数组a[x]    digitalWrite(latchPin,HIGH);    delay(1000);  }
回复 支持 反对

使用道具 举报

发表于 2013-6-24 15:47:25 | 显示全部楼层
74HC595输出端Q0~Q7对应连接数码管的a,b,c,d,e,f,g,dp的话,修改下面数组的值

int a[10]={
192,249,164,176,153,146,130,248,128,144  };   //定义功能数组,数组依次为数码管得定义
运行上面的程序即可得到满意的效果。
回复 支持 反对

使用道具 举报

发表于 2014-2-28 16:53:58 | 显示全部楼层
应该是加上一个74hc595,用来控制四个阳极,来达到完整控制整个数码管。
请问发在那里?
回复 支持 反对

使用道具 举报

发表于 2014-4-23 13:15:36 | 显示全部楼层
能不能来一个数字8 然后闪几下??我控制8个LED,同时亮暗后,再次亮起芯片温度马上升温。。那塑料的实验板子都化了。。。
回复 支持 反对

使用道具 举报

发表于 2014-12-28 12:24:46 | 显示全部楼层
我想知道数组中的那些数字是怎么来的,我连接了一个一位数码管,不知道怎么显示数字
回复 支持 反对

使用道具 举报

发表于 2015-10-12 21:30:59 | 显示全部楼层
您的5V 和 GND 接到面包板的线 是不是画错了? 这样就短路了吧
回复 支持 反对

使用道具 举报

发表于 2015-11-22 22:43:01 | 显示全部楼层
可以把74hc595的q0-7设置成输入模式吗?
回复 支持 反对

使用道具 举报

发表于 2016-5-24 23:47:34 | 显示全部楼层
4个阳极为什么不直接用四个引脚来控制呢?也够用了吧
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 12:57 , Processed in 0.049862 second(s), 35 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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