max7219低功耗关闭_Arduino实践8x8点阵模块(MAX7219)
1)描述
8*8点阵由64个发光二极管组成,按照传统的矩阵扫描方式,64个发光二极管至少需要16个IO口才能操作。但是此模块引入了MAX7219驱动芯片,它通过16位数据串行输入输出方式完成控制64个LED,全程仅需3个IO口。
2**)硬件介绍**
MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。
一个方便的四线串行接口可以联接所有通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219同样允许用户对每一个数据选择编码或者不编码。
整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。
只需要3个IO口即可驱动1个点阵!点阵显示时无闪烁!支持级联!
3**)硬件准备**
Arduino *1
MAX7219 8X8点阵屏 *1
面包板跳线 *1 扎
4**)线路图**
照下面的原理图连接电路
VCC 接 +5V
GND 接 GND
DIN 接 pin5
CS 接 pin4
CLK 接 pin3
5**)参考源程序**
int clk =3; //引脚
int cs=4;
int din=5;
unsigned char disp1[12][8]=
{ //编码
{ 0x0,0x1E,0x20,0x20,0x3E,0x2,0x2,0x3C},//S
{ 0x0,0x3E,0x8,0x8,0x8,0x8,0x8,0x8},//T
{ 0x3C,0x40,0x40,0x40,0x40,0x40,0x3C,0x0},//C
{ 0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//O
{ 0x7C,0x42,0x42,0x42,0x42,0x42,0x7C,0x0},//D
{ 0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x7C},//E
{ 0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,0x0},//5
{ 0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E},//2
{ 0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//0
{ 0x5F,0xE4,0x44,0x64,0xC4,0x44,0xCC,0x44},//打
{ 0xFE,0x10,0x10,0x10,0x10,0x10,0x11,0xFF},//工
{ 0x10,0x10,0x10,0x10,0x10,0x28,0x44,0x83}//人
};
void setup()
{ //设置引脚模式
pinMode(cs,OUTPUT);
pinMode(clk,OUTPUT);
pinMode(din,OUTPUT);
Init_MAX7219();
}
void loop(){
char i,j;
//Write_Max7219(0x0f, 0x00);
//Delay_xms(500);
for(j=0;j<12;j++) //for循环嵌套实现字符显示
{
for(i=1;i<9;i++)
Write\_Max7219(i,disp1\[j\]\[i-1\]);
delay(500);
}
}
void Write_Max7219_byte(char DATA)
{
char i;
digitalWrite(cs,0);
for(i=8;i>=1;i--)
\{
digitalWrite(clk,0);
if((DATA&0x80)>0)\{ digitalWrite(din,1);\}
else\{ digitalWrite(din,0);\}
//提取最高位给DIN端口
DATA=DATA<<1;//左移一位
digitalWrite(clk,1);
\}
}
void Write_Max7219(char address,char dat)
{
digitalWrite(cs,0);
Write\_Max7219\_byte(address); //写入地址,即数码管编号
Write\_Max7219\_byte(dat); //写入数据,即数码管显示数字
digitalWrite(cs,1);
}
void Init_MAX7219(void)
{
Write_Max7219(0x09, 0x00);//译码方式:BCD码
Write_Max7219(0x0a, 0x01);//亮度
Write_Max7219(0x0b, 0x07); //扫描界限;8个数码管显示
Write_Max7219(0x0c, 0x01); //掉电模式:0,普通模式:1
Write_Max7219(0x0f, 0x00);
delay(500); //显示测试:1;测试结束,正常显示:0
}
下载完程序,就可以看到显示效果啦~
6**)取模软件介绍**
这款取模软件可以将想要显示的数字或者字母或者文字直接输入,之后可以设置返回16进制数据,将16进制数据复制粘贴到代码里,替换掉原本的显示数据,就可以啦!
没有实验硬件的同学可以到下面的链接购买哟~
还没有评论,来说两句吧...