精华内容
下载资源
问答
  • MAX7219数码管驱动ATmega16控制 MAX7219数码管驱动ATmega16控制
  • MAX7219数码管驱动89C52控制, MAX7219数码管驱动89C52控制
  • 基于STM32F4xx的MAX7219数码管模块显示程序,采用spi串行总线通信,库函数编程,实测能正常驱动数码管显示
  • MAX7219数码管显示控制器测试程序 通过串行方式 发送数据 节约了IO口线 同时 可调节显示亮度等 功能更齐全 值得拥有
  • 简单介绍:MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。该芯片具有10MHz传输率的三线串行...

    简单介绍:

    MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。该芯片具有10MHz传输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置所有LED的段电流。。它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX7219的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位。此外它还支持多片7219串联方式,这样MCU就可以通过3根线(即串行数据线、串行时钟线和芯片选通线)控制更多的数码管显示。

    接口类型:

    三线串行接口 兼容SPI 传输速率可达 10MHZ

    功能介绍

    1.多种译码方式和译码位
    2.支持多片7219串联
    3.支持亮度调节
    4.支持扫描范围

    MAX7219的外部管脚图

    这里写图片描述

    典型电路

    这里写图片描述

    电器特性

    这里写图片描述

    数据传输方式

    这里写图片描述
    (高位在前 先传地址 后传数据)

    功能寄存器

    1. 译码控制寄存器 地址码 0x09
    MAX7219有两种译码方式:B译码方式和不译码方式。当选择不译码时,8个数据为分别一一对应7个段和小数点位;B译码方式是BCD译码,直接送数据就可以显示。实际应用中可以按位设置选择B译码或是不译码方式
    2. 亮度控制寄存器 地址码 0x0a
    共有16级可选择,用于设置LED的显示亮度,数据从0xX0~0xXF
    3. 扫描界限寄存器 地址码 0x0b
    此寄存器用于设置显示的LED的个数(1~8),比如当设置为0xX4时,LED 0~5显示
    4. 关断模式寄存器 地址码 0x0c
    共有两种模式选择,一是关断状态,(最低位 D0=0)一是正常工作状态(D0=1)
    5. 测试控制寄存器 地址码 0x0f
    用于设置LED是测试状态还是正常工作状态,当测试状态时(最低位 D0=1)各位显示全亮,正常工作状态(D0=0)。 各寄存器具体操作见驱动程序详解

    展开全文
  • /***************************************************程序名称: MAX7219 C语言控制程序*程序功能: 3线串行控制8位共阴数码管*3线定义:DIN 串行数据输入* LOAD 数据锁存* CLK 时钟输入****************************...

    /**************************************************

    *程序名称: MAX7219 C语言控制程序

    *程序功能: 3线串行控制8位共阴数码管

    *3线定义:DIN 串行数据输入

    * LOAD 数据锁存

    * CLK 时钟输入

    ***************************************************/

    #include #include sbit pinDIN=P0^0; //串行数据输入端

    sbit pinLOAD=P0^1; //数据锁存端

    sbit pinCLK=P0^2; //时钟输入端

    #define uchar unsigned char

    uchar code LEDcode[]=

    {0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,0x00 /*0,1,2,3,4,5,6,7,8,9,全灭*/

    /* 0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x67,0x3e,0xff, */ }; /*A,B,C,D,E,F,P,U,全亮*/本文引用地址:http://www.eepw.com.cn/article/201611/323917.htm

    /**************************************************

    * 向MAX7219写入字节(8位)函数 *

    ***************************************************/

    void sendbyte (uchar dat)

    {

    uchar i,temp;

    _nop_();

    for (i=0;i<8;i++)

    {

    temp=dat&0x80;

    dat=dat<<1;

    if(temp)

    pinDIN=1;

    else

    pinDIN=0;

    pinCLK=0;

    _nop_();

    pinCLK=1;

    }

    }

    /**************************************************

    * 向MAX7219写入地址和控制字(16位) *

    ***************************************************/

    void sendword (uchar addr,uchar dat)

    {

    pinLOAD=0;

    _nop_();

    sendbyte (addr);

    _nop_();

    sendbyte (dat);

    _nop_();

    pinLOAD=1; //第16个上升沿之后,第17个上升沿之前必须把pinCLK置高,否则数据丢失

    }

    /**************************************************

    * MAX7219初始化 *

    ***************************************************/

    void init7219 (void)

    {

    sendword (0x0c,0x01); /* 设置电源工作模式 */

    sendword (0x0a,0x09); /* 设置亮度 19/32 */

    sendword (0x0b,0x03); /* 设置扫描界限 */

    sendword (0x09,0x00); /* 设置译码模式 */

    sendword (0x0f,0x00); /*显示测试 00为正常工作状态*/

    }

    /**************************************************

    * MAX7219清除显示 *

    ***************************************************/

    void clear7219(void)

    {

    uchar i;

    for(i=8;i>0;i--)

    {

    sendword(i,0x00);

    }

    }

    /**************************************************

    * MAX7219主函数 *

    ***************************************************/

    /*void main(void)

    {

    init7219 ();

    //clear7219();

    while(1)

    {

    clear7219();

    sendword(0x01,LEDcode[11]);

    sendword(0x02,LEDcode[12]|0x80);

    sendword(0x03,LEDcode[13]);

    sendword(0x04,LEDcode[4]);

    sendword(0x05,LEDcode[5]);

    sendword(0x06,LEDcode[6]);

    sendword(0x07,LEDcode[7]);

    sendword(0x08,LEDcode[8]);

    }

    }*/

    展开全文
  • max7219驱动数码管

    2012-10-14 09:05:15
    max7219驱动数码管的程序,其中包含max7219的一些简介
  • max7219来驱动数码管,当按一个按键数码管数值会增加1,有文字注释
  • max7219控制数码管显示

    2011-05-27 12:16:16
    max7219控制数码管显示,功能强大,模块化编程。可直接调用。单片机,stc60系列。
  • stm32f407驱动MAX7219控制数码管显示,动态刷新数码管
  • max7219驱动数码管,mcu是stm32f101c8t6
  • 单片机常用芯片MAX7219数码管驱动)

    万次阅读 多人点赞 2019-06-11 17:36:47
    MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。该芯片具有10MHz传输率的三线串行接口可与...

    博主福利:100G+电子设计学习资源包!

    http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5d5d0f15df84f4a92ebf72f88d4ee8&scene=18#wechat_redirect
    --------------------------------------------------------------------------------------------------------------------------

     

    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显示。

     

    图5   MAX7219的扫描界限控制寄存器

     

    (3)        亮度控制寄存器(XAH)

    共有16级可选择,用于设置LED的显示亮度,从0xX0~0xXF

    (4)        关断模式寄存器(XCH)

    共有两种模式选择,一是关断状态,(最低位 D0=0)一是正常工作状态(D0=1)。

    (5)        显示测试寄存器(XFH)

    用于设置LED是测试状态还是正常工作状态,当测试状态时(最低位 D0=1)各位显示全亮,正常工作状态(D0=0)。

    各寄存器具体操作见驱动程序详解。

     

    2 读写时序说明

    MAX7129是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。

           要想与MAX7129通信,首先要先了解MAX7129的控制字。MAX7129的控制字格式如图6。

    图6   控制字(即地址及命令字节)

     

    如图,工作时,MAX7219规定一次接收16位数据,在接收的16位数据中:D15~D12可以与操作无关,可以任意写入,D11~D8决定所选通的内部寄存器地址,D7~D0为待显示数据或是初始化控制字。在CLK脉冲作用下,DIN的数据以串行方式依次移入内部16位寄存器,然后在一个LOAD上升沿作用下,锁存到内部的寄存器中。注意在接收时,先接收最高位D16,最后是D0,因此,在程序发送时必须先送高位数据,在循环移位。工作时序图见图7。

    由于51是8位单片机故需要分两次来送数据。具体操作见驱动程序详解。

    图7  数据读写时序

    3 电路原理图

    电路原理图

    电路原理图如图7,MAX7219与单片机的连接只需要3条线:LOAD(CS)片选引脚、CLK串行时钟引脚、DIN串行数据引脚。其中C1 为电源滤波电容,R1用来设置段电流。 MAX7219的PCB布线有些难度,作者可以提供画好的PCB给读者。有需要的读者请与作者联系。邮箱:zhaoliang_0801@dl.cn

     

    图8  电路原理图

    4 驱动程序

    //管脚定义
    
    sbit LOAD=P1^2;          //MAX7219片选           12脚
    
    sbit DIN=P1^1;           //MAX7219串行数据       1脚
    
    sbit CLK=P1^0;           //MAX7219串行时钟        13脚
    
    //寄存器宏定义
    
    #define DECODE_MODE  0x09   //译码控制寄存器
    
    #define INTENSITY    0x0A   //亮度控制寄存器
    
    #define SCAN_LIMIT   0x0B   //扫描界限寄存器
    
    #define SHUT_DOWN    0x0C   //关断模式寄存器
    
    #define DISPLAY_TEST 0x0F   //测试控制寄存器        
    
    //函数声明
    
    void Write7219(unsigned char address,unsigned char dat);
    
    void Initial(void);
    
    //地址、数据发送子程序
    
    void Write7219(unsigned char address,unsigned char dat)
    
    {  
    
        unsigned char i;
    
        LOAD=0;    //拉低片选线,选中器件
    
        //发送地址
    
        for (i=0;i<8;i++)        //移位循环8次             
    
        {  
    
           CLK=0;        //清零时钟总线
    
           DIN=(bit)(address&0x80); //每次取高字节     
    
           address<<=1;             //左移一位
    
           CLK=1;        //时钟上升沿,发送地址
    
        }
    
        //发送数据
    
        for (i=0;i<8;i++)              
    
        {  
    
           CLK=0;
    
           DIN=(bit)(dat&0x80);    
    
           dat<<=1; 
    
           CLK=1;        //时钟上升沿,发送数据
    
        }
    
        LOAD=1;    //发送结束,上升沿锁存数据                      
    
    }
    
    //MAX7219初始化,设置MAX7219内部的控制寄存器
    
    void Initial(void)                
    
    {
    
        Write7219(SHUT_DOWN,0x01);         //开启正常工作模式(0xX1)
    
        Write7219(DISPLAY_TEST,0x00);      //选择工作模式(0xX0)
    
        Write7219(DECODE_MODE,0xff);       //选用全译码模式
    
        Write7219(SCAN_LIMIT,0x07);        //8只LED全用
    
        Write7219(INTENSITY,0x04);          //设置初始亮度     
    
    }

    测试程序

    void main(void)
    
    {
    
        unsigned char i;
    
        Initial();               //MAX7219初始化
    
        while(1)
    
        { 
    
           for(i=1;i<9;i++)
    
           {
    
               Write7219(i,i);      //数码管显示1~8
    
           }
    
        }
    
    }

    典型应用电路:

    展开全文
  • 自己写的 MAX7219 程序 数码管键盘高速驱动 芯片 自己写的 MAX7219 程序 数码管键盘高速驱动 芯片
  • MAX7219驱动数码管

    2009-11-16 13:54:53
    数码管驱动8组MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器 与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一 个片上的B型BCD编码器、多路扫描回路...
  • ATmega16控制MAX7219驱动数码管,提供源码,原理图,焊接实物图等。链接见文末。 原理图源码MAX7219.H/********************************************************** * 文 件 名 : MAX7219.H * 描 述 : MAX7219...

    ATmega16控制MAX7219驱动数码管,提供源码,原理图,焊接实物图等。链接见文末。
    这里写图片描述

    这里写图片描述

    原理图

    这里写图片描述

    源码

    MAX7219.H

    /**********************************************************
    * 文  件  名 : MAX7219.H 
    * 描      述 : MAX7219驱动包程序 
    * 创  建  人 : 夏玉峰  
    * 单      位 : 佳木斯大学 信息电子技术学院 电子协会 
    * 日      期 : 2012.9.30
    * 开 发 环 境: ICCAVR 7.22 ATmega16
    * 邮      箱 : xiayufeng90520@163.com
    * 版  本  号 : 1.00
    **********************************************************/
    #ifndef _MAX7219_H_
    #define _MAX7219_H_
    
    #include <iom16v.h>
    #include <macros.h>
    
    //功能寄存器宏定义
    #define DECODEMODE   0X09     //译码控制寄存器地址
    #define INTENSITY    0X0A     //亮度控制寄存器地址
    #define SCANLIMIT    0X0B     //扫描界限寄存器地址
    #define SHUTDOWN     0X0C     //关断模式寄存器地址
    #define DISPTEST     0X0F     //测试控制寄存器地址
    //外部可调用函数定义
    void MAX7219_Write(unsigned char addr, unsigned char dat);
    void MAX719_Init(void);
    
    #endif

    MAX7219.C

    /**********************************************************
    * 文  件  名 : MAX7219.c 
    * 描      述 : MAX7219驱动包程序 
    * 创  建  人 : 夏玉峰  
    * 单      位 : 佳木斯大学 信息电子技术学院 电子协会 
    * 日      期 : 2012.9.30
    * 开 发 环 境: ICCAVR 7.22  ATmega16
    * 邮      箱 : xiayufeng90520@163.com
    * 版  本  号 : 1.00
    **********************************************************/
    
    #include "max7219.h"
    
    /**************************************************************
    ** 函数名称: void SPI_Init(void) 
    ** 功能描述: SPI初始化
    ** 输   入: 无
    ** 全局变量: 无
    ** 调用模块: 无
    ** 说    明:
    ** 注    意:
    **************************************************************/
    void SPI_Init(void) 
    {
        DDRB=0xB0;   //选通7219
        SPCR=0x51;   //spi设置
    }
    /**************************************************************
    ** 函数名称: void MAX7219_WriteByte(unsigned char date)
    ** 功能描述: 向MAX7219写一个字节
    ** 输   入: unsigned char date 字节内容
    ** 全局变量: 无
    ** 调用模块: 无
    ** 说    明:
    ** 注    意:
    **************************************************************/
    void MAX7219_WriteByte(unsigned char date)
    {
        SPDR = date;                    /* 启动数据传输 */
        while (!(SPSR & (1<<SPIF)));/* 等待传输结束 */
    }
    /**************************************************************
    ** 函数名称: void MAX7219_Write(unsigned char addr, unsigned char dat)
    ** 功能描述: 向MAX7219写指令
    ** 输   入: unsigned char addr  地址 
                 unsigned char dat   数据
    ** 全局变量: 无
    ** 调用模块: 无
    ** 说    明:
    ** 注    意:
    **************************************************************/
    void MAX7219_Write(unsigned char addr, unsigned char dat)
    {
         PORTB = 0X00;
         MAX7219_WriteByte(addr);  //选择寄存器地址
         MAX7219_WriteByte(dat);   //选择让芯片执行命令
         PORTB = 0X10;
    }
    
    /**************************************************************
    ** 函数名称: void MAX7219_Init(void)  
    ** 功能描述: MAX7219初始化
    ** 输   入: 无
    ** 全局变量: 无
    ** 调用模块: 无
    ** 说    明:
    ** 注    意:
    **************************************************************/
    void MAX7219_Init(void)      
    { 
        SPI_Init();                      //SPI功能初始化
        MAX7219_Write(SHUTDOWN, 0x01);   //关断模式寄存器;关断状态,最低位D0=0;正常状态,最低位D0=1
        MAX7219_Write(DISPTEST, 0x00);   //显示测试寄存器;测试状态,最低位D0=1,各位显示全亮;正常工作状态,最低位D0=1
        MAX7219_Write(DECODEMODE, 0xff); //译码控制寄存器;0XFF,全译码
        MAX7219_Write(SCANLIMIT, 0x07);  //扫描界限寄存器;设置显示的LED的个数(1~8),如设置为0xX4时,LED 0~5显示
        MAX7219_Write(INTENSITY, 0x08);  //亮度控制寄存器;共有16级可选择,用于设置LED的显示亮度,0X00-0X0F
    }

    下载链接

    展开全文
  • 此程序是基于MAX7219数码管显示的C程序。
  • 89C52控制MAX7219驱动数码管

    千次阅读 2017-12-28 17:30:38
    89C52控制MAX7219驱动数码管,提供源码,原理图,焊接实物图等。链接见文末。 原理图源码max7219.h/********************************************************** * 文 件 名 : MAX7219.H * 描 述 : MAX7219驱动包...
  • 一种用MAX7219驱动数码管显示器显示连续数的硬件电路及编程方法、电子技术,开发板制作交流
  • max7219共阴极数码管驱动 stm32 hal

    千次阅读 2020-06-19 11:53:17
    实现max7219驱动数码管显示 步骤 max7219资料解读 stm32 参数配置 驱动实现 max7219资料解读 此部分只摘取官方文档部分内容。我认为足够使用了 max7219 与stm32通信方式 max7219通信方式为SPI,16bit 数
  • 利用proteus仿真万年历,只需单片机的三个IO口即可驱动24个数码管,含时钟芯片DS1302及温度芯片DS18B20的C程序。
  • This is a Windows 10 IoT Core project on the Raspberry Pi 2/3, coded by C#. GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/MAX7219_7Segment Image Connect DIN - MOSI CS - CS...
  • 基于51单片机的RS232串行通信,并添加了MAX7219驱动数码管显示通信内容
  • MAX7219.zip

    2019-06-15 21:38:49
    基于国产51单片机的max7219数码管驱动程序,测试直接可用。
  • 美信公7219驱动LED数码管的C语言程序,基于51单片机,使用KEIL编译

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 124
精华内容 49
关键字:

max7219数码管