NuMaker–PFM–M487 实现MAX7219显示模块驱动显示

NuMaker–PFM–M487 实现MAX7219显示模块驱动显示MAX7219 是一种集成化的串行输入 输出共阴极显示驱动器 其片内配有一个 B 型 BCD 编码器 多路扫描回路 段字驱动器 而且还有一个 8 8 的静态 RAM 用来存储数据

大家好,欢迎来到IT知识分享网。

MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,其片内配有一个B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储数据。有一个外部寄存器用来设置各个LED的段电流。同时它有限制回转电流的段驱动以减少EMI(电磁干扰)。

一个方便的四线串行接口可以联接所有通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219允许用户对每一个数据选择编码或者不编码。

芯片包含一个150μA的低功耗模式控制器,可进行模拟或数字式亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。

它只需3个GPIO口就可驱动8位数码管或8×8点阵模块,因此它相较于传统的并联式驱动基于硬件资源消耗少的特点。

本篇主要介绍以NuMaker–PFM–M487开发板来驱动MAX7219显示模块,并通过RT_Thread软件来实现。

1. 串行数码管显示模块

串行数码管显示模块的外观如图1所示,它具有输入端和输出端可多个模块级联起来使用,以显示更多位的数码值。

NuMaker--PFM--M487 实现MAX7219显示模块驱动显示

图1 串行数码管模块

串行数码管显示模块的电路原理图见图2所示,该模块采用5V电压来工作。

NuMaker--PFM--M487 实现MAX7219显示模块驱动显示

图2 原理图

在使用NuMaker–PFM–M487开发板驱动的情况下,其显示效果如图3所示。

NuMaker--PFM--M487 实现MAX7219显示模块驱动显示

图3 显示效果

该显示模块与开发板的连接关系为:

CLK– PA2

DIN– PA1

CS –PA0

MAX7219模拟串行数据发送的函数为:

复制

void Write_Max7219_byte(unsigned char DATA) { unsigned char i; rt_pin_write(CS_PIN, PIN_LOW); for(i=8;i>=1;i--) { rt_pin_write(CLK_PIN, PIN_LOW); if(DATA&0x80) rt_pin_write(DIN_PIN, PIN_HIGH); else rt_pin_write(DIN_PIN, PIN_LOW); DATA=DATA<<1; rt_pin_write(CLK_PIN, PIN_HIGH); } }


MAX7219向芯片寄存器写入数据的函数为:

复制

void Write_Max7219(char address,char dat) { rt_pin_write(CS_PIN, PIN_LOW); Write_Max7219_byte(address); Write_Max7219_byte(dat); rt_pin_write(CS_PIN, PIN_HIGH); }


MAX7219的初始化函数为:

复制

void Init_MAX7219(void) { Write_Max7219(0x09, 0xff); //译码方式:BCD码 Write_Max7219(0x0a, 0x03); //亮度 Write_Max7219(0x0b, 0x07); //扫描界限;4个数码管显示 Write_Max7219(0x0c, 0x01); //掉电模式:0,普通模式:1 Write_Max7219(0x0f, 0x01); //显示测试:1;测试结束,正常显示:0 }


实现显示功能的主程序为:

复制

void main(void) { rt_pin_mode(CLK_PIN , PIN_MODE_OUTPUT); rt_pin_mode(DIN_PIN, PIN_MODE_OUTPUT); rt_pin_mode(CS_PIN, PIN_MODE_OUTPUT); rt_thread_mdelay(50); Init_MAX7219(); rt_thread_mdelay(2000); Write_Max7219(0x0f, 0x00); Write_Max7219(1,8); Write_Max7219(2,7); Write_Max7219(3,6); Write_Max7219(4,5); Write_Max7219(5,4); Write_Max7219(6,3); Write_Max7219(7,2); Write_Max7219(8,1); while(1); }


经编译处理,其编译结果如图5所示。

NuMaker--PFM--M487 实现MAX7219显示模块驱动显示

由此可见,串行数码管显示模块的驱动是很容易实现的,也是十分方便。由于数码管基于亮度高的特点,故适于在工业现场来使用。

2. 串行点阵显示模块

串行点阵显示模块也是以MAX7219为控制芯片,在单级使用的情况下,一片MAX7219可控制一块8*8点阵的显示块,若采用级联的方式,则可驱动多个点阵块,以实现多个字符的同时显示,可达到点阵信息屏的显示效果。

该模块的电路原理图如图4所示,为节省空间,它是将MAX7219芯片置于点阵块的下方。

NuMaker--PFM--M487 实现MAX7219显示模块驱动显示

图4 模块电路图

点阵显示模块与开发板的连接关系为:

CLK– PA2

DIN– PA1

CS –PA0

在使用NuMaker–PFM–M487开发板驱动的情况下,其显示效果如图5所示。

NuMaker--PFM--M487 实现MAX7219显示模块驱动显示

图5 显示效果

相较于串行数码管显示模块,该显示模块所显示的信息量要更丰富,故需要为它配置一个显示字模数组,其结构及内容如下:

unsigned chardisp[38][8]={

{0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//0

{0x10,0x30,0x50,0x10,0x10,0x10,0x10,0x10},//1

{0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E}, //2

{0x8,0x14,0x22,0x3E,0x22,0x22,0x22,0x22},//A

{0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,0x0},//B

{0x3C,0x40,0x40,0x40,0x40,0x40,0x3C,0x0},//C

{0x8,0x7F,0x49,0x49,0x7F,0x8,0x8,0x8},//中

{0xFE,0xBA,0x92,0xBA,0x92,0x9A,0xBA,0xFE},//国

}

对于点阵显示模块的驱动,同样需要2个辅助函数Write_Max7219_byte()和Write_Max7219()的支持,其内容同前面的函数相一致,故从略。

但在MAX7219的初始化方面,由于2种功能模块有着较大的差异,故其初始化函数是不同的,其内容为:

复制

void Init_MAX7219(void) { Write_Max7219(0x0b, 0x07); Write_Max7219(0x0c, 0x01); Write_Max7219(0x0f, 0x00); }


实现图5显示效果的主程序为:

复制

void main(void) { uint32_t i,j; rt_pin_mode(CLK_PIN , PIN_MODE_OUTPUT); rt_pin_mode(DIN_PIN, PIN_MODE_OUTPUT); rt_pin_mode(CS_PIN, PIN_MODE_OUTPUT); Init_MAX7219(); while(1) { for(j=0;j<38;j++) { for(i=1;i<9;i++) Write_Max7219(i,disp[j][i-1]); rt_thread_mdelay(1000); } } }


其中,内层的循环是为了完成单个字符的显示,而外层的循环则是负责将字符库中的内容遍寻显示一轮。

在显示过程中,每显示完一个字符。

经编译下载,其显示如图6至图8所示。

NuMaker--PFM--M487 实现MAX7219显示模块驱动显示

图6 显示“0”

NuMaker--PFM--M487 实现MAX7219显示模块驱动显示

图7显示“1”

NuMaker--PFM--M487 实现MAX7219显示模块驱动显示

图8显示“2”

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/109291.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信