找回密码
 立即注册

QQ登录

只需一步,快速开始

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

第31课 多块MAX7219点阵屏的使用


目标

多块MAX7219 8*8点阵屏的使用

实验材料

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

微信图片_20200704133827.png

内容

使用四块MAX7219 8*8点阵屏显示骰子点数5

接线方式

Arduino UNO     <------>   MAX7219 8*8点阵屏1(IN)
          5V             <------>            VCC
       GND            <------>            GND
         11              <------>             DIN
         9                <------>              CS
       13                <------>             CLK
MAX7219 8*8点阵屏1(OUT)    <------>    MAX7219 8*8点阵屏2(IN)
                          VCC                    <------>              VCC
                          GND                   <------>              GND
                         DOUT                  <------>              DIN
                           CS                      <------>                CS
                          CLK                     <------>                CLK
MAX7219 8*8点阵屏2(OUT)    <------>    MAX7219 8*8点阵屏3(IN)
                          VCC                    <------>              VCC
                         GND                    <------>              GND
                        DOUT                   <------>              DIN
                          CS                       <------>               CS
                         CLK                      <------>              CLK
MAX7219 8*8点阵屏3(OUT)    <------>    MAX7219 8*8点阵屏4(IN)
                        VCC                      <------>              VCC
                        GND                     <------>              GND
                       DOUT                    <------>              DIN
                         CS                        <------>               CS
                        CLK                       <------>              CLK

程序实现代码

  1. #include <SPI.h>
  2. #include <Adafruit_GFX.h>
  3. #include <Max72xxPanel.h>   //MAX7219点阵屏库文件
  4. Max72xxPanel myMatrix = Max72xxPanel(9,4,1);   //CS=9,水平点阵屏为4和竖直点阵屏为1
  5. uint8_t  LEDArray[8];
  6. const uint8_t A[8] PROGMEM ={0xc0,0xc0,0x00,0x1e,0x1e,0x1e,0x1e,0x00};
  7. const uint8_t B[8] PROGMEM ={0x00,0x1e,0x1e,0x1e,0x1e,0x00,0xc0,0xc0};
  8. const uint8_t C[8] PROGMEM ={0xc0,0xc0,0x00,0x1e,0x1e,0x1e,0x1e,0x00};
  9. const uint8_t D[8] PROGMEM ={0x00,0x1e,0x1e,0x1e,0x1e,0x00,0xc0,0xc0};
  10. void setup(){
  11. }
  12. void loop(){
  13.   myMatrix.setIntensity(20);   //设置MAX7219点阵屏亮度为20
  14.   myMatrix.setRotation(0,1);  //将MAX7219点阵屏屏幕序号0的角度旋转270度,根据实际情况调整
  15.   myMatrix.setRotation(1,3);   //将MAX7219点阵屏屏幕序号1的角度旋转90度,根据实际情况调整
  16.   memcpy_P (&LEDArray, &A, 8);   //数组变量A的图案显示
  17.   for(int index_i=0; index_i<8; index_i++)
  18.   {
  19.     for(int index_j=0*8; index_j<0*8+8; index_j++)
  20.     {
  21.       if((LEDArray[index_i]&0x01)>0)
  22.        myMatrix.drawPixel(index_j, 7-index_i,1);
  23.   else
  24.   myMatrix.drawPixel(index_j, 7-index_i,0);
  25.        LEDArray[index_i] = LEDArray[index_i]>>1;
  26.     }
  27.   }
  28.   myMatrix.write();
  29.   memcpy_P (&LEDArray, &B, 8);    //数组变量B的图案显示
  30.   for(int index_i=0; index_i<8; index_i++)
  31.   {
  32.     for(int index_j=1*8; index_j<1*8+8; index_j++)
  33.     {
  34.       if((LEDArray[index_i]&0x01)>0)
  35.        myMatrix.drawPixel(index_j, 7-index_i,1);
  36.   else
  37.   myMatrix.drawPixel(index_j, 7-index_i,0);
  38.        LEDArray[index_i] = LEDArray[index_i]>>1;
  39.     }
  40.   }
  41.   myMatrix.write();
  42.   memcpy_P (&LEDArray, &C, 8);   //数组变量C的图案显示
  43.   for(int index_i=0; index_i<8; index_i++)
  44.   {
  45.     for(int index_j=2*8; index_j<2*8+8; index_j++)
  46.     {
  47.       if((LEDArray[index_i]&0x01)>0)
  48.        myMatrix.drawPixel(index_j, 7-index_i,1);
  49.   else
  50.   myMatrix.drawPixel(index_j, 7-index_i,0);
  51.        LEDArray[index_i] = LEDArray[index_i]>>1;
  52.     }
  53.   }
  54.   myMatrix.write();
  55.   memcpy_P (&LEDArray, &D, 8);   //数组变量D的图案显示
  56.   for(int index_i=0; index_i<8; index_i++)
  57.   {
  58.     for(int index_j=3*8; index_j<3*8+8; index_j++)
  59.     {
  60.       if((LEDArray[index_i]&0x01)>0)
  61.        myMatrix.drawPixel(index_j, 7-index_i,1);
  62.   else
  63.   myMatrix.drawPixel(index_j, 7-index_i,0);
  64.        LEDArray[index_i] = LEDArray[index_i]>>1;
  65.     }
  66.   }
  67.   myMatrix.write();
  68. }
复制代码

显示结果

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

0 个回复

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