对于一个常见的8*8的LED矩阵,直接控制的方法通常为:

一般数码管有出厂信息:比如型号为LG5011AH,LG5011BH这里面的AH、BH中的A代表共阴极、B代表共阳极,H代表高亮。

(参考地址:http://blog.sina.com.cn/s/blog_8d2cae7f0100zl6r.html)

关于8*8点阵共阳和共阴的解释(有的初学者是一头雾水): 
1. 有的朋友 认为:共阳就是LED正极全部接在一起,而负极则不是,共阴相反但也是类似。这种说法是错误的哦!(数码管的共阳和共阴是这样的),但点阵8*8点阵共阴 和共阳都是接在一起的。 
2. 所谓共阳和共阴只是管脚排列名称相同(也就是说无论共阳还是共阴管脚编号一 致),但行和列的极性则相反。既然这样,那么我反过方向接共阳不就是变成了共阴吗?理论上是的,但要注意行和列相交的位置发生了变化。 
3. 注意:8*8点阵的管脚不是有顺序的排列哦!

(参考地址:http://wenku.baidu.com/link?url=IAtVsks7B5Bh_E2UN8XxdIUTRsn3b9tPaKfUt9aWAfbUS8PWWAi7F-nBurd8lX_66kTgaACVW7mwmXPeMeb7PKfKYtrOKCSPJT5xJ61KM6a)

下面是引用CSDN博主ling3ye的代码,侵删。

下面代码通过对8*点阵LED引脚的定义,通过控制高低电平来实现点亮一个变化的心形状。


int R[] = {2,7,A5,5,13,A4,12,A2}; //行int C[] = {6,11,10,3,A3,4,8,9};   //列unsigned char biglove[8][8] =       //大“心型”的数据{0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,1,1,0,0,0,};unsigned char smalllove[8][8] =      //小“心型”的数据{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,};void setup(){//循环定义行列PIN 为输出模式for(int i = 0;i<8;i++){pinMode(R[i],OUTPUT);pinMode(C[i],OUTPUT);}}void loop(){for(int i = 0 ; i < 100 ; i++)        //循环显示100次{Display(biglove);                   //显示大”心形“}for(int i = 0 ; i < 50 ; i++)         //循环显示50次{   Display(smalllove);                 //显示小“心形”}}void Display(unsigned char dat[8][8])   //显示函数{for(int c = 0; c<8;c++){digitalWrite(C[c],LOW);//选通第c列//循环for(int r = 0;r<8;r++){digitalWrite(R[r],dat[r][c]);}delay(1);Clear();  //清空显示去除余晖}}void Clear()                          //清空显示{for(int i = 0;i<8;i++){digitalWrite(R[i],LOW);digitalWrite(C[i],HIGH);}}

上面的方式是可以使用的,但是会用到很多的I/O接口,不划算。所以通常会用一个控制器,MAX7219可以用于LED矩阵

关于:https://www.yiboard.com/thread-996-1-1.html,,使用arduino和MAX7219驱动器控制8*8点阵。

跟多的关于Arduino u8g2 OLED的内容可以参考这位大佬的博客::

https://blog.csdn.net/dpjcn1990/article/details/92831760

下面是个奇怪的8*8的LED点阵屏幕,网上的资料不多,具体的接线方式也没有弄明白

只是查找到了这样的一张图,不知道对不对,有时间验证一下。

上面这种接线方式比较麻烦,

现在使用MAX7219这个驱动模块

接线方式

在IN方向的针脚

Arduino Uno    ---     MAX7219

5V                <--->              VCC

GND           <--->              GND

12               <--->              DIN:数据信号(使用DigitalPin(),引脚不冲突即可)

11               <--->              CS:选择信号(使用DigitalPin(),引脚不冲突即可)

10               <--->             CLK:时钟信号(使用DigitalPin(),引脚不冲突即可)

① 接线的时候,注意方向,在IN的方向接线(输入)

② LED的方向也要注意,如果显示不正常,请转变下安插的方向。

这里使用四合一的一个模块

效果:

下面的代码实现一些简单的形状:

#include <LedControl.h>int DIN = 12;int CS =  11;int CLK = 10;byte e[8]=     {0x7C,0x7C,0x60,0x7C,0x7C,0x60,0x7C,0x7C};  //Ebyte d[8]=     {0x78,0x7C,0x66,0x66,0x66,0x66,0x7C,0x78};  //Dbyte u[8]=     {0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x7E};  //Ubyte c[8]=     {0x7E,0x7E,0x60,0x60,0x60,0x60,0x7E,0x7E};  //Cbyte eight[8]= {0x7E,0x7E,0x66,0x7E,0x7E,0x66,0x7E,0x7E};  //8byte s[8]=     {0x7E,0x7C,0x60,0x7C,0x3E,0x06,0x3E,0x7E};  //Sbyte dot[8]=   {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18};  //.byte o[8]=     {0x7E,0x7E,0x66,0x66,0x66,0x66,0x7E,0x7E};  //Obyte m[8]=     {0xE7,0xFF,0xFF,0xDB,0xDB,0xDB,0xC3,0xC3};  //MLedControl lc=LedControl(DIN,CLK,CS,4);void setup(){lc.shutdown(0,false);       //启动时,MAX72XX处于省电模式lc.setIntensity(0,8);       //将亮度设置为最大值lc.clearDisplay(0);         //清除显示}void loop(){ byte smile[8]=   {0x3C,0x42,0xA5,0x81,0xA5,0x99,0x42,0x3C};//笑脸byte neutral[8]= {0x3C,0x42,0xA5,0x81,0xBD,0x81,0x42,0x3C};//标准脸    printByte(eight);//显示8delay(1000);//延时1秒printByte(neutral);//显示标准脸delay(1000);}//点阵显示函数void printByte(byte character []){int i = 0;for(i=0;i<8;i++){lc.setRow(0,i,character[i]);}}

上面的字符是利用8*8LED点阵的取模软件取得的相应的字符。

上面是把MAX7219点阵模块四合一当成一个来用了,那么怎么让这四个同时现实呢??

.多个模块级联时,第1个模块的输入端接CPU,输出端接第2个模块的输入端,第2个模块的输出端接第3个模块的输入端,以此类推...

如下代码实现点阵模块四合一的显示:

#include <LedControl.h>int DIN = 12;
int CS =  11;
int CLK = 10;byte e[8] =     {0x7C, 0x7C, 0x60, 0x7C, 0x7C, 0x60, 0x7C, 0x7C}; //E
byte d[8] =     {0x78, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x78}; //D
byte u[8] =     {0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x7E}; //U
byte c[8] =     {0x7E, 0x7E, 0x60, 0x60, 0x60, 0x60, 0x7E, 0x7E}; //C
byte eight[8] = {0x7E, 0x7E, 0x66, 0x7E, 0x7E, 0x66, 0x7E, 0x7E}; //8
byte s[8] =     {0x7E, 0x7C, 0x60, 0x7C, 0x3E, 0x06, 0x3E, 0x7E}; //S
byte dot[8] =   {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18}; //.
byte o[8] =     {0x7E, 0x7E, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x7E}; //O
byte m[8] =     {0xE7, 0xFF, 0xFF, 0xDB, 0xDB, 0xDB, 0xC3, 0xC3}; //M
byte smile[8] =   {0x3C, 0x42, 0xA5, 0x81, 0xA5, 0x99, 0x42, 0x3C}; //笑脸
byte neutral[8] = {0x3C, 0x42, 0xA5, 0x81, 0xBD, 0x81, 0x42, 0x3C}; //标准脸LedControl lc = LedControl(DIN, CLK, CS, 4);void setup() {for(int index=0;index<lc.getDeviceCount();index++) {lc.shutdown(index, false);      //启动时,MAX72XX处于省电模式lc.setIntensity(index, 4);      //将亮度设置为最大值lc.clearDisplay(index);         //清除显示}
}void loop() {printByte(e);//显示delay(1000);//延时1秒printByte(neutral);//显示标准脸delay(1000);
}//点阵显示函数
void printByte(byte character [])
{int i = 0;for (i = 0; i < 8; i++){//设置4个串联的点阵lc.setRow(0, i, character[i]);lc.setRow(1, i, character[i]);lc.setRow(2, i, character[i]);lc.setRow(3, i, character[i]);}
}

参考:

  1. https://blog.csdn.net/ling3ye/article/details/52986071

arduino笔记26:8*8LED矩阵相关推荐

  1. Arduino笔记实验(初级阶段)—Keypad小键盘

    Arduino笔记实验(初级阶段)-Keypad小键盘 文章目录 Arduino笔记实验(初级阶段)-Keypad小键盘 前言 一.电路图 二.集成库方案(Keypad) 三方集成库 代码 实验效果展 ...

  2. 程序的加载和执行(六)——《x86汇编语言:从实模式到保护模式》读书笔记26

    程序的加载和执行(六)--<x86汇编语言:从实模式到保护模式>读书笔记26 通过本文能学到什么? NASM的条件汇编 用NASM编译的时候,通过命令行选项定义宏 Makefile的条件语 ...

  3. python学习笔记26(python中__name__的使用)

    python学习笔记26(python中__name__的使用) 在python中,每个py文件都是一个模块,也都是一个可执行文件,即包含main方法.因此,对每个py文件,可以单独运行,也可以imp ...

  4. 考研数学笔记26~30

    考研数学笔记26~30

  5. python tensorflow学习笔记(五)矩阵乘法运算

    相关公式 [0.36424586843872840.6675075448915823]×[0.134750808390697090.5863696301031353]=[0.44048858] \be ...

  6. 【Arduino笔记】超声波传感器的使用

    这里使用:超声波传感器HC-SR04型号,搭配SG90舵机. 超声波简介 测量距离:2 ~ 400cm 分辨率:0.3cm 测量频率:40Hz 测量角度:15° 工作电压:4.5 ~ 5.5V 工作电 ...

  7. Arduino笔记实验(初级阶段)—火焰传感器+有源蜂鸣器实验

    Arduino笔记实验(初级阶段)-火焰传感器+有源蜂鸣器实验 文章目录 Arduino笔记实验(初级阶段)-火焰传感器+有源蜂鸣器实验 前言 一.电路图 二.火焰传感器(4引脚)-有源蜂鸣器 代码 ...

  8. Arduino笔记实验(初级阶段)—继电器模块

    Arduino笔记实验(初级阶段)-继电器模块 文章目录 Arduino笔记实验(初级阶段)-继电器模块 前言 一.电路图 二.继电器模块实验 代码 实验效果展示 三.继电器模块 实验总结 前言 自学 ...

  9. 笔记—R语言做矩阵散点图

    笔记-R语言做矩阵散点图 #install.packages("corrgram") #install.packages("GGally") install.p ...

最新文章

  1. cas无法使用_并发编程中cas的这三大问题你知道吗?
  2. 用java将excel数据导入txt
  3. android fragment 菜单栏,android UI:底部菜单栏的学习与制作——Fragment碎片一
  4. vue切换菜单时不需要页面刷新_antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作...
  5. Excel 宏代码实现按相同值分组设置背景颜色
  6. grafana + influxdb + telegraf , 构建性能监控平台
  7. System Toolkit for Mac(Mac系统维护工具)
  8. C2P工业云进销存管理有什么优势?
  9. 一款免费、炫酷的GUI:AWTK
  10. 基于VHDL利用PS2键盘控制的电子密码锁设计
  11. python 自动解4399数独游戏
  12. m4a转mp3方法,m4a转mp3步骤
  13. 2022,6G发展确已升温
  14. 云和恩墨大讲堂新春第一讲-Oracle安全特性之加密登陆
  15. 6374. 【NOIP2019模拟2019.10.04】结界[生与死的境界]
  16. 致大学生——成为博主半年了,谈谈博客对于就业和考研的重要性
  17. 厉害了!看嘴型竟然就能识别发音
  18. echarts X轴文字排列方式总结
  19. java-php-python-ssm猫咪伤患会诊复查医疗平台计算机毕业设计
  20. 网络安全与网站安全及计算机安全:如何使用Kali Linux进行MS08-067安全演练

热门文章

  1. 简单有趣的变形金刚网络(VIT) Vision Transformer(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑(网络结构详解+详细注释代码+核心思想讲解)——pytorch实现
  2. P22-c++自己设计一个队列
  3. 美服lol服务器位置,英雄联盟:LOL四大服务器王者常用位置分析,国服野爹盛行...
  4. 使用tinyxml读xml文件信息到结构体
  5. 研究生学术与职业素养讲座第1-10讲
  6. 邻接表实现Prim算法
  7. android和ios好用的功能分屏,iOS 15功能全面曝光,终于加入应用分屏?这回安卓系统领先了...
  8. Openvpn 分配固定IP
  9. 计算机符号化思维,浅谈符号化的数学思维
  10. 由SSL证书引发的微信公众平台token验证失败问题