Arduino 学习笔记 | 单片机控制驱动MAX7219 8*8 LED点阵显示模块
第一部分
8 x 8点阵模块
不带MAX7219驱动的8×8 點矩陣LED(如下图),从左侧有写字的一侧开始,L接正电,C接负电。
- 列L (1、2、3、4、5、6、7、8)
- 行C(1、2、3、4、5、6、7、8)
Arduino接线
因为Arduino Uno引脚有限,所以就只接了6个引脚做6*6LED灯示例。
实验一: 点亮(L4,C1)LED灯
注意:PIN0 、PIN1引脚为串口UART下载程序引脚,下载程序是先拔掉导线。
int line[6] = {0,1,2,3,4,5};
int col [6] = {8,9,10,11,12,13};
void setup() {Serial.begin(9600);for(int i=0;i<6;i++){pinMode(line[i],OUTPUT);//输出模式pinMode(col[i],OUTPUT);// 注意: L为 HIGH时,C为LOW时LED点亮digitalWrite(line[i],LOW);//初始化关闭所有LED灯 digitalWrite(col[i],HIGH);//Serial.print(line[i]);Serial.print("-");}}void loop() {digitalWrite(line[3],HIGH);//点亮点阵上的(L4,C1)LED灯digitalWrite(col[0],LOW);}
实验二: 点亮 “X” 形状LED灯
//定义6 * 6的二维数组appear[6][6] 二维数组格式: 阵列[行][列] appear[c][l]
//1为点亮LED,0为熄灭LED。
int appear[6][6] = { {1,0,0,0,0,1},{0,1,0,0,1,0},{0,0,1,1,0,0},{0,0,1,1,0,0},{0,1,0,0,1,0},{1,0,0,0,0,1}};
int col [6] = {8,9,10,11,12,13};//一维数组定义 col 的6个脚位 (行)
int line[6] = {0,1,2,3,4,5};//一维数组定义 line 的6个脚位 (列)//二维数组定义 阵列[行][列]appear[c][l] 1为点亮LED,0为熄灭LED。
int appear[6][6] = { {1,0,0,0,0,1},{0,1,0,0,1,0},{0,0,1,1,0,0},{0,0,1,1,0,0},{0,1,0,0,1,0},{1,0,0,0,0,1}};
void setup() {Serial.begin(9600);for(int i=0;i<6;i++){pinMode(col[i],OUTPUT);//输出模式pinMode(line[i],OUTPUT);// 注意: L为 HIGH时,C为LOW时LED点亮 digitalWrite(col[i],HIGH);//初始化关闭LED灯 digitalWrite(line[i],LOW);//}}void loop() {// digitalWrite(line[3],HIGH);//点亮点阵上的(L4,C1)LED灯
// digitalWrite(col[0],LOW);for(int c=0;c<6;c++){for(int l=0;l<6;l++){if(appear[c][l]==1){digitalWrite(col[c],LOW);//点亮c行,l列的LED灯digitalWrite(line[l],HIGH);} Serial.print(appear[c][l]);//打印二维数组的第c行,l列的数值// Serial.print(c);//打印行数
// Serial.print(l);//打印列数Serial.print(" ");}Serial.print("\n");//换行}while(1){;}
}
第二部分
MAX7219简介
MAX7219 是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。
一个方便的四线串行接口可以联接通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219同样允许用户对每一个数据选择编码或者不编码。
一个方便的四线串行接口可以联接通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219同样允许用户对每一个数据选择编码或者不编码。
整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。
只需要3个IO口即可驱动1个点阵!点阵显示时无闪烁!支持级联!
接线说明:
1.模块左边为输入端口,右边为输出端口。
2.控制单个模块时,只需要将输入端口接到CPU
3.多个模块级联时,第1个模块的输入端接CPU,输出端接第2个模块的输入端,第2个模块的输出端接第3个模块的输入端,以此类推…
以Arduino Nano为例:
- VCC → 5V
- GND → GND
- DIN → D11
- CS → D10
- CLK → D13
正如您在上面的布线方案中看到的那样,仅需要5条线,并且我们使用Arduino Nano(也可与UNO一起使用)。如上图所示连接这些电线,将USB电缆连接到Arduino Nano和计算机。现在我们准备加载代码,但是首先我们需要为MAX7219-Display安装必要的库。请在下面查看操作方法:
在Arduino IDE中下载库文件的时候,报错。
另辟蹊径,在YouTube上找到了一个8*8LED数码管的教程视频地址。GitHub获取库文件。
实验一:
//Viral Science www.viralsciencecreativity.com www.youtube.com/c/viralscience
//LED 8x8 Matrix Display DEMO
//Libary link:https://github.com/wayoda/LedControl
//Chinse wedsite: CSDN -> Naiva#include <LedControl.h>
int DIN = 11;
int CS = 10;
int CLK = 13;LedControl lc=LedControl(DIN,CLK,CS,0);void setup(){lc.shutdown(0,false); lc.setIntensity(0,15); //Adjust the brightness maximum is 15lc.clearDisplay(0);
}void loop(){ //Facial Expressionbyte smile[8]= {0x3C,0x42,0xA5,0x81,0xA5,0x99,0x42,0x3C};byte neutral[8]= {0x3C,0x42,0xA5,0x81,0xBD,0x81,0x42,0x3C};byte sad[8]= {0x3C,0x42,0xA5,0x81,0x99,0xA5,0x42,0x3C};//Arrowbyte arrow_up[8]= {0x18,0x3C,0x7E,0xFF,0x18,0x18,0x18,0x18};byte arrow_down[8]= {0x18,0x18,0x18,0x18,0xFF,0x7E,0x3C,0x18};//Alternate Patternbyte d1[8]= {0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55};byte d2[8]= {0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA};//Moving carbyte b1[8]= {0x00,0x00,0x00,0x00,0x18,0x3C,0x18,0x3C};//8*8LED点阵 取模软件生成byte b2[8]= {0x00,0x00,0x00,0x18,0x3C,0x18,0x3C,0x00};byte b3[8]= {0x00,0x00,0x18,0x3C,0x18,0x3C,0x00,0x00};byte b4[8]= {0x00,0x18,0x3C,0x18,0x3C,0x00,0x00,0x00};byte b5[8]= {0x18,0x3C,0x18,0x3C,0x00,0x00,0x00,0x00};byte b6[8]= {0x3C,0x18,0x3C,0x00,0x00,0x00,0x00,0x18};byte b7[8]= {0x18,0x3C,0x00,0x00,0x00,0x00,0x18,0x3C};byte b8[8]= {0x3C,0x00,0x00,0x00,0x00,0x18,0x3C,0x18};//Moving carprintByte(b1);delay(50);printByte(b2);delay(50);printByte(b3);delay(50);printByte(b4);delay(50);printByte(b5);delay(50);printByte(b6);delay(50);printByte(b7);delay(50);printByte(b8);delay(50);//alternate patternprintByte(d1);delay(100);printByte(d2);delay(100);//ArrowprintByte(arrow_up);delay(2000);printByte(arrow_down);delay(2000);//Facial Expression printByte(smile);delay(1000);printByte(neutral);delay(1000);printByte(sad); delay(1000);}void printByte(byte character [])
{int i = 0;for(i=0;i<8;i++){lc.setRow(0,i,character[i]);}
}
本文资料下载
~~密码WeChat :Zero903828673 ~~
参考资料
- [1] 【Arduino教學】實作11- 8×8 點矩陣LED(YouTube视频)
- [2] Arduino LED 8X8 Matrix Display MAX7219 (YouTube视频)
Arduino 学习笔记 | 单片机控制驱动MAX7219 8*8 LED点阵显示模块相关推荐
- arduino学习笔记十六--震动开关与LED
检测到震动,点亮LED 实验用到的材料 一个震动传感器 1个10K电阻 1个LED 1个470欧姆电阻 5根杜邦线 1片实验板 原理图 按照原理图接线 震动 LED点亮 延时. 1接好线 2下载程序, ...
- Arduino学习笔记(1):太极创客 第一部分
Arduino学习笔记 太极创客 第一部分 笔记 1-5 变量 1-6 程序结构 1-7 变量操作 1-8/1-9 程序函数 1-10/1-11 数字输出 1-12 面包板 1-13/1-14 数字输 ...
- Arduino学习笔记2
一.蜂鸣器输出实验 1.源代码 int buzzer=2;//设置控制蜂鸣器的数字口对应板子上2口 void setup() { pinMode(buzzer,OUTPUT);//设置对应的输出模式 ...
- arduino 学习笔记及课件01基础入门
arduino 学习笔记及课件01基础入门 以下学习笔记中图片部分由太极创客视频截图所得 概论 一. 引脚及信号 1.1引脚模式 INPUT:当Arduino没有使用上拉电阻或下拉电阻而直接与开放的开 ...
- OpenCV学习笔记(五十六)——InputArray和OutputArray的那些事core OpenCV学习笔记(五十七)——在同一窗口显示多幅图片 OpenCV学习笔记(五十八)——读《Mast
OpenCV学习笔记(五十六)--InputArray和OutputArray的那些事core 看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray ...
- 学习笔记之卸载远程目标进程中的DLL模块(转)
学习笔记之卸载远程目标进程中的DLL模块 (2007-07-23 23:51:02) 转载▼ 学习笔记之卸载远程目标进程中的DLL模块2007/7/23 1.首先得把DLL模块中的线程结束 使用Cre ...
- Slicer学习笔记(二十三)slicer调试自带模块
Slicer学习笔记(二十三)slicer调试自带模块 1.调试Segment Editor模块下的Grow from seeds 2.调试文件与细节 2.1.masterImageData的调试信息 ...
- Slicer学习笔记(三十九)slicer中Markups模块
Slicer学习笔记(三十九)slicer中Markups模块 1.概念 1.1.Markups模块简介 1.2.应用方向 1.3.界面面板 1.Markups List 2.Buttons And ...
- Slicer学习笔记(六十二)slicer下导出模块接口
Slicer学习笔记(六十二)slicer下导出模块接口 1. 参考文件实现 1. 参考文件实现 通过配置config_file为每一个生成类添加 Export,并为每个Module生成 Export ...
最新文章
- iOS 查询数组中的对象
- CCF CTO Club 官宣:活动Logo诞生啦!
- mysql range用法_MySQL的常用函数
- 产品分析报告|读书新贵——《网易蜗牛读书》
- MySQL 日期时间类型怎么选?千万不要乱用!
- 出租(标记+格式输出)
- web公选课第三节2020.5.18
- Tomcat集群session复制与Oracle的坑
- C++工作笔记-对友元函数的进一步理解
- Unity3D-协同程序
- 02-dos2unix命令与windows编辑shell不可执行问题
- ajax请求整理(一) 2021.05.12
- Java基础(四)——异常、断言、日志
- Tensorflow——Tensorflow的用途、安装、数据流图
- spring boot 2.0 与FASTDFS进行整合
- vfp语言属于第代计算机语言,计算机等级考试VFP教程:第二章VFP语言基础
- oppor829t如何刷机_OPPO R829T中文Recovery刷机教程
- 计算机病毒知识 360回答,计算机病毒与反病毒技术 课后习题答案
- 密码学hash函数-SHA256-512
- egg.js入门教程视频文件(转载于cnode社区)
热门文章
- ww:action 的一个问题
- 英飞凌IGBT驱动芯片2ED020I12F2去饱和电路设计总结整理收集
- linux禁止普通用户修改密码,禁止普通用户Sudo修改root密码
- Nginx配置 多个域名指向同一个服务器文件
- Eclipse报错Could not write metadata for '/RemoteSystemsTempFiles'.D:\Program Files\eclipse\workspace\.
- 64位的电脑比32位的电脑跑的快么?「多图预警」
- Windows优化大师注册机源码
- 【C++】QT调用VS封装的dll(以科大讯飞离线命令词识别SDK为例)
- 【大数据趋势】12月3日纳指大概率反弹到黄金分割附近,然后下跌,之后进入趋势选择期,恒指会跟随。感觉或许有什么大事情要发生,瞎猜中。
- 2022CCPC女生赛 | 总结