MAX7219共阴极LED驱动器程序.docx
- 文档编号:27497005
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:9
- 大小:108.83KB
MAX7219共阴极LED驱动器程序.docx
《MAX7219共阴极LED驱动器程序.docx》由会员分享,可在线阅读,更多相关《MAX7219共阴极LED驱动器程序.docx(9页珍藏版)》请在冰豆网上搜索。
MAX7219共阴极LED驱动器程序
MAX7219共阴极LED驱动器程序
MAX7219共阴极LED数码管显示驱动
(一)、MAX7219
MAX7219是一种串入、并出的共阴极LED数码管显示驱动器,每片可驱动8位LED数码管显示,与单片机的接口只需3根线,内带BCD译码器,及显示测试、移位、锁存器等,输出电流达40mA,外围只需一只亮度调整电阻。
MAX7219引脚图
1、引脚功能说明
DIN:
串行数据输入端,CLK的上升沿时数据被载入内部16位移位寄存器中
CLK:
串行时钟输入端,最高工作频率可达10MHz
LOAD:
片选端,低电平接收DIN端的数据,高电平时数据被所存
DIG0~7:
LED的位控制端
A~DP:
LED的端控制端
01HLED测试状态,即LED全亮
A、8位LED显示数据寄存器地址:
01H~08H
对这些寄存器赋值(即需显示的内容),就会在对应的1~8位LED数码管上显示出来
2、使用注意事项
由于电源中杂波或附近的电磁等干扰信号,使MAX7219在上电后不显示或乱显示;为了消除这种现象
应在MAX7219的VCC端与地之间接一只104pf的瓷片电容,在LOAD端于地之间接一只10K的电阻。
最号还在电源与MAX7219的VCC端之间串一只去高频的电感。
而在电源方面,最好使用变压器供电,而不要用开关电源供电。
加在DIN引脚上的串行数据必须在LOAD脚为低电平时,以每2字节一次,在SCK脚信号的每个上升沿移入1位数据,且高位在前低位在后,然后在LOAD信号的上升沿MAX7219所存数据。
LED数码管引脚图如下:
显示段码表如下:
D7
D6
D5
D4
D3
D2
D1
D0
十六进制值
显示内容
dp
a
b
c
d
e
f
g
0
1
1
1
1
1
1
0
0x7e
0
0
0
1
1
0
0
0
0
0x30
1
0
1
1
0
1
1
0
1
0x6d
2
┊
0
1
0
0
1
1
1
1
0x4f
E
0
1
0
0
0
1
1
1
0x47
F
需要显示的段应为“1”,不显示的则为“0”
原理图如下:
C源程序如下:
#include
sbitCLK=P1^7;//MAX7219时钟信号线
sbitLD=P1^6;//数据加载线
sbitDIN=P1^5;//数据输入线
unsignedcharcodedisp_table[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,
0x77,0x1f,0x4e,0x3d,0x01,0x00};//非译码方式时的共阴数码管显示编码,0~9,E,o,r,d,-,息灭
voidw_max7219(unsignedcharaddr,unsignedcharwdata);//向MAX7219写数据函数声明
voidinit_max7219();//MAX7219初始化函数声明
voidtimer_ms(unsignedchartim);//毫秒级延时函数声明
/******************************************************************************************
函数名称:
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初始化
入口参数:
出口参数:
其它:
**********************************************************************************************/
voidinit_max7219()
{
w_max7219(0x0a,0x07);//显示亮度,取值范围0~f
w_max7219(0x0b,0x07);//8位扫描显示,取值范围0x01~0x07
w_max7219(0x09,0x00);//译码方式,0x00为不译码,0xff为译码
w_max7219(0x0c,0x01);//操作方式,0x00为低功耗模式,0x01为正常操作模式
w_max7219(0x0f,0x00);//显示状态,0x00为正常显示,0x01为显示测试
timer_ms
(2);
}
/*********************************************************************************************
函数名称:
w_max7219
函数功能:
向MAX7219写入数据
入口参数:
addrMAX7219内部寄存器地址,wdata写入内部寄存器的操作数值
出口参数:
其它:
*********************************************************************************************/
voidw_max7219(unsignedcharaddr,unsignedcharwdata)
{
unsignedchartemp,i=1,j,k;
LD=0;
while(i<16)
{
if(i<8)temp=addr;//先写入MAX7219内部寄存器地址,再向内部寄存器写入操作数值
elsetemp=wdata;
for(j=0;j<8;j++)
{
CLK=0;
if((temp&0x80)==0x80)DIN=1;//先发送数据的最高位
elseDIN=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
出口参数:
其它:
------------------------------------------------------------------------------------------*/
voidtimer_ms(unsignedchartim)
{
unsignedchari;
while(tim--)
{
for(i=0;i<200;i++);//延时1ms
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MAX7219 阴极 LED 驱动器 程序