max7219使用方法
侧边栏壁纸
  • 累计撰写 192,421 篇文章
  • 累计收到 3 条评论

max7219使用方法

admin
2022-12-16 / 0 评论 / 0 阅读 / 正在检测是否收录...

MAX7219(MAX7221)是一种集成化的串行输入/输出共阴极显示驱动器。它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。

MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。 只有一个外部寄存器用来设置各个LED的段电流。 MAX7221与SPI™、 QSPI™以及 MICROWIRE™相兼容,同时它有限制回转电流的段驱动来减少EMI(电磁干扰)。 一个方便的四线串行接口可以联接所有通用的微处理器。

每个数据可以寻址在更新时不需要改写所有的显示。MAX7219/MAX7221同样允许用户对每一个数据选择编码或者不编码。 整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。 在应用时要求3V的操作电压或segment blinking

max7219基本工作原理及使用方法

MAX7219与8031单片机连接采用三线串行接口,典型应用电路如图1。

对于MAX7219,串行数据是以16位数据包的形式从Din脚串行输入,在CLK的每一个上升沿一位一位地送入芯片内部16位移位寄存器,而不管Lout脚的状态如何。Load脚必须在第16个CLK上升沿出现的同时或之后,但在下一个CLK上升沿之前变为高电平,否则移入的数据将丢失。

操作者只需编程发送16位数据包,就能简单地操作LED的位选以及段选,设置和改变MAX7219的工作模式。

16位数据包的数据格式如下:

其中:D7~D0:8位数据位,D7最高位,

D0为最底位;

D11~D8:4位地址位;

D15~D12:无关位,通常全取1。

MAX7219通过D11~D84位地址位译码,可寻址14个内部寄存器,分别是8个LED显示位寄存器,5个控制寄存器和1个空操作寄存器。LED显示寄存器由内部8×8静态RAM构成,操作者可直接对位寄存器进行个别寻址,以刷新和保持数据,只要V+超过2V(一般为+5V)。

控制寄存器包括:译码模式,显示亮度调节,扫描限制(选择扫描位数),关断和显示测试寄存器。

MAX7219的驱动程序首先必须对5个控制寄存器初始设置即初始化,各控制寄存器设置含义如下:

译码模式选择寄存器(地址=F9H);

共有4种译码模式供选择,当数据位全0时选择“非译码方式”。在此方式下,8个数据位分别一一对应7个段和小数点。通常选择此方式。

扫描限制寄存器:地址=FBH;用于设置显示的LED个数(1~8),当D2D1D0=111、D7D6D5D4D3无关时,可接8个LED管。

亮度调节寄存器:地址=FAH;

共有16级选择,用于LED显示亮度的强弱设置。

关断模式寄存器:地址=FCH;

有两种模式选择:一种是关断状态模式(D0=0);一种是正常操作状态(D0=1),通常选择正常操作状态。

显示测试寄存器:地址=FFH;有两种选择用于设置LED是测试状态还是正常操作状态:当在测试状态时(D0=1)各位全应亮,一般选择正常操作状态(D0=0)。

应用举例

结合典型应用电路,编程实现8位从左到右显示HELLOYOU。

初始化

在此需特别说明一点,由于MAX7219内部16位寄存器的位号与从Din发送来的串行数据的位号刚好相反,所以数据在发送以前必须进行颠倒,即D0变成D15,D1变成D14......

软件设计

在单片机RAM中建立一个LED显示缓冲区,显示缓冲区首地址为30H,末地址为45H,分别对应各显示位的位地址和段码,用程序控制数据以16位数据包的形式串行送入。

在程序设计时,只要将30H~45H单元的内容通过串行口发送即可。由于MAX7219能对LED显示位进行位寻址,所以发送数据时既可以只对需要改变的某一位或几位发送,也可以一次发送8组数据,对芯片所驱动的LED全部刷新,但不需要改变的位只是把原来的内容重发一次,这完全由程序控制,以下给出每次发送8组数据的程序。当串行口把8位数码串行移位输出后,TI置1,可把TI作为状态查询标志。

显示子程序清单:

DISP:MOV SCON,#00H;串行口方式0工作

CLR ES;禁止串行中断

DISP1:CLR P1.0;LOAD变低

MOV R0,30H;显示缓冲区首址

MOV R1,#0FH;设置8位显示

DISP2:MOV SBUF,@R0;串行输出

JNB TI,$;状态查询

INC R0

DJNZ R1,DISP2

SETB P1.0;LOAD变高

NOP;延时

NOP

CLR TI;请发送中断标志

RET;返回

0

评论 (0)

取消