max7219低功耗关闭_Arduino实践8x8点阵模块(MAX7219)

比眉伴天荒 2022-10-25 14:09 327阅读 0赞

be5e69b71baa9b39602d76ece979c38c.png

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个点阵!点阵显示时无闪烁!支持级联!

07a82ab630ad5a8319ce475282005a94.png f208b85c0942fc029c709393640962f8.png

3**)硬件准备**

Arduino *1

MAX7219 8X8点阵屏 *1

面包板跳线 *1 扎

4**)线路图**

照下面的原理图连接电路

c89c646f67106f9f5d12382d499feb5c.png

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++)

  1. Write\_Max7219(i,disp1\[j\]\[i-1\]);

delay(500);

}

}

void Write_Max7219_byte(char DATA)

{

  1. char i;
  2. digitalWrite(cs,0);
  3. for(i=8;i>=1;i--)
  4. \{
  5. digitalWrite(clk,0);
  6. if((DATA&0x80)>0)\{ digitalWrite(din,1);\}
  7. else\{ digitalWrite(din,0);\}
  8. //提取最高位给DIN端口
  9. DATA=DATA<<1;//左移一位
  10. digitalWrite(clk,1);
  11. \}

}

void Write_Max7219(char address,char dat)

{

  1. digitalWrite(cs,0);
  2. Write\_Max7219\_byte(address); //写入地址,即数码管编号
  3. Write\_Max7219\_byte(dat); //写入数据,即数码管显示数字
  4. 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**)取模软件介绍**

01fef2ac941c5defce5bd5389b796928.png

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

d79ed9f7577d78497d0a6fa9f6cf0c68.png

没有实验硬件的同学可以到下面的链接购买哟~

c207304e13caaa1641fc51a167f35320.png 49169ff400517bcc02f98f9b5dd4f013.png

发表评论

表情:
评论列表 (有 0 条评论,327人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MAX7219

    虽然单片机可以驱动液晶屏,但是在实际的应用领域,数码管仍然是主流的显示器件。 如果提到多位数码管显示,一般都要讲各个位轮流显示的动态显示技术。 这种方法虽然可以节省单片机

    相关 STM8S处理

    要低功耗设计,主要考虑几个方面: 1.外设的低功耗,不需要的外设模块,全部关闭。 2.GPIO的处理,不需要的IO最好做悬浮输入处理。 3.主时钟的处理,先降到最低