max7219驱动8个数码管代码及电路图
max7219资料及电路图
MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。
该芯片具有10MHz传输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置所有LED的段电流。
它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX7219的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位。
此外它还支持多片7219串联方式,这样MCU就可以通过3根线(即串行数据线、串行时钟线和芯片选通线)控制更多的数码管显示。
MAX7219的外部引脚分配如图1所示及内部结构如图2所示。
图1 MAX7219的外部引脚分配图2 MAX7219的内部引脚分配各引脚的功能为:DIN:串行数据输入端DOUT:串行数据输出端,用于级连扩展LOAD:装载数据输入CLK:串行时钟输入DIG0~DIG7:8位LED位选线,从共阴极LED中吸入电流SEG A~SEG G DP 7段驱动和小数点驱动ISET:通过一个10k电阻和Vcc相连,设置段电流MAX7219有下列几组寄存器:(如图3)MAX7219内部的寄存器如图3,主要有:译码控制寄存器、亮度控制寄存器、扫描界限寄存器、关断模式寄存器、测试控制寄存器。
编程时只有正确操作这些寄存器,MAX7219才可工作。
图 3 MAX7219内部的相关寄存器分别介绍如下:(1)译码控制寄存器(X9H)如图4所示,MAX7219有两种译码方式:B译码方式和不译码方式。
当选择不译码时,8个数据为分别一一对应7个段和小数点位;B译码方式是BCD译码,直接送数据就可以显示。
实际应用中可以按位设置选择B译码或是不译码方式。
图4 MAX7219的译码控制寄存器(2)扫描界限寄存器(XBH)如图5所示,此寄存器用于设置显示的LED的个数(1~8),比如当设置为0xX4时,LED 0~5显示。
MAX7219
多功能LED译码显示驱动IC PS7219 1 引言PS7219是由力源公司自行研制、开发的一款新型多功能8位LED显示驱动IC。
接口采用三线SPI方式,用户只需简单修改内部相关的控制或数字RAM,便可很容易地实现多位LED显示。
在性能上PS7219与MAXIM 公司的MAX7219完全兼容,并增加了位闪等功能。
PS7219具有多个级联特性,为大屏幕LED显示提供了方便。
在理论上,只需三根用户I/O口控制线,便可以实现无穷多的LED级联显示。
在实际应用中,已实现了149片PS7219级联,可以控制1192位LED 显示。
2 PS7219特点与引脚说明PS7219的特点:★ 串行接口(16位控制字);★ 8位共阴级LED显示驱动;★ 显示位数1~8,可数字调节;★ 按位进行BCD译码/不译码数字制;★ 16级亮度数字控制;★ 上电LED全熄;★ 提供位闪功能;★ 多个PS7219级联可实现任意多的LED显示;★ 宽24脚双列直插模块封装。
PS7219引脚图如图1所示。
引脚功能说明见表1。
3 PS7219内部结构如图2 所示,PS7219由六部分组成。
图2 PS7219内部组成框图图1 PS7219引脚排列3.1 串行输入缓冲部分主要功能是与外部控制信号接口,将控制命令串行读入,并进行串并转换,供控制器读取。
3.2 控制器是整个IC的核心部分。
它先将输入缓冲部分的控制字读入处理,根据其地址值送到相应的控制RAM或数字RAM,同时将数据送入串行同步输出部分,以便在下一个控制字输入周期,将其串行输出。
3.3 控制RAM数据RAM这两部分一起控制LED译码显示部分,实现不同功能及字符的显示。
控制RAM包括:空操作寄存器,译码模式控制寄存器,亮度控制寄存器,掉电控制寄存器,闪烁控制寄存器,测试控制寄存器和扫描界线寄存器。
数据RAM包括:数据1—8寄存器。
3.4 LED译码显示根据控制RAM和数据RAM的不同值,来实现相应的显示功能。
max7219使用详解
Max7219驱动程序一般的MCU因IO脚驱动能力不够,再加之MCU IO口资源有限,产品开发中通常是通过专门的驱动IC来驱动数码管。
7.1 学会看DatasheetMAX7219就是一款可以同时驱动8个数码管的IC。
下图是其引脚图及典型应用电路:我们的CPU只须三根线就可以控制MAX7219,这三根线是:DIN(第一脚),CS(第12脚),CLK(第13脚)。
DIN是数据输入脚,我们要显示的数据就是通过这根线发送到MAX7219的;CS是片选脚,MCU通过把该脚电平拉低来选中MAX7219,或者说MAX7219通过判断该引脚是否为低电平来使能该芯片。
CLK是时钟引脚,该时钟频率是MCU给到MAX7219的,MCU与7219之间的通信频率就根据该信号做基准。
7.2 MAX7219数据格式我们要让8个数码管显示"12345678",这个过程是怎么实现的呢?首先,要搞清楚MAX7219的数据格式,看图:MAX7219是以16位数据接收和发送的,也就是MCU传给MAX7219的数据必须是16位。
下面分析这16位数据格式:D15~D12为X:表示可以为任意值,因为这四位MAX7219目前还用不到。
D11~D8为ADDRESS:表示MAX7219的地址。
D7~D0为DATA,并且位7为高位(最先发送),位0位低位(最后发送)。
也就是当MCU向MAX7219发送一个16位数据时,其中的D11~D8表示选择MAX7219哪个地址,即数据D7~D0是送到该地址的。
7.3 地址译码MAX7219可以挂8个数码管,MCU是怎么把数据显示到指定的数码管的呢?这就要理解MAX7219的地址译码原理。
下图为MAX7219的地址映射图:D15~12以X表示,代表可为0,也可为1。
Digit0~7对应到8个数码管的地址。
Decode Mode:解码模式寄存器,其地址用16进制表示为0x09;Intensity:亮度调节寄存器,其地址用16进制表示为0x0A;Scan Limit:扫描范围寄存器,其地址用16进制表示为0x0B;Shutdown:省电模式,其地址用16进制表示为0x0C;Display Test:测试寄存器,其地址用16进制表示为0x0F;如果,我们要让第一个数码管显示,那么我们这里送到MAX7219的16位数据中的D11~8应该为0001。
MAX7219应用电路
MAX7219的PROTEUS仿真MAX7219是美国MAXIM(美信)公司生产的串行输入/输出共阴极显示驱动器。
它采用了3线串行接口,传送速率达10M数据,能驱动8位七段数字型LED或条形显示器或64只独立的LED。
MAX7219内置BCD码译码器、多路扫描电路、段和数字驱动器和存储每一位的8*8静态RAM。
能方便的用模拟或数字方法控制段电流的大小,改变显示器的数量;能进入低功耗的关断模式(仅消耗150uA电流,数据保留);能方便地进行级联。
可广泛用于条形图显示、七段显示、工业控制、仪器仪表面板等领域。
而且其最重要的一点是,每个显示位都能个别寻址和刷新,而不需要重写其他的显示位,这使得软件编程十分简单且灵活。
MAX719后缀表示其封装方式和工作温度,如表所示:一. MAX7219的结构和功能1.引脚说明MAX7219的引脚排列如图所示,各引脚功能叙述如下:(1)脚:DIN,串行数据输入。
在CLK的上升沿到来时,数据被移入到内部的16位移位寄存器中。
(2)、(3)、(5)~(8)、(10)、(11)脚:DIG0—DIG7,输入。
8位数字位位选线,从共阴极显示器吸收电流。
(4)、(9)脚:GND,地。
两个引脚必须连接在一起。
(12)脚:LOAD,数据装载输入端。
在LOAD上升沿,移位寄存器接受的数据被锁存。
(13)脚:CLK,时钟输入端,最高时钟频率10MHz。
在CLK的上升沿,数据被移入到内部的16位移位寄存器中。
在CLK的下降沿,数据从DOUT脚输出。
(14)~(15)、(20)~(23)脚:输出。
七段驱动器和小数点驱动器。
它供给显示器电流。
(18)脚:ISET,电流调节端。
通过一个电阻和VCC相连,来调节最大段电流。
(19)脚:VCC。
电源输入端。
(24)脚:DOUT。
串行数据输出。
输入到DIN的数据在16.5各时钟周期后,在DOUT端有效。
该脚常用于几个MAX7219的级联。
2.串行数据传送的说明MAX7219采用串行寻址方式,在传送的串行数据中包含内部RAM的地址。
MAX7219在单片机系统显示电路中的应用
摘要:介绍8位串行LED显示驱动 ̄MAX7219的特性,并给出了单片机系统中MAX7219与MCS--51的硬件接口设计,以及相应的软件流程图和编程实现。
关键词:MAX721;单片机;显示电路单片机系统通常需要有LED对系统的状态进行观测,而很多工业控制用单片机FIMCS51系列本身并无显示接口部分,需要外接显示的译码驱动电路。
在MCS51单片机的控制系统中,采用MAxIM公司的MAX7219构成显示接口电路,仅需使用单片机3个引脚,即可实现对8位LED数码管的显示控制和驱动,线路简单,控制方便。
1MAx7219与单片机的连接MAX7219与MCS一51单片机连接时可根据具体的系统要求和系统资源占用情况选用2种驱动方式:串行口移位驱动MAX7219或I/0口模拟三线协议时序驱动MAX7219。
通常单片机系统的串口要用作其他用途,比如和上位机联机通信等。
故本系统利用单片机的I/O口来模拟MAX7219的时序,应用电路如图1所示。
其中,P2.0作串行数据输出,连接 ̄IDIN端,P2.1和P2.2连扫描电路选通某字时,相引脚DIG×为低电平。
显示接至CLK和LOAD,通过程序分别模拟MAX7219的时钟数据串行输入MAX7219,移位存入数字寄存器,片内多脉CLK及数据加载LOAD信号。
ISET管脚接l0kQ电阻路扫描电路顺序扫描,分时选通各字,被选通字的引脚用于限定峰值段电流。
置为低电平,LED发光显示数字,未选通的字引脚保持本系统的设计中,只需要5个LED,所以DIG5~DIG7高电平。
未用悬空。
显示电路中,所有LED显示器的同名段(a~f,系统设计中,应用MAX7219芯片时需要注意如下dp)连接在一起并与MAX7219的同名段引脚(SA~SG,几个关键问题:SDP)H连,各LED显示器的共阴极分别与MAX721的相(1)3根信号线。
应字引脚(DIG0一DIG4)相连,以实现位选,当MAX7219在强干扰环境中,如大功率电机的启停或高压发生过程中,干扰源可能通过供电电源或3根信号线串入显示电路,造成显示器的不稳定,从而出现段闪烁、显示不全、甚至全暗或全亮的现象。
单片机时钟设计MAX7219驱动数码管
单片机时钟设计MAX7219驱动数码管#include#define uchar unsigned char#define uint unsigned intsbit DIN=P0^1; //"显示串行数据输入端"sbit LOAD=P0^2; //"显示数据锁存端"sbit CLK=P0^3; //"显示时钟输入端"#define DecodeMode 0x09 //"译码模式"#define Intensity 0x0a //"亮度"#define ScanLimit 0x0b //"扫描界限"#define ShutDown 0x0c //"掉电模式"#define DisplayTest 0x0f //"显示测试"uchar code seg_data[]={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B}; //"0,1,2,3,4,5,6,7,8,9" uchar disp_buf[5];uchar code bit_tab[]={0x01,0x02,0x03,0x04};uchar hour=12,min=0,sec=0,count=0;bit flag;void delay (uint a) //" 毫秒延时函数"{uint i;while( --a != 0){for(i = 0; i < 110; i++);}}void write_max7219_byte(uchar temp){uchar i;for(i=0;i<8;i++){CLK=0;DIN=(bit)(temp&0x80);temp<<=1;CLK=1;}}void write_max7219(uchar address,uint dat){LOAD=0;write_max7219_byte(address);write_max7219_byte(dat);LOAD=1;}void Init_max7219 (void){write_max7219(ScanLimit,0x07); //*"设置扫描界限"*/write_max7219(DecodeMode,0xff); //*"设置译码模式"*/ write_max7219(Intensity,0x04); //*"设置亮度"*/write_max7219(ShutDown,0x01); //*"设置电源工作模式"*/ write_max7219(DisplayTest,0x01);delay(5);write_max7219(DisplayTest,0x00);}void conv(uchar in1,in2){disp_buf[0]=in1/10;disp_buf[1]=in1%10;disp_buf[2]=in2/10;if(flag==0)disp_buf[3]=(in2%10)|0x80;elsedisp_buf[3]=in2%10;}void display( ){write_max7219(bit_tab[0],disp_buf[0]); write_max7219(bit_tab[1],disp_buf[1]); write_max7219(bit_tab[2],disp_buf[2]); write_max7219(bit_tab[3],disp_buf[3]); }void init(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==20){count=0;flag=~flag;sec++;if(sec==60) {sec=0;min++;if(min==60) {min=0;hour++;if(hour==24) {hour=0;min=0;sec=0;}}}}}void main() {init();Init_max7219 ( ); while(1){conv(hour,min); display( );}}。
LED显示驱动芯片Max7221-7219
串行接口8位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,可以查阅MAX6951数据资料。
二、应用条线图显示仪表面板工业控制LED矩阵显示三、管脚配置四、功能特点●10MHz连续串行口●独立的LED段控制●数字的译码与非译码选择●150μA的低功耗关闭模式●亮度的数字和模拟控制●高电压中断显示●共阴极LED显示驱动●限制回转电流的段驱动来减少EMI(MAX7221)●SPI, QSPI, MICROWIRE串行接口(MAX7221)●24脚的DIP和SO封装八、功能图表九、时序图十、详细描述(一)MAX7219和MAX7221的不同之处MAX7219和MAX7221是相同的除了以下两点:(1):MAX7219的段驱动有回流限制可以减少EMI;(2):MAX7219的串行口和SPI完全兼容。
(二)串行地址格式对MAX7219来说,串行数据在DIN输入16位数据包,无论LOAD端处于何种状态,在时钟的上升沿数据均移入到内部16位移位寄存器。
MAX7219驱动单个8X8点阵LED模块
MAX7219驱动单个88点阵LED模块模块介绍MAX7219 是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。
其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。
只有一个外部寄存器用来设置各个LED的段电流。
一个方便的四线串行接口可以联接通用的微处理器。
每个数据可以寻址在更新时不需要改写所有的显示。
MAX7219同样允许用户对每一个数据选择编码或者不编码。
整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。
只需要3个IO口即可驱动1个点阵!点阵显示时无闪烁!支持级联!模块参数:1.单个模块可以驱动一个8*8共阴点阵2.模块工作电压:5V3.模块尺寸:长3.2厘米X宽3.2厘米X高1.3厘米4.带4个固定螺丝孔,孔径3mm5.模块带输入输出接口,支持多个模块级联接线说明:1.模块左边为输入端口,右边为输出端口。
2.控制单个模块时,只需要将输入端口接到CPU3.多个模块级联时,第1个模块的输入端接CPU,输出端接第2个模块的输入端,第2个模块的输出端接第3个模块的输入端,以此类推...器件列表◆Keywish Arduino Uno R3 主板*1◆USB 接口线*2◆MAX7219显示驱动器*1◆8位数字的7段数字LED显示*1◆跳线*4接线Arduino MAX7219显示驱动器VCC VCCGND GND5 CLK6 CS7 DIN程序#include "LedControl.h"int DIN =7;int CS =6;int CLK =5;byte e[8]={0x7C,0x7C,0x60,0x7C,0x7C,0x60,0x7C,0x7C};byte d[8]={0x78,0x7C,0x66,0x66,0x66,0x66,0x7C,0x78};byte u[8]={0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x7E};byte c[8]={0x7E,0x7E,0x60,0x60,0x60,0x60,0x7E,0x7E};byte eight[8]={0x7E,0x7E,0x66,0x7E,0x7E,0x66,0x7E,0x7E};byte s[8]={0x7E,0x7C,0x60,0x7C,0x3E,0x06,0x3E,0x7E};byte dot[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18};byte o[8]={0x7E,0x7E,0x66,0x66,0x66,0x66,0x7E,0x7E};byte m[8]={0xE7,0xFF,0xFF,0xDB,0xDB,0xDB,0xC3,0xC3};LedControl lc=LedControl(DIN,CLK,CS,0);void setup(){lc.shutdown(0,false);//The MAX72XX is in power-saving mode on startup lc.setIntensity(0,15);// Set the brightness to maximum valuelc.clearDisplay(0);// and clear the display}void loop(){byte smile[8]={0x3C,0x42,0xA5,0x81,0xA5,0x99,0x42,0x3C};byte neutral[8]={0x3C,0x42,0xA5,0x81,0xBD,0x81,0x42,0x3C};byte frown[8]={0x3C,0x42,0xA5,0x81,0x99,0xA5,0x42,0x3C};printByte(smile);delay(1000);printByte(neutral);delay(1000);printByte(frown);delay(1000);printEduc8s();lc.clearDisplay(0);delay(1000);}void printEduc8s(){printByte(e);delay(1000);printByte(d);delay(1000);printByte(u);delay(1000);printByte(c);delay(1000);printByte(eight);delay(1000);printByte(s);delay(1000);printByte(dot);delay(1000);printByte(c);delay(1000);printByte(o);delay(1000);printByte(m);delay(1000);}void printByte(byte character []) {int i =0;for(i=0;i<8;i++){lc.setRow(0,i,character[i]); }}实验结果。
max7219驱动数码管程序(51单片机+STM32 MAX7219数码管程序案例)
SPI1_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB; //高位MSB在先
SPI1_InitStructure.SPI_CPOL = SPI_CPOL_High; //选择了串行时钟的稳态,时钟悬空高
*功能:STM32_SPI1硬件配置初始化
*入口参数:无
*出口参数:无
*说明:STM32_SPI1硬件配置初始化,使用3V3
****************************************************************************/
void SPI1_Init(void)
SPI1_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//数据捕获于第二个时钟沿
SPI1_InitStructure.SPI_NSS = SPI_NSS_Soft;CPolynomial = 7;//CRC值计算的多项式
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOA,GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//SPI1相关引脚
max7219使用详解介绍
D15~12 以 X 表示,代表可为 0,也可为 1。 Digit0~7 对应到 8 个数码管的地址。 Decode Mode:解码模式寄存器,其地址用 16 迚制表示为 0x09; Intensity:亮度调节寄存器,其地址用 16 迚制表示为 0x0A; Scan Limit:扫描范围寄存器,其地址用 16 迚制表示为 0x0B; Shutdown:省电模式,其地址用 16 迚制表示为 0x0C; Display Test:测试寄存器,其地址用 16 迚制表示为 0x0F;
这个图由三部分组成:
第一部分:是要显示的数据 第二部分:是要发送的数据 D7~D0 第三部分:是数码管的八个段,分别用 DP*,A,B,C,D,E,F,G(DP*表示小数点)
D7 来控制小数点的显示 在弄清这个图之前,我们有必要了解数码管的构造。 下面是数码管的构造图:
数码管有八个段(DP,A,B,C,D,E,F,G)每个段都有一个电路来驱动它, 当你要显示"0",就让 A,B,C,D,E,F 亮,让 G 灭。 当你要显示"1",就让 B,C 亮,让 A,D,E,F,G 灭。 其他的就丌用多说了。 我们再回过头去看 Code B Font 图, 当我们想让数码管显示"0",就向数据位 D3~D0 赋值"0000",那么 MAX7219 就会让 A,B,C,D,E NhomakorabeaF 亮,
max7129 使用方法
(一)、MAX7219 MAX7219是一种串入、并出的共阴极LED数码管显示驱动器,每片可驱动8位LED数码管显示,与单片机的接口只需3根线,内带BCD译码器,及显示测试、移位、锁存器等,输出电流达40mA,外围只需一只亮度调整电阻。
MAX7219引脚图1、引脚功能说明DIN:串行数据输入端,CLK的上升沿时数据被载入内部16位移位寄存器中CLK:串行时钟输入端,最高工作频率可达10MHz LOAD:片选端,低电平接收DIN端的数据,高电平时数据被所存DIG0~7:LED的位控制端A~DP:LED 的端控制端DOUT:串行数据输出端,用于芯片的级联ISET:硬件亮度调整端,在该引脚与VCC之间跨接一个电阻,LED的亮度即可通过该电阻来调节,流过LED的段驱动平均电流为流过此电阻电流的100倍,此电阻值范围为:10~80K之间。
2、内部寄存器说明A、译码方式选择寄存器地址:09H 赋值:FFH 表示使用MAX7219内部的BCD译码器00H 表示不使用MAX7219内部的BCD译码器B、亮度调节寄存器地址:0AH 赋值:00H~0FH 可改变MAX7219所驱动的LED的亮度,其变化范围在1/32~31/32之间C、扫描位数设定寄存器地址:0BH 赋值:00H 所有位不显示01H~07H 依次对应于1~8位及前面位全部显示(即需显示的位应为“1”)D、待机模式开关寄存器地址:0CH 赋值:00H LED全灭01H LED正常显示E、显示器测试寄存器地址:0FH 赋值:00H LED为正常显示状态01H LED测试状态,即LED全亮F、8位LED显示数据寄存器地址:01H~08H 对这些寄存器赋值(即需显示的内容),就会在对应的1~8位LED数码管上显示出来3、使用注意事项由于电源中杂波或附近的电磁等干扰信号,使MAX7219在上电后不显示或乱显示;为了消除这种现象应在MAX7219的VCC端与地之间接一只104pf的瓷片电容,在LOAD端于地之间接一只10K的电阻。
8位串行接口数码显示驱动器MAX7219及其应用
8位串行接口数码显示驱动器MAX7219及其应用潍坊高等专科学校 王瑞兰LED数码管的应用已十分广泛,用于数码管显示的驱动电路种类较多,但大致可分为静态显示驱动和动态扫描显示驱动两大类别。
本文所要介绍的MAX7219芯片就是 用于动态扫描显示驱动的芯片。
该芯片的特点是利用一块芯片就能完成8位字数据和8位线数据的驱动,使得电路紧凑。
多芯片级联时,采用串行输入输出,可节省CPU的口线和接口芯片。
与数码管联接时无需限流电阻,8位显示的电流可通过一个外部电阻进行调节。
显示亮度也可通过程序进行控制。
片内具有,可以对输入的数据先进行译码再驱动输出,也可以将输入的数据直接驱动。
一、管脚功能MAX7219采用24管脚DIP和SO两种封装形式,管脚排列如图1所示,各引脚功能见表1。
二、MAX7219内部结构MAX7219的内部功能框图如图2所示。
16位移位寄存器所存数据为D0~D15,见表2。
D8~D11为寄存器地址,D0-D7为数据,D12-D15为不关心位。
片内有14个寄存器,其中8个数据寄存器,寄存着与DIG 0-DIG 7对应的显示数据,地址依次为×1H-8H;6个控制寄存器,即译码控制寄存器(Decode Mode)、显示亮度控制寄存器(Intensity)、扫描频率限制寄存器(Scan Limit)、消隐控制寄存器(Shutdown)、显示测试寄存器Display Test)及无操作寄存器(No-Op),其地址依次为×9H-CH、×FH、×0H。
数据寄存器为8×8双指针SRAM。
因为各寄存器可直接寻址,所以寄存器的数据可分别进行修改。
寄存器的数据可以保存到电源电压降低到2V。
三、控制寄存器1. Shutdown 寄存器Shutdown 寄存器写入×××××××0B数据时,将呈现消隐状态。
max7219使用详解
Max7219驱动程序一般的MCU因IO脚驱动能力不够,再加之MCU IO口资源有限,产品开发中通常是通过专门的驱动IC来驱动数码管。
7.1 学会看DatasheetMAX7219就是一款可以同时驱动8个数码管的IC。
下图是其引脚图及典型应用电路:我们的CPU只须三根线就可以控制MAX7219,这三根线是:DIN(第一脚),CS(第12脚),CLK(第13脚)。
DIN是数据输入脚,我们要显示的数据就是通过这根线发送到MAX7219的;CS是片选脚,MCU通过把该脚电平拉低来选中MAX7219,或者说MAX7219通过判断该引脚是否为低电平来使能该芯片。
CLK是时钟引脚,该时钟频率是MCU给到MAX7219的,MCU与7219之间的通信频率就根据该信号做基准。
7.2 MAX7219数据格式我们要让8个数码管显示"12345678",这个过程是怎么实现的呢?首先,要搞清楚MAX7219的数据格式,看图:MAX7219是以16位数据接收和发送的,也就是MCU传给MAX7219的数据必须是16位。
下面分析这16位数据格式:D15~D12为X:表示可以为任意值,因为这四位MAX7219目前还用不到。
D11~D8为ADDRESS:表示MAX7219的地址。
D7~D0为DATA,并且位7为高位(最先发送),位0位低位(最后发送)。
也就是当MCU向MAX7219发送一个16位数据时,其中的D11~D8表示选择MAX7219哪个地址,即数据D7~D0是送到该地址的。
7.3 地址译码MAX7219可以挂8个数码管,MCU是怎么把数据显示到指定的数码管的呢?这就要理解MAX7219的地址译码原理。
下图为MAX7219的地址映射图:D15~12以X表示,代表可为0,也可为1。
Digit0~7对应到8个数码管的地址。
Decode Mode:解码模式寄存器,其地址用16进制表示为0x09;Intensity:亮度调节寄存器,其地址用16进制表示为0x0A;Scan Limit:扫描范围寄存器,其地址用16进制表示为0x0B;Shutdown:省电模式,其地址用16进制表示为0x0C;Display Test:测试寄存器,其地址用16进制表示为0x0F;如果,我们要让第一个数码管显示,那么我们这里送到MAX7219的16位数据中的D11~8应该为0001。
串行接口8位LED显示驱动器MAX7219
表 2 串行数据格式( 16 位)
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
X XXX
地址
数据
寄存器
空操作 位0 位1 位2 位3 位4 位5 位6 位7
译码模式 强度 限扫 关闭
显示测试
D15~ D12
表 3 寄存器地 址控制字
地址
D11
达。串行输入数据通过移位寄存器传输, 在以 D15( 如表 2 所列) , D8~ D11 为移位寄存器地
址, D0~ D7 为数据, D12~ D15 是无 关 位。第一位接收到的位 是最高位
D15。D7 为数据最高有效位, D0 为数 据最低有效位。
2. M AX 7219 控制字
图 2 M A X 7219 的功能框图
显示检测寄存器有两种操作模式: 一般测 试和显示测试。显示测试模式时所有的 L ED 点亮, 方法是将所有控制字寄存器( 包括关闭寄 存器) 置成无效。在显示测试模式下扫描 8 位的
表 5 软件译码数字对应的段笔划
寄存器数据 D7 D6 D5 D4 D3 D2 D1 D0 对应的段笔划 DP A B C D E F G
串行接口 8 位 LED 显示驱动器 MAX7219
- 29-
新特器件应用
串行接口 8 位 L ED 显示驱动器 M AX7219
山西省医疗器械研究所 张志清
摘要: M AX7219 是一种高集成化的串行输入/ 输出共阴极显示驱动器, 具有软件译码、硬 件译码功能, 单一位数据能被寻址更新, 可广泛应用于工业控制、仪器仪表的柱状图、7 段 码 L ED 矩阵显示。本文介绍了该驱动器的引脚功能、工作原理, 并给出了应用实例。 关键词: 串行数据 控制字 译码器 驱动器 L ED 显示
max7219资料及电路图
MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。
该芯片具有10MHz传输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置所有LED的段电流。
它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX7219的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位。
此外它还支持多片7219串联方式,这样MCU就可以通过3根线(即串行数据线、串行时钟线和芯片选通线)控制更多的数码管显示。
MAX7219的外部引脚分配如图1所示及内部结构如图2所示。
图1 MAX7219的外部引脚分配图2 MAX7219的内部引脚分配各引脚的功能为:DIN:串行数据输入端DOUT:串行数据输出端,用于级连扩展LOAD:装载数据输入CLK:串行时钟输入DIG0~DIG7:8位LED位选线,从共阴极LED中吸入电流SEG A~SEG G DP 7段驱动和小数点驱动ISET:通过一个10k电阻和Vcc相连,设置段电流MAX7219有下列几组寄存器:(如图3)MAX7219内部的寄存器如图3,主要有:译码控制寄存器、亮度控制寄存器、扫描界限寄存器、关断模式寄存器、测试控制寄存器。
编程时只有正确操作这些寄存器,MAX7219才可工作。
图 3 MAX7219内部的相关寄存器分别介绍如下:(1)译码控制寄存器(X9H)如图4所示,MAX7219有两种译码方式:B译码方式和不译码方式。
当选择不译码时,8个数据为分别一一对应7个段和小数点位;B译码方式是BCD译码,直接送数据就可以显示。
实际应用中可以按位设置选择B译码或是不译码方式。
图4 MAX7219的译码控制寄存器(2)扫描界限寄存器(XBH)如图5所示,此寄存器用于设置显示的LED的个数(1~8),比如当设置为0xX4时,LED 0~5显示。
MAX7219共阴极LED驱动器程序
MAX7219共阴极 LED数码管显示驱动(一)、 MAX7219MAX7219是一种串入、并出的共阴极LED数码管显示驱动器,每片可驱动8 位 LED数码管显示,与单片机的接口只要 3 根线,内带BCD译码器,及显示测试、移位、锁存器等,输出电流达40mA,外头只要一只亮度调整电阻。
MAX7219引脚图1、引脚功能说明DIN:串行数据输入端,CLK的上涨沿时数据被载入内部16 位移位存放器中CLK:串行时钟输入端,最高工作频次可达10MHzLOAD:片选端,低电平接收DIN 端的数据,高电平常数据被所存DIG0~7: LED的位控制端A~DP:LED的端控制端DOUT:串行数据输出端,用于芯片的级联ISET:硬件亮度调整端,在该引脚与VCC之间跨接一个电阻,LED的亮度即可经过该电阻来调理,流过LED的段驱动均匀电流为流过此电阻电流的100 倍, 此电阻值范围为:10~80K 之间。
2、内部存放器说明A、译码方式选择存放器地点:09H赋值: FFH表示使用MAX7219内部的BCD译码器00H表示不使用MAX7219内部的 BCD译码器B、亮度调理存放器地点:0AH赋值:00H~0FH 可改变MAX7219所驱动的LED的亮度,其变化范围在1/32~31/32之间C、扫描位数设定存放器地点:0BH赋值: 00H所有位不显示01H~07H挨次对应于1~8 位及前方位所有显示(即需显示的位应为“1”)D、待机模式开关存放器地点:0CH赋值: 00H LED全灭01H LED正常显示E、显示器测试存放器地点: 0FH赋值: 00H LED为正常显示状态01H LED测试状态,即LED全亮F、8 位LED显示数据存放器地点: 01H~08H对这些存放器赋值(即需显示的内容),就会在对应的1~8 位LED数码管上显示出来3、使用注意事项因为电源中杂波或邻近的电磁等扰乱信号,使MAX7219在上电后不显示或乱显示;为了除去这类现象应在 MAX7219的 VCC端与地之间接一只104pf 的瓷片电容,在LOAD端于地之间接一只10K 的电阻。
MAX7219
MAX7219是一个采用3线串行接口的8位共阴极7段LED显示驱动器。
本文分析了MAX7219各个寄存器的功能,并结合MAX7219的工作时序,给出了MAX7219在Motorola MC68HC908单片机系统中的一个应用实例。
关键词:MCU;MAX7219;LED Motorola MC68HC908MAX7219工作时序及其寄存器MAX7219是一个高性能的多位LED显示驱动器,可同时驱动8位共阴极LED或64个独立的LED。
其内部结构框图如图1所示,主要包括移位寄存器、控制寄存器、译码器、数位与段驱动器以及亮度调节和多路扫描电路等。
MAX7219采用串行接口方式,只需LOAD、DIN、CLK三个管脚便可实现数据传送。
DIN管脚上的16位串行数据包不受LOAD状态的影响,在每个CLK的上升沿被移入到内部16位移位寄存器中。
然后,在LOAD的上升沿数据被锁存到数字或控制寄存器中。
LOAD必须在第16个时钟上降沿或之后,但在下一个时钟上升沿之前变高,否则数据将会丢失。
DIN端的数据通过移位寄存器传送,并在16.5个时钟周期后出现在DOUT端,随CLK的下降沿输出。
MAX7219的操作时序如图2所示。
MAX7219的串行数据标记为D15~D0,其中低8位表示显示数据本身,最高的4位D15~D12未使用,寻址内部寄存器的地址位占用D11~D8,选择14个内部寄存器,见表1。
图1 MAX7219内部结构框图图2 MAX7219的数据传送时序MAX7219内部具有14个可寻址数字和控制寄存器。
其中的8个数字寄存器由一个片内8×8双端口SRAM实现。
它们可直接寻址,因此可对单个数进行更新并且通常只要V+超过2V数据就可保留下去。
除8个数位寄存器之外,还有无操作、译码方式、亮度调整、扫描位数、睡眠模式和显示器测试6个控制寄存器。
无操作寄存器用于多片MAX7219级联,在不改变显示或不影响任意控制寄存器条件下,它允许数据从DIN传送到DOUT。
MAX7219级联教程
河南工业大学爬山虎工作室
DIN=1; else DIN=0; Dat <<= 1; CLK = 1; _nop_(); _nop_(); CLK = 0; } for(i=0;i<Num_Addr;i++) { for(j=0;j<16;j++) { CLK = 0; DIN = 0; CLK = 1; _nop_(); _nop_(); CLK = 0; } } LOAD = 1; } void Initialise7219()//初始化 { //第 0 个 7219 初始化 Write(0x00,0x09,0xff); //编码模式 Write(0x00,0x0b,0x07); //全部扫描 Write(0x00,0x0c,0x01); //正常模式:1,掉电模式:0 Write(0x00,0x0a,0x07); //消隐时间设为 T/2 //第 1 个 7219 初始化 Write(0x01,0x09,0xff); //编码模式 Write(0x01,0x0b,0x07); //全部扫描 Write(0x01,0x0c,0x01); //正常模式 Write(0x01,0x0a,0x07); //消隐时间设为 T/2 } void main() { u8 i; Initialise7219(); DelayMS(1); for(i=0;i<8;i++) {
河南工业大学爬山虎工作室
MAX7219 级联教程,附驱动源码
一、电路原理图
河南工业大学爬山虎工作室
二、 级联程序
#include <reg52.h> #include <intrins.h> #define u8 unsigned char #define uint unsigned int sbit DIN = P2^0; sbit LOAD = P2^1; sbit CLK = P2^2; u8 Disp_Buffer[8]={2,0,0,9,10,8,10,9}; //软件延时函数,延时 xms void DelayMS(uint x) { u8 t; while(x--) { for(t=120;t>0;t--); } } //向第 Num_Addr 片 7219 的 Addr 寄存器写入一个 Dat 数据 //Num_Addr:7219 地址(0~255) //Addr:7219 数显寄存器地址(1~8) //Dat:要显示的数据(0~15)(含字母) void Write(u8 Num_Addr,u8 Addr,u8 Dat) { u8 i,j; LOAD = 0; for(i=0;i<8;i++) { CLK = 0; if(Addr&0x80) DIN=1; else DIN=0; Addr <<= 1; CLK = 1; _nop_(); _nop_(); CLK = 0; } for(i=0;i<8;i++) { CLK = 0; if(Dat&0x80)