max7219相关介绍
max7219采用串行接口方式,只需要LOAD,DIN,CLK三个管脚便可实现数据传送。DIN管脚上的16位串行数据包不受LOAD状态的影响,在每个aCLK的上升沿被移入到内部16位移位寄存器,在LOAD的上升沿数据被锁存到数字或控制寄存器中
�一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。
max7219的相关功能特性:
1.10MHz连续串行口
2.独立的LED段控制
3.数字的译码与非译码选择
4.150μA的低功耗关闭模式
5.亮度的数字和模拟控制
6.高电压中断显示
7.共阴极LED显示驱动
8.24脚的 DIP和 SO 封装
数位数量:8
片段数量:7
封装 / 箱体: PDIP-24
工作电源电压:4 V to 5.5 V
最大电源电流:330 mA
最大功率耗散:1066 mW
高电平输出电流: 65 mA
最大工作温度:+
85 ℃
最小工作温度:-
40 ℃
封装: Tube
安装风格:Through Hole
max7219
max7219的管脚名称及功能
1 DIN串行数据输入端口。在时钟上升沿时数据被载入内部的16位寄存器。
2,3,5-8,10,11 DIG 0–DIG7八个数据驱动线路置显示器共阴极为低电平。关闭时7219此管脚输出高电平,7221呈现高阻抗。
4,9 GND地线
(4脚和9脚必须同时接地)
12 LOAD (MAX7219)载入数据。连续数据的后16位在LOAD端的上升沿时被锁定。
13 CLK时钟序列输入端。最大速率为 10MHz.在时钟的上升沿, 数据移入内部移位寄存器。下降沿时, 数据从DOUT端输出。对MAX7221来说,只有当cs端为低电平时时钟输入才有效。
14-17,20-23 SEG 7段和小数点驱动,为显示器提供电流。当一个段驱A–SEG
G, 动关闭时,7219的此端呈低电平.
18 SET通过一个电阻连接到VDD来提高段电流。
19 V+正极电压输入,+5V
24 DOUT串行数据输出端口,从DIN输入的数据在16.5个时钟周期后在此端有效。当使用多个MAX7219/MAX7221时用此端方便扩展。
8*8点阵屏
8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;要实现显示图形或字体,只需考虑其显示方式。通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。
利用max7219点阵模块实现符号显示
电路连接
[if !vml]
[endif]
单个连接电路图示意
Arduino Uno --- MAX7219
5V <---> VCC
GND <---> GND
12 <---> DIN
11 <---> CS
10 <---> CLK
多个连接的方式
程序及库文件
LedControl库使用说明
该库用于使用 MAX7219驱动的SPI总线8*8
LED显示屏及7段LED数码管。定义一个对象最多可以驱动8块8*8LED显示屏(每块64个LED总共512个)或8个7段数码管,需占用三个Arduino的IO口。如需驱动超过8个设备只能定义多个对象,但需要占用更多的IO口
把下载的库文件夹存放在Arduino 安装目录的libraries库文件夹
库函数:
LedControl(intdataPin,intclkPin,intcsPin,intnumDevices)
用途:初始化设备,设置DIN(dataPin)、CLK、CS的IO口及连接设备数量(既有多少块屏)并定义一个对象。参数:
dataPin
设置DIN口对应的Arduino上的IO口
clockPin
设置CLK口对应的Arduino上的IO口
csPin
设置CS口对应的Arduino上的IO口
numDevices
设置最大设备连接数(也就是8*8LED屏的个数),只能设置1-8,如果需要连接超过8个设备,则需要定义另一个对象并使用另外的IO口
代码部分
#include
int DIN
= 12;
intCS= 11;
int CLK
= 10;//定义8*8点阵屏的三个针脚
LedControl lc=LedControl(DIN,CLK,CS,4);//LEDControl库函数
void setup()
{
lc.shutdown(0,false); //启动时,MAX72XX处于省电模式
lc.setIntensity(0,8); //将亮度设置为最大值
lc.clearDisplay(0); //清除显示
}
void loop(){
byte smile[8]= {0x3C,0x42,0xA5,0x81,0xA5,0x99,0x42,0x3C};//笑脸
byte
neutral[8]= {0x3C,0x42,0xA5,0x81,0xBD,0x81,0x42,0x3C};//标准脸
printByte(eight);//显示8
delay(1000);//延时1秒
printByte(neutral);//显示标准脸
delay(1000);
}
//点阵显示函数,定义内容
void printByte(byte character [])
{
inti= 0;
for(i=0;i<8;i++)
{
lc.setRow(0,i,character[i]);
}//点阵输出函数
}
取字模软件的相关使用
取字模软件的主界面
打开编辑菜单按钮,可以调节显示字符的点阵的规模
选择手动输入待取模软件,然后输入想显示的字符
点击工具,输出代码,就可以在窗口输出代码,代表的就是要显示的字符
心得体会
经历了本学期的学习,我们基本掌握了如何使用arduino进行简单的逻辑程序运行。在实现8*8点阵显示字符实验时,细心摸索,从网上查找资料,结合自身掌握的知识实现从零开始的探索。
在探索的过程中,我们自然也经历了来自硬件,软件两方面的考验,操作手法的不规范,代码知识的欠缺,都给我们带来了莫大的困扰,但是我们想起老师那循循善诱的温和形象,就下定决心一定要完成任务。终于,在全组同学的合作下,我们守得云开见月明,顺利完成了实验。
我们总结了两条注意事项
① 接线的时候,注意方向,在IN的方向接线(输入)
② LED的方向也要注意,如果显示不正常,请转变下安插的方向。
最后,一切重在坚持,当你感觉走投无路,快要放弃时,要相信,成功就在前方。
网友评论