双轴摇杆-MAX7219-8x8点阵模块

Posted 村头陈师傅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双轴摇杆-MAX7219-8x8点阵模块相关的知识,希望对你有一定的参考价值。

双轴摇杆-MAX7219-8x8点阵模块

公众号:STCode

1)描述

本次实验利用XY双轴摇杆控制MAX7219点阵屏实现显示上下左右箭头以及心形图案。


2)硬件介绍

MAX7219-8*8点阵由64个发光二极管组成,按照传统的矩阵扫描方式,64个发光二极管至少需要16个IO口才能操作。但是此模块引入了MAX7219驱动芯片,它通过16位数据串行输入输出方式完成控制64个LED,全程仅需3个IO口。

MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。

一个方便的四线串行接口可以联接所有通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219同样允许用户对每一个数据选择编码或者不编码。

整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。

只需要3个IO口即可驱动1个点阵!点阵显示时无闪烁!支持级联!

①Max7219点阵屏

②摇杆模块(双轴按键摇杆)

双轴按键摇杆传感器模块由采用PS2摇杆电位器制作,具有(X,Y)2轴模拟输出,(Z)1路按钮数字输出。配合.传感器扩展板可以制作遥控器等互动作品。另外本产品为了让客户更加方便地配合.扩展板等标准接口,在设计上把X,Y,Z轴的电路都单独引出,用户可以使用3引脚的.专用线真接插到扩展板上进行使用。


3)硬件准备

Arduino *1

MAX7219 8X8点阵屏 *1

摇杆模块 *1

面包板跳线 *1 扎


4)线路

MAX7219与Arduino

VCC 接 +5V

GND 接 GND

DIN 接 pin5

CS 接 pin4

CLK 接 pin3

摇杆模块与Arduino

+5V 接+5V

GND 接GND

X 接A0

Y 接A1

SW 接2


5)参考源程序

#include <LedControl.h>       //引入库文件
LedControl max7219_1=LedControl(5,3,4,1);//DIN---5,CLK---3,CS---4,numDevices=1
byte up[8]={0x18,0x3C,0x7E,0xFF,0x18,0x18,0x18,0x18};     //向上箭头
byte down[8]={0x18,0x18,0x18,0x18,0xFF,0x7E,0x3C,0x18};   //向下箭头     
byte left[8]={0x10,0x30,0x70,0xFF,0xFF,0x70,0x30,0x10};   //向左箭头
byte right[8]={0x8,0xC,0xE,0xFF,0xFF,0xE,0xC,0x8};         //向右箭头
byte heart1[8]={0x0,0x66,0xFF,0xFF,0x7E,0x3C,0x18,0x0};    //心形1
byte heart2[8]={0x0,0x66,0x99,0x81,0x42,0x24,0x18,0x0};    //心形2
int button = 2;                                          //按键接引脚2
int x;            //定义变量x,用于读取x轴数值
int y;            //定义变量y,用于读取y轴数值
int button_state;  //定义按键状态变量
void display(byte icon[])        //点阵屏显示子函数
{
   for(int i=0;i<8;i++)           //循环扫描8行
   {
      max7219_1.setRow(0,i,icon[i]);  //依次扫描
   }
}
void setup()
{
   Serial.begin(9600);           //串口初始化
   pinMode(button,INPUT_PULLUP); //设置按键引脚为上拉电阻输入模式
   max7219_1.shutdown(0,false);  //关闭点阵屏
   max7219_1.setIntensity(0,8);  //设置亮度
   max7219_1.clearDisplay(0);    //清屏
}

void loop()
{  
   x = analogRead(A0);  //读取x轴数值
   y = analogRead(A1);  //读取y轴数值
   Serial.print("X:");  //串口打印数值
   Serial.print(x);
   Serial.print("-----");
   Serial.print("Y:");
   Serial.println(y);
   if(digitalRead(button) == HIGH)     //如果按键没有按下
   {
      if(x<100 && y>300 && y<800)    //在一定范围显示向上箭头
      {
         display(up);
      }
      else if(x>1000 && y>300 && y<800)//在一定范围显示向下箭头
      {
         display(down);
      }
      
      else if(x>300 && x<800 && y>1000)//在一定范围显示向左箭头
      {
         display(left);
      }
      else if(x>300 && x<800 && y<100)//在一定范围显示向右箭头
      {
         display(right);
      }
      else                            //否则显示心形2
      {
         display(heart2);
      }
   }
   else
   {
      display(heart1);              //否则显示心形1
   }
}

下载完程序,摇动摇杆和按压摇杆上的按键就可以看到显示效果啦~


6)取模软件介绍

这款取模软件可以将想要显示的数字或者字母或者文字直接输入,之后可以设置返回16进制数据,将16进制数据复制粘贴到代码里,替换掉原本的显示数据,就可以啦!

注意需要在设置里设置显示方式为单行,提取方式为逐行,提取格式为C51格式。

以上是关于双轴摇杆-MAX7219-8x8点阵模块的主要内容,如果未能解决你的问题,请参考以下文章

双轴摇杆-MAX7219-8x8点阵模块

双轴摇杆-MAX7219-8x8点阵模块

Arduino LED Matrix

「雕爷学编程」Arduino动手做(38)——joystick双轴摇杆模块

单片机如何控制摇杆

MicroPython:基于TPYBoard集合MAX7219点阵模块制作表白女神神器