第一部分

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点阵显示模块相关推荐

  1. arduino学习笔记十六--震动开关与LED

    检测到震动,点亮LED 实验用到的材料 一个震动传感器 1个10K电阻 1个LED 1个470欧姆电阻 5根杜邦线 1片实验板 原理图 按照原理图接线 震动 LED点亮 延时. 1接好线 2下载程序, ...

  2. Arduino学习笔记(1):太极创客 第一部分

    Arduino学习笔记 太极创客 第一部分 笔记 1-5 变量 1-6 程序结构 1-7 变量操作 1-8/1-9 程序函数 1-10/1-11 数字输出 1-12 面包板 1-13/1-14 数字输 ...

  3. Arduino学习笔记2

    一.蜂鸣器输出实验 1.源代码 int buzzer=2;//设置控制蜂鸣器的数字口对应板子上2口 void setup() { pinMode(buzzer,OUTPUT);//设置对应的输出模式 ...

  4. arduino 学习笔记及课件01基础入门

    arduino 学习笔记及课件01基础入门 以下学习笔记中图片部分由太极创客视频截图所得 概论 一. 引脚及信号 1.1引脚模式 INPUT:当Arduino没有使用上拉电阻或下拉电阻而直接与开放的开 ...

  5. OpenCV学习笔记(五十六)——InputArray和OutputArray的那些事core OpenCV学习笔记(五十七)——在同一窗口显示多幅图片 OpenCV学习笔记(五十八)——读《Mast

    OpenCV学习笔记(五十六)--InputArray和OutputArray的那些事core 看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray ...

  6. 学习笔记之卸载远程目标进程中的DLL模块(转)

    学习笔记之卸载远程目标进程中的DLL模块 (2007-07-23 23:51:02) 转载▼ 学习笔记之卸载远程目标进程中的DLL模块2007/7/23 1.首先得把DLL模块中的线程结束 使用Cre ...

  7. Slicer学习笔记(二十三)slicer调试自带模块

    Slicer学习笔记(二十三)slicer调试自带模块 1.调试Segment Editor模块下的Grow from seeds 2.调试文件与细节 2.1.masterImageData的调试信息 ...

  8. Slicer学习笔记(三十九)slicer中Markups模块

    Slicer学习笔记(三十九)slicer中Markups模块 1.概念 1.1.Markups模块简介 1.2.应用方向 1.3.界面面板 1.Markups List 2.Buttons And ...

  9. Slicer学习笔记(六十二)slicer下导出模块接口

    Slicer学习笔记(六十二)slicer下导出模块接口 1. 参考文件实现 1. 参考文件实现 通过配置config_file为每一个生成类添加 Export,并为每个Module生成 Export ...

最新文章

  1. iOS 查询数组中的对象
  2. CCF CTO Club 官宣:活动Logo诞生啦!
  3. mysql range用法_MySQL的常用函数
  4. 产品分析报告|读书新贵——《网易蜗牛读书》
  5. MySQL 日期时间类型怎么选?千万不要乱用!
  6. 出租(标记+格式输出)
  7. web公选课第三节2020.5.18
  8. Tomcat集群session复制与Oracle的坑
  9. C++工作笔记-对友元函数的进一步理解
  10. Unity3D-协同程序
  11. 02-dos2unix命令与windows编辑shell不可执行问题
  12. ajax请求整理(一) 2021.05.12
  13. Java基础(四)——异常、断言、日志
  14. Tensorflow——Tensorflow的用途、安装、数据流图
  15. spring boot 2.0 与FASTDFS进行整合
  16. vfp语言属于第代计算机语言,计算机等级考试VFP教程:第二章VFP语言基础
  17. oppor829t如何刷机_OPPO R829T中文Recovery刷机教程
  18. 计算机病毒知识 360回答,计算机病毒与反病毒技术 课后习题答案
  19. 密码学hash函数-SHA256-512
  20. egg.js入门教程视频文件(转载于cnode社区)

热门文章

  1. ww:action 的一个问题
  2. 英飞凌IGBT驱动芯片2ED020I12F2去饱和电路设计总结整理收集
  3. linux禁止普通用户修改密码,禁止普通用户Sudo修改root密码
  4. Nginx配置 多个域名指向同一个服务器文件
  5. Eclipse报错Could not write metadata for '/RemoteSystemsTempFiles'.D:\Program Files\eclipse\workspace\.
  6. 64位的电脑比32位的电脑跑的快么?「多图预警」
  7. Windows优化大师注册机源码
  8. 【C++】QT调用VS封装的dll(以科大讯飞离线命令词识别SDK为例)
  9. 【大数据趋势】12月3日纳指大概率反弹到黄金分割附近,然后下跌,之后进入趋势选择期,恒指会跟随。感觉或许有什么大事情要发生,瞎猜中。
  10. 2022CCPC女生赛 | 总结