前言
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:无定义。
可寻址的数据寄存器和控制寄存器
(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可以驱动点阵显示你想显示的东西。用心创造,创造不易,感谢支持!