当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]1、MAX7219简介MAX7219是一种串入、并出的共阴极LED数码管显示驱动器,每片可驱动8位LED数码管显示,与单片机的接口只需3根线,内带BCD译码器,及显示测试、移位、锁存器等

1、MAX7219简介

MAX7219是一种串入、并出的共阴极LED数码管显示驱动器,每片可驱动8位LED数码管显示,与单片机的接口只需3根线,内带BCD译码器,及显示测试、移位、锁存器等,输出电流达40mA,外围只需一只亮度调整电阻。

 


MAX7219引脚图

2、引脚功能说明

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数码管上显示出来

由于电源中杂波或附近的电磁等干扰信号,使MAX7219在上电后不显示或乱显示;为了消除这种现象应在MAX7219的VCC端与地之间接一只104pf的瓷片电容,在LOAD端于地之间接一只10K的电阻。最号还在电源与MAX7219的VCC端之间串一只去高频的电感。

而在电源方面,最好使用变压器供电,而不要用开关电源供电。

加在DIN引脚上的串行数据必须在LOAD脚为低电平时,以每2字节一次,在SCK脚信号的每个上升沿移入1位数据,且高位在前低位在后,然后在LOAD信号的上升沿MAX7219所存数据。

3、LED数码管引脚图如下:

 


 


显示段码表如下:

 


4、原理图

 


5、C源程序

#include《reg51.h》

sbit CLK=P1^7; //MAX7219时钟信号线

sbit LD=P1^6; //数据加载线

sbit DIN=P1^5; //数据输入线

unsigned char code disp_table[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,

0x77,0x1f,0x4e,0x3d,0x01,0x00}; //非译码方式时的共阴数码管显示编码,0~9,E,o,r,d,-,息灭

void w_max7219(unsigned char addr,unsigned char wdata); //向MAX7219写数据函数声明

void init_max7219(); //MAX7219初始化函数声明

void TImer_ms(unsigned char TIm); //毫秒级延时函数声明

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

函数名称:main

函数说明:主函数

入口参数:

出口参数:

其 它:

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

main()

{

init_max7219(); //MAX7219初始化函数

w_max7219(0x01,disp_table[1]); //向MAX7219第一位寄存器写显示数据1

w_max7219(0x02,disp_table[2]); //向MAX7219第二位寄存器写显示数据2

w_max7219(0x03,disp_table[3]); //向MAX7219第三位寄存器写显示数据3

w_max7219(0x04,disp_table[4]); //向MAX7219第四位寄存器写显示数据4

w_max7219(0x05,disp_table[5]); //向MAX7219第五位寄存器写显示数据5

w_max7219(0x06,disp_table[6]); //向MAX7219第六位寄存器写显示数据6

w_max7219(0x07,disp_table[7]); //向MAX7219第七位寄存器写显示数据7

w_max7219(0x08,disp_table[8]); //向MAX7219第八位寄存器写显示数据8

while(1);

}

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

函数名称:init_max7219

函数功能:MAX7219初始化

入口参数:

出口参数:

其 它:

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

void init_max7219()

{

w_max7219(0x0a,0x07); //显示亮度,取值范围0~f

w_max7219(0x0b,0x07); //8位扫描显示,取值范围0x01~0x07

w_max7219(0x09,0x00); //译码方式,0x00为不译码,0xff为译码[!--empirenews.page--]

w_max7219(0x0c,0x01); //操作方式,0x00为低功耗模式,0x01为正常操作模式

w_max7219(0x0f,0x00); //显示状态,0x00为正常显示,0x01为显示测试

TImer_ms(2);

}

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

函数名称:w_max7219

函数功能:向MAX7219写入数据

入口参数:addr MAX7219内部寄存器地址,wdata 写入内部寄存器的操作数值

出口参数:

其 它:

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

void w_max7219(unsigned char addr,unsigned char wdata)

{

unsigned char temp,i=1,j,k;

LD=0;

while(i《16)

{

if(i《8) temp=addr; //先写入MAX7219内部寄存器地址,再向内部寄存器写入操作数值

else temp=wdata;

for(j=0;j《8;j++)

{

CLK=0;

if((temp&0x80)==0x80) DIN=1; //先发送数据的最高位

else DIN=0;

for(k=5;k》0;k--); //时钟频率高的单片机需曾加延时时间,此处为12MHz

CLK=1;

for(k=5;k》0;k--);

temp《《=1;

}

i+=8;

}

LD=1;

}

/*-------------------------------------------------------------------------------------------

函数名称: TImer_ms

函数说明: 1ms延时子程序

入口参数: tim为接收主调传来需延时的毫秒数,取值范围1~256,定时时间1~256ms

出口参数:

其 它:

------------------------------------------------------------------------------------------*/

void timer_ms(unsigned char tim)

{

unsigned char i;

while(tim--)

{

for(i=0;i《200;i++); //延时1ms

}

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

中国 上海,2025年8月28日——全球领先的智能传感和发射器解决方案供应商艾迈斯欧司朗(SIX:AMS)今日宣布,其全新UV-C LED在辐射灭菌领域取得重大技术突破,并获得评估认可。

关键字: LED 发射器 光电半导体

在LED照明技术向高能效、低电磁干扰(EMI)方向演进的过程中,电流模式控制与动态负载调整算法的协同优化成为突破技术瓶颈的核心路径。本文将从控制架构创新、动态负载补偿机制及EMI抑制策略三个维度,揭示新一代LED驱动器的...

关键字: LED 动态负载调整算法 EMI

在全球倡导节能减排的大背景下,家电产品的能耗问题日益受到关注。电视机作为家庭中使用频率较高的电器之一,其能耗的降低对于节约能源和减少碳排放具有重要意义。LED 驱动技术作为影响电视机能耗的关键因素,正不断发展和创新,为实...

关键字: 驱动技术 能耗 LED

LED是一种能发光的半导体电子元件,这种电子元件早期只能发出低光度的红光,随着技术的不断进步,现在已发展到能发出可见光、红外线及紫外线的程度,光度也有了很大的提高。

关键字: LED

PCB设计在EMI抑制中起着关键作用。合理的布局布线能够有效减少信号的电磁辐射和相互干扰。首先,应将功率电路和控制电路进行物理隔离,避免功率电路中的大电流、高电压信号对控制电路造成干扰。功率器件和电感等高频器件应尽量靠近...

关键字: LED 开关电源

为确保太阳能路灯的稳定工作,建议使用硅酮密封将太阳能路灯组件的接线固定在支架上。在连接路灯部件的线路时,必须遵循正确的顺序,以防止正负连接颠倒导致的短路问题。此外,太阳能路灯灯杆底部的接线应采用适当的密封装置或硅胶进行密...

关键字: LED 路灯

在我们家,WTW已经运行了14年了。它是一种非连接(不在线)的通风机,从房子外面吸收新鲜空气,经过过滤后空运到房子里。新鲜的环境空气是用从房子里大多数房间取出的空气预热的。再加热的能量是通过热交换器从流出的“脏”空气中获...

关键字: Zigbee LED 传感器

中国 上海,2025年8月12日——全球领先的智能传感和发射器解决方案供应商艾迈斯欧司朗(SIX:AMS)今日宣布,使用新一代OSTAR™ Projection Power LED为紧凑型投影系统乃至未来的抬头显示器(H...

关键字: 显示器 LED 座舱

Aug. 6, 2025 ---- 根据TrendForce集邦咨询最新调查,因国际形势变化以及中国相关政策的推动,2025年上半年全球电视品牌出货量达9,250万台,年增2%。由于品牌普遍提前出货,下半年旺季可能面临压...

关键字: LED OLED 电视

艾迈斯欧司朗新一代中功率LED为原始设备制造商(OEM)提供面向未来的超高效、长寿命及节能的解决方案——成为灯槽、线条灯与筒灯等商业照明装置的最优选择。除本次新品外,艾迈斯欧司朗还推出另一系列新款LED,实现超高光效,完...

关键字: LED 发射器 嵌入式
关闭