max7219使用方法

电子常识

2585人已加入

描述

  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;返回


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分