显示驱动芯片MAX7219在单片机中的应用
显示驱动芯片MAX7219在单片机中的应用 显示
经验交流
TechnicalCommunications
《自动化技术与应用》2009年第28卷第10期
驱动芯片MAX7219在单片机中的应用
王喜军,姜军,孙福东,贾云婷
(辽河油田总机械厂自动控制研究所,辽宁盘锦124209) 摘要:阐述了新型显示驱动芯片MAx72l9的基本工作原理和软件
.该芯片功能强大,编程简单,控显可靠,可广泛用于
工业控制器等方面的数码显示驱动.并且运用P18高端系列的单片机进行程序测试.
:SPI;MAX7219;单片机关键词
中图分类号:TP216文献标识码:B文章编号:10037241(2009)10-0121—03 TheMAX7219DisplayDriverChipforMCU WANGXi-jun,JIANGJun,SUNFu?dong,JIAYun-ting
(TheAutomaticControlResearchInstituteof~aoHePetroleumExplorationBureauCeneral
MachineryPlantPardin124209China) Abstract:ThispaperintroducesthesoftwaredesignofthedisplaydriverchipMAX7219.Ana
pplicationexampleisalsopresented Keyword:SPI;MAX7219;Single—chip
1引言
MAX7219是美国MAXIM公司生产的串行输入/
输出共阴极显示驱动器.该芯片可直接驱动最多8位7
段数字LED显示器,或64个LED和条形图显示器.它
与单片机的接口非常简单,仅用3个引脚与单片机相应
端连接即可实现最高10MHz串行口.MAX7219的位
选方式独具特色,它允许用户选择多种译码方式译码选 位,而且,每个显示位都能个别寻址和刷新,而不需要重 写其他的显示位,这使得软件编程十分简单且灵活.另 外,它具有数字和模拟亮度控制以及与SPI,串行口相兼 容等特点.
2引脚
该芯片采用24脚DIP和sO封装,引脚说明见
l[3】. 3基本工作原理及使用方法
MAX7219与P18F258单片机连接采用三线串行接 13,应用电路如图1[11121.
对于MAX7219,串行数据是以l6位数据包的形式 收稿日期:2009—04—01
从Din脚串行输人,在CLK的每一个上升沿一位一位地 送人芯片内部I6位移位寄存器,而不管Dout脚的状态 如何.Load脚必须在第16个CLK上升沿出现的同时 或之后,但在下一个CLK上升沿之前变为高电平,否则 移入的数据将丢失.
表1MAX7219引脚说明表
引脚号名称功能
lD工N串行数据输A螭
2,3,5-8,10,11DIGO~DIG78位LED位选线.从共阴极LED中吸入 电流
4,9GND地绒(两个QID必须连接在一起)
12L0^D装裁数据输入
13cLK串行时钟输入
14—17.20SEG^匏GGDP7段马匿动和小鼓点驱动 l8ISFr通过一个电阻和vcc相连,设置段电流 l9V+电源电压+
24娜串行数据输出端,用于级连扩展
操作者只需编程发送l6位数据包,就能简单地操 作LED的位选以及段选,设置和改变MAX7219的工 作模式.
l6位数据包的数据格式如下【】:
自动化技术与应用》2009年第28卷第10期经验交流 其中:D7,DO:8位数据位,D7最高位;DO为最底位; D11,D8:4位地址位;D15,D12:无关位,通常全取1. 图1单片机与MAX7219电路连接示意图
MAX7219通过Dl1,D84位地址位译码,可寻址 14个内部寄存器,分别是8个LED显示位寄存器,5个 控制寄存器和1个空操作寄存器.LED显示寄存器由 内部8×8静态RAM构成,操作者可直接对位寄存器 进行个别寻址,以刷新和保持数据,只要V+超过2V (一般为+5V).
控制寄存器包括:译码模式,显示亮度调节,扫描限 制(选择扫描位数),关断和显示测试寄存器. MAX7219的驱动程序首先必须对5个控制寄存器 初始设置即初始化,各控制寄存器设置含义如下: 译码模式选择寄存器(地址=F9H);
MAX7219有两种译码方式:B译码方式和不译码方 式.当选择不译码时,8个数据为分别一一对应7个段 和小数点位;B译码方式是BCD译码,直接送数据就可 以显示.实际应用中可以按位设置选择B译码或是不 译码方式.
扫描限制寄存器:地址=FBH;
用于设置显示的LED个数(1,8),比如当设置为 0xX4时,LED0,5显示.
亮度调节寄存器:地址=FAH;
共有16级选择,用于LED显示亮度的强弱设置. 关断模式寄存器:地址=FCH;
有两种模式选择:一种是关断状态模式(DO=0);一 种是正常操作状态(D0=1),通常选择正常操作状态. 显示测试寄存器:地址=FFH;
有两种选择用于设置LED是测试状态还是正常操 作状态:当在测试状态时(D0=1)各位全应亮,一般选择 正常操作状态(DO=0).
4应用举例
结合典型应用电路,编程实现8位从左到右显示1 8.
程序流程图如下:
图2主程序执行流程图
驱动程序:
//管熟定义
#defineLOAD=P12;//MAX72l9片选12脚 #defineDIN=P1l;//MAX72l9串行数据1脚 #defineCLK=P10;//MAX7219串行时钟l3脚 //寄存器宏定义
#defineDECODE—MODE0x09
//译码控制寄存器
#defineINTENSITY0x0A //亮度控制寄存器
#defineSCANLIMIT0x0B //扫描界限寄存器
#defineSHUTDOWN0x0C //关断模式寄存器
#defineDISPLAYTEST0x0F //测试控制寄存器
//
声明
voidWrite7219(unsignedcharaddress,unsigned
chardat);
voidInitial(void); //地址,数据发送子程序
voidWrite7219(unsignedcharaddress,unsigned
chardat)
经验交流
TechnicalGommunications "自动化技术与应用》2009年第28卷第10期 unsignedchari;
LOAD=0;//拉低片选线,选中器件
//发送地址
for(i=0;i<8;+)//移位循环8次
CLK=O;//清零时钟总线
DIN=(bit)(address&0x80);//每次取高字节 address<<=1;//左移一位
CLK=1;//时钟上升沿,发送地址
}
//发送数据
for(i=O;i<8;i++) {
CLK=0;
DIN(bit)(dat&0x80); dat<<l;
CLK=I;
//时钟上升沿,发送数据
}
LOAD=1;//发送结束,上升沿锁存数据
}
//MAX7219初始化,设置MAX7219内部的控制寄 存器
voidInitial(void) {
Write7219(SHUTDOWN,0x01); //开启正常工作模式(0xX1)
write72l9(DIsPLAY—_TEsT,0x00); //选择工作模式(0xX0)
Write7219(DECODE—MODE,0xff); //选用全译码模式
Write72l9(SCAN—LIMIT,0x07); //8只LED全用
write72l9(INTENSITY,Ox04);
//设置初始亮度
}
测试程序:
//单片机P18F258初始化
#include<p18f258.h> voidinitial()
{
ADCON1=0X07:
TRISC=0x00;
INTCON=0x00:
SSPCON1=0x30:
SSPSTAT=0xC0;
PIRl=0:
}
//主函数
voidmain(void)
{
unsignedchari;
Initial();
initial();
while(1)
{
//MAx7219初始化
//单片机P18F258初始化
for(i=l;i<9;i++)
J1
write7219(i,i);//数码管显示1-8
lJ
5结束语
在工业控制系统日益向多功能化,智能化,小型化发 展的今天,带有串行接口8位LED控制驱动器MAX7219 由于其性价比高,使用方便,深受用户青睐.笔者通过该 电路设计,提高了单片机的使用效率,降低了成本,为用户 更好的提供可靠地设备运行信息,方便了用户. 参考文献:
【1】刘和平.PICl8Fxxx单片机原理及接口程序设计[M].北 京航空航天航空大学出版.2004.
【2]李学海.PIC单片机实用教程一提高篇(第2版)[M】.北京 航空航天航空大学出版.2007.
【3]朱强.串行8位LED显示驱动器MAX7219及其应用[ 器件与产品电子报.2004,1l,(11):14. 作者简介:王喜军(1984一),男,助理工程师,研究方向:智能 控制.