单片机之MAX7219芯片使用篇

单片机之MAX7219芯片使用篇,第1张

前言

MAX7219/MAX7221是一种集成化的串行输入/输出,共阴极显示驱动器等等,其中包括一个片上的B型BCD编码器,多路扫描回路,段字驱动器,还有一个8X8的静态RAM,用来储存每一个数据。

MAX7219和单片机之间有三条引线(DIN,CLK,CS/LOAD)连接,采用16位数据串行移位接收方式,其中,单片机将16位二进制数一位一位发送到DIN端,在CLK时钟信号上升沿之前准备就绪,CLK的每个上升沿将一位数据送到MAX7219内的移位寄存器,当传送完毕,在CS/LOAD端口引脚信号上升沿,将16位数据装入MAX7219内。

MAX7219引脚说明

MAX7219是24引脚芯片看图:

DIN:串行数据输入端;DIG0-DIG7:LED位线;CS/LOAD:数据装载信号输入端;

SEGA-SEGG,SEGp:段码输入端;ISET:硬件亮度调节端;DOUT:串行数据输出端;

CLK:移位脉冲输入端;V+:电源;GND:地;                                                   

串行数据格式

16位地址/数据移位寄存器接收串行数据,实现串/并变换;

16位数据含义如下:(看图2-1)

D7-D0:写入内部RAM和功能寄存器数据。

D8-D11:内部RAM和功能寄存器。

D12-D15:无定义。

图2-1
 可寻址的数据寄存器和控制寄存器

(1)内部RAM(地址01-08H)分别对应DIG0-DIG7。

(2)译码方式寄存器(地址09H)当高电平时,选择BCD-B译码方式,当低电平时选择不译码方式,具体看图:

 (3)亮度寄存器(地址0AH)亮度寄存器中的D0-D3位可以控制LED显示器的亮度。具体看图:

 (4)扫描界限寄存器(地址0BH)该寄存器中D0-D3位数据设定值为0-7H,设定值表示显示器动态扫描个数位1-8.具体看图:

(5)停机寄存器(地址0CH)当D0=0时,MAX7219处于停机状态;当D0=1时,MAX7219处于正常工作状态。具体看图:

(6)显示测试寄存器(地址0FH)当D0=0时,MAX7219按设定模式正常工作;D0=1时,MAX7219处于测试状态。在该状态下,不管MAX7219处于什么模式,全部LED将按最大亮度显示。具体看图:

 MAX7219初始化代码编写 MAX7219写入字节程序:
void Write_Max7219_byte(uchar DATA)
{
    uchar i;
	Max7219_pinCS=0;
	for(i=8;i>=1;i--)
	{
	    Max7219_pinCLK=0;
		Max7219_pinDIN=DATA&0x80;
		DATA=DATA<<1;
		Max7219_pinCLK=1;
	}

}

 

//sbit Max7219_pinCLK=P2^2;
//sbit Max7219_pinDIN=P2^0;
//sbit Max7219_pinCS=P2^1;
 MAX7219写入数据程序:
void Write_Max7219(uchar address,uchar dat)
{
    Max7219_pinCS=0;
	Write_Max7219_byte(address); //写入地址,LED的编号;
	Write_Max7219_byte(dat);   //写入数据,LED显示数字;
	Max7219_pinCS=1;
}
 MAX7219初始化程序:
void Init_Max7219(void)
{
	Write_Max7219(0x09,0x00);  //译码方式为BCD码
	Write_Max7219(0x0a,0x03);  //亮度
	Write_Max7219(0x0b,0x07); //扫描界限;8个LED显示
	Write_Max7219(0x0c,0x01); // 掉电模式为0.普通模式为1;
	Write_Max7219(0x0f,0x00); //显示测试为一;测试结束,正常显示为0;
}
总结:

只要看着代码对照着上图表格,就容易理解,上手,用MAX7219可以驱动点阵显示你想显示的东西。用心创造,创造不易,感谢支持!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1295405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存