max7219驱动8个数码管代码及电路图

合集下载

max7219资料及电路图

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

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使用详解

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应用电路

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在单片机系统显示电路中的应用

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驱动数码管

单片机时钟设计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

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驱动单个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]); }}实验结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档