双轴摇杆-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点阵模块的主要内容,如果未能解决你的问题,请参考以下文章