文章目录
74HC595介绍
介绍
74HC595芯片是一个串行输入,并行输出设备。其内部包括一个8位移位寄存器、一个存储器以及三态输出门电路,其中移位寄存器和存储器都有相互独立的时钟。
参考文档
引脚图
原理图(这个是讲述74hc595的原理图)
8x8点阵
介绍
8X8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上
点阵一共有两种类型 共阴(AS) 和 共阳(BS) ,这里我推
参考文档
电路图
原理介绍
既然8x8点阵是有64个led二极管组成,那是不是就意味我们可以根据用8组正负极电源就可以控制LED的显示,这样看来就比较简单,示例如下
显示一个点
显示两个点
这样看来一切都显得合情合理,那这样理解8x8点阵就很简单了呀,很容易就可以自己自定义图案了呀,但是我当我们需要显示三个点的时候问题就来了
显示三个点
你会发现,当我们需要显示三个点的时候,会显示四个点!所以说我们上述的原理是错误的,因为我们有64个led,所以就需要64组才能单独控制!但是会不会有什么其他的方法呢?其实是有的,接着往下看!
原理
由于我们人眼能看的刷新频率是很低的,所以只要相应足够快,而且保持连贯我们看到的就是一个完整的画面,就像电影一样,都是一帧一帧的,点整其实也是这样子的,是一种逐行扫描的显示方式
就是在短时间内,先显示第0行,再显示第2行,一次类推,然后保持循环,这样就能正常显示我们需要的内容
74hc595 驱动 8x8点阵
参考文档
电路图
不想焊接或者使用面包板的同学可以淘宝直接购买套件,动手能力比较强的同学可以自己动手尝试一下,但是这个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(单纯学习交友,无其他不良目的)共同学习进步