MAX7219共阴极LED驱动器程序.docx

上传人:b****1 文档编号:15191652 上传时间:2023-07-02 格式:DOCX 页数:9 大小:108.83KB
下载 相关 举报
MAX7219共阴极LED驱动器程序.docx_第1页
第1页 / 共9页
MAX7219共阴极LED驱动器程序.docx_第2页
第2页 / 共9页
MAX7219共阴极LED驱动器程序.docx_第3页
第3页 / 共9页
MAX7219共阴极LED驱动器程序.docx_第4页
第4页 / 共9页
MAX7219共阴极LED驱动器程序.docx_第5页
第5页 / 共9页
MAX7219共阴极LED驱动器程序.docx_第6页
第6页 / 共9页
MAX7219共阴极LED驱动器程序.docx_第7页
第7页 / 共9页
MAX7219共阴极LED驱动器程序.docx_第8页
第8页 / 共9页
MAX7219共阴极LED驱动器程序.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MAX7219共阴极LED驱动器程序.docx

《MAX7219共阴极LED驱动器程序.docx》由会员分享,可在线阅读,更多相关《MAX7219共阴极LED驱动器程序.docx(9页珍藏版)》请在冰点文库上搜索。

MAX7219共阴极LED驱动器程序.docx

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

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2