专用数码管显示电路(MAX7219)
专用数码管显示电路(MAX7219)
常用的专用数码管显示电路有8279和MAX7219,前者因近年来停产而很少人使用;后者因使用方便灵活,连线简单,不占用数据存储器空间,使用的人则越来越多。
MAX7219是八位串行共阴LED数码管动态扫描驱动电路,其峰值段电流可达40mA,最高串行扫描速率为10MHz,典型扫描速率为
1300Hz,仅使用单片机3个I/O口,即可完成对八位LED数码管的显示控制和驱动,
线路非常简单,控制方便,外围电路仅需一个电阻设定峰值段电流,同时可以通过软件设定其显示亮度;还可以通过级联,完成对多于八位的数码管的控制显示。值
得一提的是,当工作于关闭(SHUTDOWN)方式时,不仅单片机仍可对其传送数据和修改控制方式,而且芯片耗电仅为150uA。下图是MAX7219的
典型连接方法:
下面是MAX7219的C51源程序:下载源程序
#include <reg52.h>
#include <stdio.h>
typedef unsigned char uchar;
sbit DIN=P1^0;
sbit CLK=P1^1;
sbit LOAD=P1^2;
void send(uchar add,uchar dat) //发送16字节子函数
{ uchar ADS,i,j;
LOAD=0;
i=0;
while(i<16)
{
if(i<8)
{ADS=add;}
else {ADS=dat;}
for(j=8;j>=1;j--)
{
DIN=ADS&0x80;
ADS=ADS<<1;
CLK=1;
CLK=0;
}
i=i+8;
}
LOAD=1;
}
main()
{
send(0x0c,0x01); //初始化MAX7219
send(0x0b,0x07);
send(0x0a,0xf5);
send(0x09,0xff);
while(1)
{
send(0x01,0x81); //在八个数码管上显示1-8,带小数点显示
send(0x02,0x82);
send(0x03,0x83);
send(0x04,0x84);
send(0x05,0x85);
send(0x06,0x86);
send(0x07,0x86);
send(0x08,0x88);
}
}