历史上的今天
返回首页

历史上的今天

今天是:2024年11月08日(星期五)

正在发生

2019年11月08日 | 单片机常用芯片MAX7219驱动

2019-11-08 来源:eefocus

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

       }

    }

}

典型应用电路:


推荐阅读

史海拾趣

CDE [ CORNELL DUBILIER ELECTRONICS ]公司的发展小趣事

在电子行业的早期,创始人William Dubilier凭借其敏锐的洞察力和创新精神,于1909年创立了CDE公司。Dubilier首次使用一种名为云母的玻璃状矿物,开发出一种新型电容器,这一创新为CDE公司的诞生奠定了基石。自那时起,CDE便以电容器为专业方向,不断追求技术突破和产品创新。

Antenna Factor公司的发展小趣事

随着公司实力的不断增强,Antenna Factor公司开始将目光投向国际市场。他们积极参加国际电子展会和技术交流活动,与全球各地的客户和合作伙伴建立了广泛的联系。同时,公司还加大了对海外市场的研发投入和市场推广力度,逐步实现了产品的全球化销售。这一战略不仅为公司带来了更广阔的发展空间,也提升了其在全球电子行业中的竞争力。

通过以上五个故事,我们可以看到Antenna Factor公司在电子行业中的发展历程和取得的成就。他们以技术创新为驱动,不断突破自我,积极拓展市场,加强质量管理和品牌建设,逐步实现了公司的快速发展和壮大。未来,随着无线通信技术的不断进步和应用领域的不断拓展,相信Antenna Factor公司将继续保持领先地位,为电子行业的发展做出更大的贡献。

ECLIPTEK公司的发展小趣事

为了进一步扩大市场份额,ECLIPTEK公司决定实施国际扩张战略。公司先后在亚洲、欧洲和北美等地设立了分支机构,并在当地建立了生产基地。为了更好地满足当地客户的需求,ECLIPTEK还实施了本地化战略,根据市场特点调整产品设计和生产流程。这一举措不仅提高了公司的市场覆盖率,还增强了其国际竞争力。

Dialog公司的发展小趣事

Dialog公司一直注重产品的安全性和可靠性。为了确保其产品和解决方案能够满足客户对安全性的要求,Dialog公司积极寻求各种认证和合规性评估。例如,Dialog公司的DA16200 Wi-Fi SoC获得了PSA一级认证,这标志着Dialog公司在芯片层面保护设备方面取得了重要里程碑。PSA Certified认证机制由Arm及其四个全球领先的独立安全评估实验室合作伙伴共同创立,该认证机制以一种方法论的方式来开发安全功能的最佳实践。获得PSA一级认证使Dialog公司能够确保其客户和合作伙伴在从芯片到应用的各个开发阶段都能获得安全性保障。

Aptos Technology公司的发展小趣事

Aptos Technology成立于2006年,正值电子科技行业蓬勃发展的时期。初创时期的Aptos面临着资金短缺、技术积累不足以及市场竞争激烈等多重挑战。然而,凭借其独特的SiP-System in Package技术,公司成功在微电子封装领域获得了一席之地。通过不断的研发和创新,Aptos逐渐在行业内崭露头角。

Agere System(LSI Logic)公司的发展小趣事

为了加速发展,Aptos积极寻求与行业内外的合作伙伴建立合作关系。通过与微软、阿里云等知名公司的合作,Aptos获得了更多的技术支持和市场资源。这些合作伙伴关系的建立,不仅提升了Aptos的技术实力和市场竞争力,还为其未来的发展奠定了坚实的基础。

问答坊 | AI 解惑

晶闸管在电力稳压器中的应用

摘要:在所研制的新型无触点电力稳压器中,采用晶闸管作为开关器件。文中介绍该系统基本工作原理,详细分析晶闸管在使用过程中存在的一些问题及解决方法。目前流行的电力稳压器大多采用伺服电机带动炭刷移动调整电压。它具有整机效率高、输出波形好 ...…

查看全部问答>

自学成才-电子工程师-找工作 General Electronics Engineer

我从小就有很强的好奇心和动手能力,想知道每一件东西是如何工作的,对自然科学非常着迷。我还记得,小学时因为在课堂上用钉子和电线做电磁铁被批评;初中因为画电路图做收音机被取笑;高中被禁止做一种能开所有教室门锁的万能钥匙。我父亲是一名中 ...…

查看全部问答>

tcpmp 的问题.

tcpmp 好不好用,下了一个, 在EVC下怎么编译不了?请高手介绍一下经验.…

查看全部问答>

闹钟的问题

用IAppointment设定一个闹钟,时间到了没有\"日程提醒\" 再去设定另一个闹钟,上一个已过时间的闹钟就马上蹦出\"日程提醒\"来,这是怎么回事? “日程提醒”界面好好象是poom画的,我想显示自己的闹钟界面该怎么做? 我的poom组件还需要其它设置 ...…

查看全部问答>

wince下用GDI加载bmp图片的方法(能提供下可用的代码吗?)跪求

wince下用GDI加载bmp图片的方法(能提供下可用的代码吗?)跪求…

查看全部问答>

arm9 开发板

想自己学一下嵌入式方面的东西,在网上看了一下arm9 的板子,但不知道哪一块比较合适 2410或是2440的,请大家推荐一块,价格合理,性能比较好,适合初学者的。支持linux和wince。…

查看全部问答>

wince 连接sql server解决方案

我现在使用c++在pda下需要访问sql server,使用RDA.现在有个问题就是需要实时的和sql server通讯,使用RDA速度总是有2秒左右的延时。 不知道是RDA固有的问题,还是sql server设置的问题? 在PDA上真的没有好的解决方案?不能直接连接sql server?不 ...…

查看全部问答>

飞思卡尔单片机MC9RS08KA8的C程序的例子

高手求助一下,哪位有MC9RS08KA8的C程序例子呢?急用!小女子新学,好歹不知道从何下手!谢谢各位的帮忙!…

查看全部问答>

讨论下mma7455的一些参数含义

最近在看mma7444的资料,看到里面有俩个中断脚,init1和init2,还看到里面讲到脉冲测试,水平测试。不知道脉冲测试和水平测试指的是什么东西?还有为啥有俩个中断引脚?这俩个引脚如何使用?还有大家怎么处理x,y,z轴的校准,以及如何处理得到的数据 ...…

查看全部问答>

很全面的传感器应用电路

文档一共讲述14章的内容,基本涉及了现有常用传感器的电路,分享给大家····…

查看全部问答>