Arduino+2片74hc595 驱动8x8(共阳)点阵(1008BS)

74HC595介绍

介绍

74HC595芯片是一个串行输入,并行输出设备。其内部包括一个8位移位寄存器、一个存储器以及三态输出门电路,其中移位寄存器和存储器都有相互独立的时钟。

参考文档

74HC595 说明文档

74HC595 原理说明文档

引脚图

74hc595引脚图
74hc595引脚说明图

原理图(这个是讲述74hc595的原理图)

原理图

8x8点阵

介绍

8X8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上
点阵一共有两种类型 共阴(AS) 和 共阳(BS) ,这里我推

参考文档

8x8点阵参考文档

电路图

8x8电路图

原理介绍

既然8x8点阵是有64个led二极管组成,那是不是就意味我们可以根据用8组正负极电源就可以控制LED的显示,这样看来就比较简单,示例如下

显示一个点

8x8显示一个点

显示两个点

8x8显示两个点

这样看来一切都显得合情合理,那这样理解8x8点阵就很简单了呀,很容易就可以自己自定义图案了呀,但是我当我们需要显示三个点的时候问题就来了

显示三个点

8x8显示三个点

你会发现,当我们需要显示三个点的时候,会显示四个点!所以说我们上述的原理是错误的,因为我们有64个led,所以就需要64组才能单独控制!但是会不会有什么其他的方法呢?其实是有的,接着往下看!

原理

由于我们人眼能看的刷新频率是很低的,所以只要相应足够快,而且保持连贯我们看到的就是一个完整的画面,就像电影一样,都是一帧一帧的,点整其实也是这样子的,是一种逐行扫描的显示方式
原理图

就是在短时间内,先显示第0行,再显示第2行,一次类推,然后保持循环,这样就能正常显示我们需要的内容

74hc595 驱动 8x8点阵

参考文档

参考文档1-这个比较详细

参考文档1-这个比较侧重介绍74hc595

这个是官方的文档写得挺好的,不过是英文的

电路图

不想焊接或者使用面包板的同学可以淘宝直接购买套件,动手能力比较强的同学可以自己动手尝试一下,但是这个74HC595容易烧坏,建议多买几块,以防止意外

电路图

接线图

接线图

程序代码

//**************************************************************//
//  Name    : shiftOutCode, Dual Binary Counters                 //
//  Author  : Carlyn Maw, Tom Igoe                               //
//  Date    : 25 Oct, 2006                                       //
//  Version : 1.0                                                //
//  Notes   : Code for using a 74HC595 Shift Register            //
//          : to count from 0 to 255                             //
//**************************************************************//

//Leo tested with smile(Loop() changed) 2012.11.21

//Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
Pin connected to DS of 74HC595
int dataPin = 11;

void setup() {
  //Start Serial for debuging purposes
  Serial.begin(9600);
  //set pins to output because they are addressed in the main loop
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT); //让三个脚都是输出状态
}

void loop() {
  unsigned int b[8][2] = {
    {0x7f, 0x3c}
    , {0xbf, 0x42}
    , {0xdf, 0xa5}
    , {0xef, 0x81}
    , {0xf7, 0xa5}
    , {0xfb, 0x99}
    , {0xfd, 0x42}
    , {0xfe, 0x3c}
  };
  
  show(b);
}

/**
 * 显示点阵内容
 * @param a:点阵内容数据
 */
void show(unsigned int a[8][2]) {
  for ( int i = 0; i < 8; i++) {
    //Smile for 8x8 Matrix LED
    digitalWrite(latchPin, 0);
    for (int j = 0; j < 2; j++) {
      shiftOut(dataPin, clockPin, LSBFIRST, a[i][j]);
    }
    digitalWrite(latchPin, 1);
  }
}

感悟

写到最后,我个人是不推荐用74hc595 来驱动8x8点阵的,由于点阵是扫描显示,所以在一定程度上来说它只能让我们只显示一个图案,如果说你需要显示动图,或者滚动显示,这个实现起来就会比较麻烦,但是学习使用还是很好的,适合我们这样的初学者入门学习,而且淘宝上有74hc595的线程的模块买,不想焊接的同学可以买现成的套装,最后如果你真的像驱动显示8x8的点阵,我推荐使用max7219芯片,后期我也会出一个关于max7219驱动8x8点阵的帖子的,目前还在学习中…

鸣谢

文章我使用了很多来自其他平台的文章,在这里我表示感谢,也表示歉意,没有一个一个署名的著名他们的文章和姓名,也没有事先取得用户的意见就将文章链接写到我这个帖子里面,实属不对,在这里你发现有你的文章链接,欢迎跟我联系,我会一一署名鸣谢

欢迎添加QQ1286396784(单纯学习交友,无其他不良目的)共同学习进步

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值