找回密码
 立即注册

QQ登录

只需一步,快速开始

本帖最后由 lxf 于 2020-8-17 13:32 编辑

第30课 MAX7219点阵屏的使用


目标

用MAX7219 8*8点阵显示模块展示跳动的爱心

实验材料

Arduino UNO开发板
MAX7219 8*8点阵屏
配套USB数据线
配套杜邦线若干
Arduino IDE软件

微信图片_20200704132820.png

内容

MAX7219点阵屏先显示一个大爱心的图案,1秒后,显示小爱心图案,依次循环。

接线图

图片2.png
(Arduino UNO开发板与MAX7219点阵屏的连接方式)

接线方式

Arduino UNO    <------>   MAX7219 8*8点阵屏模块
        VCC            <------>              5V
       GND            <------>            GND  
       DIN             <------>               11
        CS              <------>               9
       CLK              <------>              13

本次需要用到MAX7219 8*8点阵屏第三方库文件,文件名为“Adafruit_GFX_Library”和“Max72xxPanel”。
提取码:g9jm
下载后解压,把文件名为“Adafruit_GFX_Library”和“Max72xxPanel”的两个文件夹复制放到Arduino安装包的“libraries”文件夹里面。

程序实现代码

  1. #include <SPI.h>
  2. #include <Adafruit_GFX.h>
  3. #include <Max72xxPanel.h>   //MAX7219点阵屏库文件
  4. Max72xxPanel myMatrix = Max72xxPanel(9,1,1);   //CS=9,水平和竖直点阵屏都为1
  5. uint8_t  LEDArray[8];
  6. const uint8_t A[8] PROGMEM ={0x00,0x18,0x3c,0x7e,0xff,0xff,0x66,0x00};
  7. const uint8_t B[8] PROGMEM ={0x00,0x00,0x18,0x3c,0x7e,0x24,0x00,0x00};
  8. void setup(){
  9. }
  10. void loop(){
  11.   myMatrix.setIntensity(20);   //设置MAX7219点阵屏亮度为20
  12.   memcpy_P (&LEDArray, &A, 8);  //数组变量A的图案数组为显示大爱心
  13.   for(int index_i=0; index_i<8; index_i++)
  14.   {
  15.     for(int index_j=0*8; index_j<0*8+8; index_j++)
  16.     {
  17.       if((LEDArray[index_i]&0x01)>0)
  18.        myMatrix.drawPixel(index_j, 7-index_i,1);
  19.   else
  20.   myMatrix.drawPixel(index_j, 7-index_i,0);
  21.        LEDArray[index_i] = LEDArray[index_i]>>1;
  22.     }
  23.   }
  24.   myMatrix.write();
  25.   delay(1000);
  26.   memcpy_P (&LEDArray, &B, 8);  //数组变量B的图案数组为显示小爱心
  27.   for(int index_i=0; index_i<8; index_i++)
  28.   {
  29.     for(int index_j=0*8; index_j<0*8+8; index_j++)
  30.     {
  31.       if((LEDArray[index_i]&0x01)>0)
  32.        myMatrix.drawPixel(index_j, 7-index_i,1);
  33.   else
  34.   myMatrix.drawPixel(index_j, 7-index_i,0);
  35.        LEDArray[index_i] = LEDArray[index_i]>>1;
  36.     }
  37.   }
  38.   myMatrix.write();
  39.   delay(1000);
  40. }
复制代码

显示结果:大爱心和小爱心每隔1秒切换显示

微信图片_20200704133401.png
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册