基于MAX7219的LED显示驱动设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MAX7219的LED显示驱动设计
沈锐
【摘要】实现了一种驱动LED数码管动态显示的方案。
在分析数码管结构及显示原理的基础上,设计了驱动8位数码管的硬件电路,提出了自定义编码方式,在此基础上分析了数据传输过程,并设计了控制程序,实现了数码管的动态显示。
【期刊名称】《甘肃科技纵横》
【年(卷),期】2012(041)006
【总页数】3页(P39-41)
【关键词】LED数码管;自定义编码;动态显示
【作者】沈锐
【作者单位】中船重工第七一口研究所,湖北宜昌443003
【正文语种】中文
【中图分类】TP273
LED(Light Emitting Diode)数码管无论在工业生产、交通运输、还是仪器仪表上都有广泛的用途,不仅可以用来显示测量值,也可以用来表示系统的各种状态。
1 LED数码管显示原理[1]
LED数码管(以下简称数码管)按各发光段的串并联方式分为串联式和并联式,由于串联式数码管控制起来较为复杂,且目前没有专用芯片可直接应用,只有通过分立开关器件或多路开关芯片等实现译码功能,因此较少使用。
而并联式数码管则
控制方式相对简单,且可靠性更高,工程上应用的比较多。
并联式数码管按其内部LED公共端的极性分为共阴极数码管和共阳极数码管,实际中常用的LED数码管
是并联式共阴极七段数码管,数码管各段编号如图1,结构原理如图2所示。
本文中VCC为5VDC。
共阳极数码管的控制方式与共阴极式类似,只是在决定哪一段
被点亮时给出的信号不同。
为方便起见,本文仅讨论并联式共阴极七段数码管,下文中简称数码管。
图1 数码管各段编号
图2 数码管结构原理
由图2可看出,每个数码段通过限流电阻和译码开关(译码开关泛指能起到开关
作用的器件,如三级管、MOSFET、普通开关等)相互并联,然后与电源连接,
由译码电路控制译码开关的通断。
译码开关导通表示与该译码开关相联的数码段被点亮,译码开关关断表示与该译码开关相联的数码段熄灭,不同的数码段按规律点亮和熄灭就可显示“0”~“9”,共10个阿拉伯数字以及部分英文字母。
比如在图1共阳极数码管中通过译码电路控制译码开关 Sa、Sf、Sc、Sd 闭合时,a、f、c、d四段被点亮,数码管显示数字“5”,译码开关 Sb、Sc、Se、Sf、Sg 闭合时,b、c、e、f、g 五段被点亮,数码管显示大写字母“H”。
2 驱动方案设计
数码管驱动芯片多种多样,max7219是美信(Maxim)公司推出的一款集成度较高的串行输入/输出的共阴极数码管驱动器,每片可驱动8位7段加小数点的共阴极数码管,可以多片级联,与CPU的连接方式为SPI或3个普通I/O口,这一点在工程应用上的优点十分明显,既可以节省系统的接口资源,又可以使控制简单化。
max7219片内集成有移位寄存器、B码译码器、多通道扫描电路、段和位驱动器
和5个控制寄存器。
数字寄存器由一个8×8双端口SRAM实现,用来存放点亮对应LED的具体内容,可直接寻址。
5个控制寄存器分别为:译码模式寄存器、亮
度寄存器、扫描限寄存器、关断寄存器、显示模式寄存器。
用户只需对控制寄存器编程就可设定译码方式、数码管个数、显示亮度、关闭、测试等功能。
允许每个数码管选择B译码或不译码。
只需外接一个电阻就可为所有的LED提供段电流。
本方案中 max7219的控制信号来自dsPIC30f6014A[2],整个系统的供电电源为5VDC,电路原理图如图3所示。
图3 驱动电路原理图
DOUT为dsPIC30f6014A输出的串行数据,LOAD为加载信号,CLK是时钟信号,SEG A~SEG G、SEG DP分别对应共阴极数码管的8个控制开关,DP是小
数点位的控制开关,这8位均为高电平有效,即SEG信号为高电平时,对应的段
被点亮。
每一个数码管都有4个位控制信号,分别是DIG0~DIG3。
数码管被点
亮时,电流从DIGx流出,从SEGx流入,电流大小在视觉上反映为数码管的亮度,在Iset与VCC之间接一电阻可以为LED段提供峰值电流,以调整数码管的亮度。
电阻推荐值位略大于9.3 kΩ,本文中值取10kΩ。
3 软件设计
如图3,dsPIC30f6014A 输出 DOUT、LOAD、CLK 信号直接控制数码管的显示
方式及内容,每位数据通过DIN引脚在CLK信号的上升沿依次移入max7219内部的移位寄存器,在加载信号LOAD的控制下数据被锁存。
在LOAD的上升沿,最后移入移位寄存器的16位串行数据被锁存到数据或控制寄存器中。
DIN管脚输入的数据有两种类型:写入控制寄存器的数据和用来显示的数据。
每帧数据包含
16bits,数据格式如表1所示。
表1 max7219数据格式D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0× × × × 地址 MSB 数据 LSB
由表1看出,一帧数据由D0~D1 5位组成,D0~D7为数据位,D8~D11为地址位,D12~D15保留不用。
数据发送顺序是先发高位后发低位[3]。
软件首先要对max7219内部寄存器进行配置,包括译码模式寄存器、亮度寄存器、扫描限寄存器、关断寄存器、显示模式寄存器,这5个寄存器的地址分别是0Xx9、0xXA、0xXB、0xXC、0xXF,X 为无关位,译码模式采用自定义的译码方式,这
样可以增加数码管显示的字符种类。
因此,应该最先配置译码模式寄存器,即发送0x0900。
自定义译码表如表2,表中十六进制码的X位取决于地址位。
D7位控
制小数点,D7=1则数码管对应位上的小数点被点亮。
通过该译码方式数码管可以显示数字“0”~“9”、部分英文字母、符号,共 24 种字符。
表2 自定义译码表字符寄存器低八位数据 SEG A~SEG G及DP段编码十六进制码D7 D6 D5 D4 D3 D2 D1 D0 DP A B C D E F G 0 1 1 1 1 1 1
0 1 1 1 1 1 1 0 0xXX7E 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0xXX30 2 1
1 0 1 1 0 1 1 1 0 1 1 0 1 0xXX6D 3 1 1 1 1 0 0 1 1 1 1 1 0 0
1 0xXX79 4 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0xXX33 5 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0xXX5B 6 1 0 1 1 1 1 1 1 0 1 1 1 1 1 0xXX5F 7 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0xXX70 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0xXX7F 9 1 1 1 1 0 1 1 1 1 1 1 0 1 1 0xXX70
表2 自定义译码表(续)字符寄存器低八位数据 SEG A~SEGG及DP段编
码十六进制码D7 D6 D5 D4 D3 D2 D1 D0 DP A B C D E F G A 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0xXX77 b 0 0 1 1 1 1 1 0 0 1 1 1 1 1
0xXX1F C 1 0 0 1 1 1 0 1 0 0 1 1 1 0 0xXX4E d 0 1 1 1 1 0 1 0
1 1 1 1 0 1 0xXX3D E 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0xXX4F F 1 0
0 0 1 1 1 1 0 0 0 1 1 1 0xXX47 H 0 1 1 0 1 1 1 0 1 1 0 1 1 1
0xXX37 L 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0xXX0E n 0 0 1 0 1 1 1 0 0 1 0 1 1 1 0xXX15 P 1 1 0 0 1 1 1 1 1 0 0 1 1 1 0xXX67 U 0 1 1
1 1 1 0 0 1 1 1 1 1 0 0xXX3E v 0 0 1 1 1 0 0 0 0 1 1 1 0 0
0xXX1C y 0 1 0 0 1 1 1 0 1 0 0 1 1 1 0xXX27-0 0 0 0 0 0 1 0 0 0 0 0 0 1 0xXX01
亮度寄存器与max7219的Iset管脚和VCC之间接的电阻共同调整数码管亮度。
扫描限寄存器配置数码管的个数,本文应配置为显示8位。
关断寄存器、显示模
式寄存器主要在系统上电后起测试作用,即先让包括小数点在内的数码管各段全亮,0.5s后全熄灭,闪烁3次,检测数码管是否工作正常。
寄存器配置完成后即可向max7219发送要显示的字符信息,如要使数码管的第一位显示数字“5”,则应该循环发送数据0x015B。
由于数码管一般用来配合系统工作,显示某些即时信息,因此可以通过中断的方式刷新数码管显示内容。
中断子程序流程图如图4所示,发送数据子程序的流程图
如图5所示[4]。
其中DATA为要发送的16bits数据。
图4 中断程序流程图
图5 发送子程序流程图
除了发送给控制寄存器的数据外,当发送供显示的数据时,并不是发送一遍就结束了,而必须按一定的周期循环发送。
这是因为人眼具有视觉暂留现象,即在数码管熄灭后的0.1-0.4s之内,在人眼看来仍然是点亮的。
而控制系统中16bits数据刷新一遍的时间为us级,因此可以通过循环发送需显示的数据DATA,达到数码管动态显示的目的。
当要显示的内容发生变化时,只需更新DATA的内容,再循环
发送数据DATA即可,这也意味着软件中变量DATA应该定义为16bits的全局变量。
4 结束语
本文给出的通过单片机普通I/O口动态控制数码管显示的系统方案,克服了传统
方案I/O口占用数量多及硬件电路复杂的问题,具有结构及控制简单、性能可靠、成本低廉等优点,可广泛应用于各种智能化仪器仪表、工业控制现场等,具有较高
的工程应用价值。
参考文献:
[1]王世伟,杜运峰,蒋兆远.可在系统编程的智能键盘和数码管显示系统[J].电子技术应用,2006,3.
[2]Microchip Technology Inc.dsPIC30F系列参考手册.[Z].
[3]施红琴.可编程数码管/键盘串行接口芯片HD7279A的原理与应用[J].国外电子元器件,2004,6.
[4]杨文龙.单片机原理及应用[M].西安:西安电子科技大学出版社,1993.。