max7219 订阅
MAX7219 是美国MAXIM 公司推出的多位LED 显示驱动器,采用3 线串行接口传送数据,可直接与单片机接口连接,用户能方便修改其内部参数,以实现多位LED 显示。它内含硬件动态扫描电路、BCD译码器、段驱动器和位驱动器。此外,其内部还含有8X8 位静态RAM,用于存放8 个数字的显示数据。显然,它可直接驱动64 段LED点阵显示器。当多片MAX7219 级联时,可控制更多的LED 点阵显示器。显示的数据通过单片机数据处理后,送给MAX7219 显示。 [1] 展开全文
MAX7219 是美国MAXIM 公司推出的多位LED 显示驱动器,采用3 线串行接口传送数据,可直接与单片机接口连接,用户能方便修改其内部参数,以实现多位LED 显示。它内含硬件动态扫描电路、BCD译码器、段驱动器和位驱动器。此外,其内部还含有8X8 位静态RAM,用于存放8 个数字的显示数据。显然,它可直接驱动64 段LED点阵显示器。当多片MAX7219 级联时,可控制更多的LED 点阵显示器。显示的数据通过单片机数据处理后,送给MAX7219 显示。 [1]
信息
功    能
独立的LED段控制
定    义
集成化的串行输入
类    型
显示器
制造零件编号
MAX7219ENG
中文名
max7219
max7219概述
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数据资料。制造商零件编号: MAX7219ENG+制造商: Maxim IC应用领域:条线图显示, 仪表面板, 工业控制,LED矩阵显示
收起全文
精华内容
下载资源
问答
  • MAX7219

    千次阅读 2016-01-25 11:51:05
    虽然单片机可以驱动液晶屏,但是在实际的应用领域,数码管仍然是主流的显示器件。如果提到多位数码管显示,...MAX7219是一块专用的LED显示驱动芯片,它能够以动态形式驱动8位数码显示器。还可以用 n 片MAX7219进行级连

    虽然单片机可以驱动液晶屏,但是在实际的应用领域,数码管仍然是主流的显示器件。

    如果提到多位数码管显示,一般都要讲各个位轮流显示的动态显示技术。
    这种方法虽然可以节省单片机的输出接口,但是使得单片机的软件负担较重,程序必须保证不间断的显示,否则就会出现亮度不均、闪烁、或停止发光的现象。

    MAX7219是一块专用的LED显示驱动芯片,它能够以动态形式驱动8位数码显示器。
    还可以用 n 片MAX7219进行级连,以驱动8 * n位数码显示。

    MAX7219与数码显示器的之间的电路极为简单,几乎连限流电阻都不用。
    MAX7219与单片机之间也仅仅需要连接3条引线。

    当单片机把数据送到MAX7219后,它就可以独立的进行动态扫描显示,无需单片机再进行干预。
    对于单片机来说,这些数码显示器,看起来似乎都是在进行静态显示。


    MAX7219可以说是驱动多位数码显示器的最佳选择。


    DIP封装的MAX7219芯片如下:

    MAX7219 - 非著名博主 - 电子信息角落

    MAX7219需要初始化,按照规则,设置一些东西。
    用数码管显示数字,可以设置为:译码和非译码,两种方式。


    利用MAX7219驱动数码管的显示电路如下:

    MAX7219 - 非著名博主 - 电子信息角落

    图片链接:http://xiangce.baidu.com/picture/detail/feedf64b49d2e5192469b151b556780582b97ee9


    MAX7219还可以驱动8 * 8点阵模块,仿真截图如下:

    MAX7219 - 非著名博主 - 电子信息角落

    图片链接:http://xiangce.baidu.com/picture/detail/bc7297044e6f36dbc04ab92b5b9e00dfdf5d30e9


    在上面的点阵图中,执行的还是原来驱动数码管的程序,把数码管的各个段,显示在各个点上。
    仔细看看点阵的显示,还能看出来是显示“51--7219”的段码吗?

    用MAX7219驱动点阵模块,应该采用非译码形式,然后认真编写需要显示的各个点阵数据,再输出到MAX7219即可。

    显示“I   love  U”的点阵画面如下:

    MAX7219 - 非著名博主 - 电子信息角落

    为了显示上述的画面,需要编写的点阵数据如下图所示:

    MAX7219 - 非著名博主 - 电子信息角落

    看出来了吗?有一行,需要从最下面,移动到最上面去,然后再编写点阵。

    上图电路的显示程序如下:

    //================================================
    #include <reg52.h>            // 引用标准库的头文件
    #include <intrins.h>

    #define uchar unsigned char
    #define uint unsigned int

    #define DecodeMode      0x09  //译码模式寄存器
    #define Intensity       0x0a  //亮度寄存器
    #define ScanLimit       0x0b  //扫描位数寄存器
    #define ShutDown        0x0c  //低功耗模式寄存器
    #define DisplayTest     0x0f  //显示测试寄存器

    #define ShutdownMode    0x00  //低功耗方式
    #define NormalOperation 0x01  //正常操作方式
    #define ScanDigit       0x07  //扫描位数设置,显示8位数码管
    #define DecodeDigit     0xff  //译码设置,8位均为BCD码
    #define IntensityGrade  0x0a  //亮度级别设置
    #define TestMode        0x01  //显示测试模式
    #define TextEnd         0x00  //显示测试结束,恢复正常工作模式

    sbit DIN   =  P2^0;           //MAX7219串行数据输入
    sbit CLK   =  P2^2;           //MAX7219串行时钟
    sbit LOAD  =  P2^1;           //MAX7219显示数据锁存控制

    uchar Disp_Buff[8] = {9, 1, 2, 7, 10, 10, 1, 5};//定义显存

    //**********延时t毫秒***************************
    void delay(uint t)
    {
        uint i;
        while(t--)  for (i = 0; i < 125; i++);
    }
    //**********向MAX7219写入一字节*****************
    void SendChar (char ch)
    {
        char i, temp;
        for (i = 0; i < 8; i++)  { //8位
          temp = ch & 0x80;        //取最高位
          CLK = 0;                 //时钟线置低
          if(temp)  DIN = 1;
          else      DIN = 0;
          ch = ch << 1;            //左移一位
          CLK = 1;     //上升沿,DIN的数据写入到7219
        }
    }
    //**********向MAX7219寄存器写入数据*************
    void WriteWord (char addr, char num)
    {
        LOAD = 0;        _nop_();
        SendChar(addr);  _nop_();
        SendChar(num);   _nop_();
        LOAD = 1;          //锁存
    }
    //**********把显存内容写入MAX7219***************
    void Write7219 (void)
    {
        char i;
        for (i = 0; i < 8; i++)  WriteWord(i + 1, Disp_Buff[i]);
        //7219的数据寄存器编号: 1~8
    }
    //**********MAX7219初始化***********************
    void InitDisplay (void)
    {
        WriteWord(ScanLimit, ScanDigit);      //设置扫描界限
        WriteWord(DecodeMode, DecodeDigit);   //设置译码模式
        WriteWord(Intensity, IntensityGrade); //设置亮度
        WriteWord(ShutDown, NormalOperation); //设置为正常工作模式
    }
    //----------------------------------------------
    void main(void)
    {  
        uchar  i, j, k;
        uchar code data_ilu[4][8] = { //I love U !
          0x00,0x00,0xc0,0xff,0xff,0xc0,0x00,0x00,  // I
          0x1c,0x3e,0x3f,0x9f,0x9f,0x3f,0x3e,0x1c,  //桃心
          0x00,0x7f,0xff,0x81,0x81,0xff,0x7f,0x00,  // U
          0x00,0x00,0x00,0xfd,0xfd,0x00,0x00,0x00}; // !

        InitDisplay();                     //MAX7219初始化
        WriteWord(DisplayTest, TestMode);  //显示测试,点亮所有LED
        delay(1000);                       //延时约1s
        WriteWord(DisplayTest, TextEnd);   //退出显示测试

        WriteWord(DecodeMode, 0x00);       //8位皆为非译码
     
        for (k = 0; k < 8; k++)  Disp_Buff[k] = 255;
        Write7219();                       //将缓存内容写入7219
        while(1)  {
          for (i = 0; i < 4; i++)  {
            for (j = 0; j < 8; j++)  {
              for (k = 7; k > 0; k--)  Disp_Buff[k] = Disp_Buff[k - 1];
              Disp_Buff[0] = data_ilu[i][j];
              Write7219();                 //将缓存内容写入7219
              delay(300);                  //延时约300ms
            }
            if (j == 8 && i != 3) delay(1000);
        } }
    }
    //================================================

    展开全文
  • max7219-源码

    2021-03-07 13:32:57
    max7219
  • WordClock-MAX7219:使用MAX7219和LED矩阵模块的微型字时钟
  • Mixly Max7219

    2019-04-17 17:51:08
    米思齐Max7219库文件,图形化编程官方文件,可以扩展Max7219模块
  • MAX7219官方资料

    2016-11-30 09:56:37
    MAX7219
  • MAX7219点阵

    2014-09-27 13:12:20
    MAX7219点阵
  • max7219

    2009-12-31 00:33:00
    现在在做汇编的课程设计,感觉极容易又有点难,老师要自己查max8219的用法,网上介绍了好多种感觉没有自己需要的,哎,看来明天还要继续搜索了。

    现在在做汇编的课程设计,感觉极容易又有点难,老师要自己查max8219的用法,网上介绍了好多种感觉没有自己需要的,哎,看来明天还要继续搜索了。

    展开全文
  • #ifndef __MAX7219_H #define __MAX7219_H #include "stm8s_gpio.h" #include "stm8s.h" #include &lt;iostm8s103f3.h&gt; #include &lt;intrinsics.h&gt; #include "tim1...

     

    以下为.h文件:

    
    
    #ifndef __MAX7219_H
    #define __MAX7219_H
    #include "stm8s_gpio.h"
    #include "stm8s.h"
    #include <iostm8s103f3.h>
    #include <intrinsics.h>
    #include "tim1.h"
    
    #define uchar unsigned char
    #define uint  unsigned int
    #define count 8
    
    
    void Init_MAX7219(void);
    void MAX7219_Init(void);
    void Write_Max7219_byte(uchar Data);    
    void Write_Max7219(u8 address1,u8 dat1,u8 address2,u8 dat2);
    
    #define High 1
    #define Low 0
    #define Din(High_Low)	if(High_Low == 0)GPIO_WriteLow(GPIOC, GPIO_PIN_4);\
    						else GPIO_WriteHigh(GPIOC, GPIO_PIN_4);
    #define Cs(High_Low)	if(High_Low == 0)GPIO_WriteLow(GPIOC, GPIO_PIN_3);\
    						else GPIO_WriteHigh(GPIOC, GPIO_PIN_3);						
    #define Clk(High_Low)	if(High_Low == 0)GPIO_WriteLow(GPIOC, GPIO_PIN_2);\
    						else GPIO_WriteHigh(GPIOC, GPIO_PIN_2);
    
    					
    #endif

     

    以下为.c文件:

    #include "main.h"
    
    void Init_MAX7219(void)
    {
    	GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST);//PC4高速推挽输出高电平控制DIN
    	GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_FAST);//PC3高速推挽输出高电平控制CS
    	GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_MODE_OUT_PP_HIGH_FAST);//PC2高速推挽输出高电平控制CLK
    
    }
    
    //--------------------------------------------
    //功能:向MAX7219(U3)写入字节
    //入口参数:DATA 
    //出口参数:无
    //说明:
    void Write_Max7219_byte(uchar Data)         
    {
        	uchar i;    
    		Cs(0);
    	    for(i=8;i>=1;i--)
    		{		  
    			Clk(0);
    			if(Data&0x80)
    			{
    				Din(1);
    			}
    			else
    			{
    				Din(0);
    			}
    			Data=Data<<1;
    			Clk(1);
    			delay_us(10);
    			Clk(0);
    		 }                                 
    }
    
    //-------------------------------------------
    //功能:向MAX7219写入数据
    //入口参数:address、dat
    //出口参数:无
    //说明:
    void Write_Max7219(u8 address1,u8 dat1,u8 address2,u8 dat2)
    { 
    
         Cs(0);
         Write_Max7219_byte(address1);           //写入地址,即数码管编号
         Write_Max7219_byte(dat1);              //写入数据,即数码管显示数字 
         Write_Max7219_byte(address2);           //写入地址,即数码管编号
         Write_Max7219_byte(dat2);      //写入数据,即数码管显示数字 
    
         nop();
         Cs(1);                         
    }
    
    
    void MAX7219_Init(void)
    {
    	/*
      	Write_Max7219(0x09, 0x00,0x09, 0x00);      	//译码方式:BCD码
     	Write_Max7219(0x0a, 0x03,0x0a, 0x03);       //亮度 
    	Write_Max7219(0x0b, 0x07,0x0b, 0x07);       //扫描界限;8个数码管显示
     	Write_Max7219(0x0c, 0x01,0x0c, 0x01);       //掉电模式:0,普通模式:1
     	Write_Max7219(0x0f, 0x00,0x0f, 0x00);      	//显示测试:1;测试结束,正常显示:0
    	*/
    	
    	u8  i;
    	Cs(0);
    	for(i=0;i<count;i++)
    	{
    	  Write_Max7219_byte(0x09); //译码方式:BCD码       
    	  Write_Max7219_byte(0x00);    
    	}
    	Cs(1);
    	nop();
    	Cs(0);
    	for(i=0;i<count;i++)
    	{
    	  Write_Max7219_byte(0x0a); //亮度    
    	  Write_Max7219_byte(0x03);    
    	}
    	Cs(1);
    	nop();
    	Cs(0);
    	for(i=0;i<count;i++)
    	{
    	  Write_Max7219_byte(0x0b); // //扫描界限;8个数码管显示  
    	  Write_Max7219_byte(0x07);    
    	}
    	Cs(1);
    	nop();
    	Cs(0);
    	for(i=0;i<count;i++)
    	{
    	  Write_Max7219_byte(0x0c); //   //掉电模式:0,普通模式:1
    	  Write_Max7219_byte(0x01);    
    	}
    	Cs(1);
    	nop();
    	Cs(0);
    	for(i=0;i<count;i++)
    	{
    	  Write_Max7219_byte(0x0f); //显示测试:1;测试结束,正常显示:0
    	  Write_Max7219_byte(0x00);    
    	}
    	Cs(1);
    	nop();
    }	
    
    
    
    
    

     

    展开全文
  • MAX7219.zip

    2019-06-15 21:38:49
    基于国产51单片机的max7219数码管驱动程序,测试直接可用。
  • 1.MAX7219

    2019-02-08 12:13:25
    MAX7219: 详情查见数据手册 定义数码管端口 sbit Max7219_pinCLK= P2^2;//可修改 sbit Max7219_pinCS = P2^3; sbit Max7219_pinDIN = P2^4; 主体 void Write_Max7219_byte(u8 DATA) { u8 i; Max7219_pinCS=0; ...

    MAX7219:
    详情查见数据手册
    数码管显示
    定义数码管端口

    sbit Max7219_pinCLK= P2^2;//可修改
    sbit Max7219_pinCS = P2^3;
    sbit Max7219_pinDIN = P2^4;
    

    主体

    void Write_Max7219_byte(u8 DATA)
    {
    	u8 i;
    	Max7219_pinCS=0;
    	for(i=8;i>=1;i--){
    		Max7219_pinCLK=0;
    		Max7219_pinDIN=DATA&0x80;//最高位先传,传一个字节			
    		DATA=DATA<<1;
    		Max7219_pinCLK_1=1;
    	}
    }
    /*****向MAX7219写入数据*****/
    void Write_Max7219(u8 address,u8 dat)
    {
    	Max7219_pinCS=0;
    	Write_Max7219_byte(address);  //写入地址   
    	Write_Max7219_byte(dat);      //写入数据,即数码管显示数字      
    	Max7219_pinCS=1;
    }
    /*****MAX7219初始化*****/
    void Init_Max7219(void)
    {
    	 Write_Max7219(0x09, 0x00);		//设置工作模式,译码;不译码0xFF(即给0x00显示0)      
     	 Write_Max7219(0x0a, 0x03);		//亮度     
    	 Write_Max7219(0x0b, 0x07);		//扫描界限,07表示扫描0-7号八个数码管
    	 Write_Max7219(0x0c, 0x01);		//掉电模式,0;普通模式,1;
    	 Write_Max7219(0x0f, 0x00);		//显示测试:1;测试结束,正常显示:0    
    }  
    

    可对每一个数码管进行操作

    /********************************
    举例:
    		函数功能:数码管全灭(共阴极)
    ********************************/
    void show_Max7219()
    {
    	Write_Max7219(0x01, 0x00); 
    	Write_Max7219(0x02, 0x00);       
    	Write_Max7219(0x03, 0x00);       
    	Write_Max7219(0x04, 0x00);       
    	Write_Max7219(0x05, 0x00);       
    	Write_Max7219(0x06, 0x00);       
    	Write_Max7219(0x07, 0x00);       
    	Write_Max7219(0x08, 0x00);       
    }
    或
    	Write_Max7219(0x01, smg[0]);//实现第一个数码管显示0 
    

    除直接对每一个数码管进行给值显示外,怎样通过直接赋值方式使其显示呢?

    /*************************************************
    函数功能:
       		给值  13.4,使第三个数码管显示十分位,
    		第四个数码管显示个位和小数点,第五位显示十位。
    **************************************************/
    unsigned char code smg0[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b};//0~9
    unsigned char code smg1[]={0xfe,0xb0,0xed,0xf9,0xb3,0xdb,0xdf,0xf0,0xff,0xfb};//0.~9.
    void show(float w)
    {
    	float w1;
    	int ii,ij,ik;
    	Init_Max7219_1();         //MAX7219初始化
    	w1=w*10;                     //变成整数
        ii=w1/100;                 //取十位
        ij=(w1-100*ii)/10;         //取个位
    	ik=w1-100*ii-10*ij;        //取十分位
    	if(ii==0){                  //若没有十位,则不显示
    	Write_Max7219_1(0x05,0x00);//用来显示十位的数码管5不亮
    	}
    	else{
    	Write_Max7219_1(0x05,smg0[ii]);//显示十位
    	}
    	Write_Max7219_1(0x04,smg1[ij]);   //显示个位和小数点
    	Write_Max7219_1(0x03,smg0[ik]); 	 //显示十分位
    }
    

    环境:keil 5,STC15W4KxxS4
    补充:
    unsigned char code smg0[];
    code的作用是告诉单片机,我定义的数据要放在ROM(程序存储区)里面,写入后就不能再更改,其实是相当与汇编里面的寻址MOVC(好像是),因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM的意思。

    程序可以简单的分为code(程序)区,和data (数据)区,code区在运行的时候是不可以更改的,data区放全局变量和临时变量,是要不断的改变的,cpu从code区读取指令,对data区的数据进行运算处理,因此code区存储在什么介质上并不重要,象以前的计算机程序存储在卡片上,code区也可以放在rom里面,也可以放在ram里面,也可以放在flash里面(但是运行速度要慢很多,主要读flash比读ram要费时间),因此一般的做法是要将程序放到flash里面,然后load到 ram里面运行的;DATA区就没有什么选择了,肯定要放在RAM里面,放到rom里面改动不了。

    附:

    c51中的存储类型

    code :程序存储区(64KB),

    data :可直接寻址的内部数据存储区(128B)

    idata:不可直接寻址的内部数据存储区(256B)

    bdata:可位寻址内部数据存储区(16B)

    xdata:外部数据存储区(64KB)

    pdata:分页的外部数据存储区

    展开全文
  • max7219驱动数码管

    2012-10-14 09:05:15
    max7219驱动数码管的程序,其中包含max7219的一些简介
  • MAX7219取得程序

    2015-08-12 09:12:03
    MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。本程序是自己编写的一个简单的MAX7219驱动程序,可供参考。
  • MAX7219数码管驱动ATmega16控制 MAX7219数码管驱动ATmega16控制
  • max7219-7221

    2011-03-19 21:22:22
    max7219-7221 max7219-7221
  • 电子-MAX7219.C

    2019-09-05 21:45:37
    电子-MAX7219.C,单片机/嵌入式STM32-F0/F1/F2
  • 电子-MAX7219.h

    2019-09-05 21:45:37
    电子-MAX7219.h,单片机/嵌入式STM32-F0/F1/F2
  • 【摘 要】MAX7219是一种串行接口的8位数码管显示驱动器。本文主要介绍了它的基本使用方法,以及它在发射显示中的应用。 【关键词】MAX7219,串行接口,显示驱动器1 引 言 传统的数码管显示驱动电路占用的系统...
  • MAX7219及其应用

    2010-05-19 10:44:12
    MAX7219及其应用MAX7219及其应用
  • MAX7219级联程序

    2012-03-14 20:51:22
    MAX7219级联程序,可以级联2快或者更多的MAX7219驱动电路,希望你们能够喜欢,哈哈1
  • MAX7219芯片笔记

    2020-02-11 02:03:27
    MAX7219芯片 一.概述 ​ MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。该芯片具有10MHz...
  • 多功能串行LED显示驱动器MAX72192002年,第29期,类别:电子产品与器件 MAX7219是美国MAXIM(美信)公司推出的多位LED显示驱动器,采用3线串行接口传送数据,可直接与单片机接口,用户能方便...
  • MAX7219数码管驱动89C52控制, MAX7219数码管驱动89C52控制
  • MAX7219应用简要说明

    2014-09-30 12:31:25
    MAX7219应用简要说明
  • MAX7219点阵资料包

    2018-10-28 14:03:03
    串行接口 8 位LED 显示驱动器,MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器 与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一 个片上的B型BCD编码...
  • STM32_SPI_MAX7219.rar

    2020-03-27 09:07:31
    MAX7219驱动LED点阵源码
  • max7219 package on pypi

    2020-12-26 09:03:55
    <div><p>when searching for luma.led_matrix, the max7219 package comes up first: https://pypi.org/project/max7219/</p> <p>there's nothing on that pypi page (e.g. first paragraph) that tells me it&#...
  • MAX7219驱动程序

    2014-01-06 12:01:37
    改程序已经测试,请改动放心使用,这是LED驱动芯片MAX7219的驱动程序
  • 通过这个项目,我们将学习MAX7219 Parola驱动程序文件。
  • MAX7219源程序

    2009-09-01 22:15:46
    max7219 C语言驱动程序max7219 led drive program for 51 mcu

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 558
精华内容 223
关键字:

max7219