本篇文章由 VeriMake 旧版论坛中备份出的原帖的 Markdown 源码生成
原帖标题为: LED 点阵屏|显示设定字符
原帖作者为:hi(旧版论坛 id = 181)
原帖由作者初次发表于 2021-03-30 13:40:32
组装led点阵屏并显示设定字符
本次实验是通过nanoC的控制实现在点阵屏上显示特定的字符,这个字符我们可以自己设置,以数组的形式放在代码里,本次实验显示的是一个音符符号。
认识SPI接口:SPI(串行外设接口),有四条线,片选、时钟、两个数据线,这个接口可以使连接两个及以上的点阵屏模块时接线更简便。
准备材料:
NanoC 1,数据线 1,400孔面包板 1,MAX7219驱动的led点阵屏模块 1,公对公杜邦线 *5。
可直接购买如图所示的MAX7219驱动的led点阵屏模块
点阵屏和底下的max7219芯片可拆卸
接线图
点阵屏如图时五个引脚从左到右依次是CLK,CS,DIN,GND,VCC。
CLK—13
CS—10
DIN—11
GND—GND
VCC—5V
代码
#include<SPI.h>
byte symbol[8]={ B01100000, //定义图像
B11100000,
B11100000,
B01111111,
B00000111,
B00000110,
B00001100,
B00001000,
};
//定义max7219寄存器
const byte NOOP=0x0;
const byte DECODEMODE=0x9;
const byte INTENSITY=0xA;
const byte SCANLIMIT=0xB;
const byte SHUTDOWN=0xC;
const byte DISPLAYTEST=0xF;
void max7219(byte reg,byte data){ //设置max7219寄存器数据的自定义函数
digitalWrite(SS,LOW);
SPI.transfer(reg);
SPI.transfer(data);
digitalWrite(SS,HIGH);
}
void setup() {
pinMode(SS,OUTPUT); //SS设为输出
digitalWrite(SS,HIGH); //设为高电平
SPI.begin(); //启动spi联机
max7219 (SCANLIMIT,7); //设置扫描八行
max7219 (DECODEMODE,0); //不使用bcd译码
max7219 (INTENSITY,8); //设置成中等亮度
max7219 (DISPLAYTEST,0); //关闭显示器测试
max7219 (SHUTDOWN,1); //关闭停机模式
for(byte i=0;i<8;i++) //清除显示画面
{
max7219(i+1,0);
}
}
void loop() {
for(byte i=0;i<8;i++){
max7219(i+1,symbol[i]); //显示自定义图像1
}
}
运行结果
点阵屏上显示出一个音符符号。可以在网上搜索点阵屏取模软件,选择合适的进行下载,在这个软件中输入你想要显示的图案或字符,它能够自动生成对用的程序,替换掉定义图像那部分的代码就能显示出你的自定义图像。