摘 要:TM1620是一款LED数码管驱动专用芯片,该芯片所实现的多位数码管驱动方案与传统方案相比,具有占用单片机IO口少、电路简洁、辉度多级可调等优点。现阶段,介绍TM1620的文献还不多,为了便于设计者更好地开展对该芯片的学习和应用,本文较为详细地说明了这款芯片驱动共阴极数码管的电路方案、芯片指令和程序写法。
关键词:TM1620;数码管;LED;驱动芯片
中图分类号:TN141.6 文献标识码:A 文章编号:2096-4706(2019)23-0042-02
Application of LED Digital Tube Driver Chip TM1620
WANG Shen
(Fujian Polytechnic School,Fuzhou 350002,China)
Abstract:TM1620 is a special chip for driving LED digital tube. Compared with the traditional scheme,the scheme of driving digital tube realized by TM1620 has many advantages,such as less IO port,simple circuit and multi-level adjustable brightness. At this stage,there are few papers about TM1620. In order to facilitate designers to study and apply TM1620 better,this paper describes in detail the circuit scheme,instructions and function code of driving common cathode digital tube by TM1620.
Keywords:TM1620;digital tube;LED;driver chip
0 引 言
在电子产品设计中,数码管是一种常用的显示器件,只要点亮特定的几个LED段,它就能够显示出表示信息的数字或符号[1]。数码管要正常显示,驱动电路是不可或缺的,它起到了连接单片机与数码管的桥梁作用。以驱动四位八段数码管为例,传统的驱动电路设计方案主要有以下三种。
(1)只使用分立元件构成:以单片机的8个IO口经限流电阻接到数码管的段引脚(A~DP),用另外4个IO口经电阻、三极管控制数码管的位选引脚。该方案要占用单片机的12个IO口,而使用较多的分立元件不利于减小PCB(印制电路板)的使用面积。
(2)使用74HC573构成[2]:74HC573是八路“并行输
入,并行输出”的锁存器芯片。以单片机的8个IO口先后经一片74HC573、限流电阻接到数码管的段引脚(A~ DP),用另外4个IO口经另一片74HC573控制数码管的位选引脚。该方案并未改善对单片机IO口的占用情况,只是减少了分立元件的使用数量。
(3)使用74HC595构成:74HC595是“串行输入,八路并行输出”的移位寄存器芯片。以单片机的4个IO口分别连接74HC595的1个串行输入引脚和3个控制引脚,74HC595的八路并行输出端经限流电阻接到数码管的段引脚,用另外4个IO口经电阻、三极管(或用一片74HC573)控制数码管的位选引脚。该方案一定程度上改善了对单片机IO口的占用情况(占用8个),但仍需使用为数不少的分立元件。
现如今,许多款单片机产品的IO口几乎都被“复用”了——不仅可以作为通用IO口使用,还可作为特殊功能引脚使用。因此,为了驱动数码管而占用过多的IO口并不是电子产品设计者所乐见的情况,他们有时还为单片机的IO口不够分配而苦恼。而TM1620正可以为他们提供一种更优的方案,实现对数码管显示的可靠驱动。
1 TM1620的性能特点
TM1620是深圳天微电子公司的一款LED数码管驱动专用芯片,采用CMOS工艺,封装形式为SOP20,可工作于5V或3.3V的典型电压环境(若是驱动蓝光数码管,则应选5V来供电),稳定性好,抗干扰能力强。TM1620有三种显示模式可供灵活选择——十段四位、九段五位或八段六位,且辉度八级可调;内部自带LED驱动电路,能够自动进行多位数码管的动态扫描,这样就不再需要由单片机对数码管的位选进行控制。
2 TM1620驱动四位共阴极数码管的电路方案
以单片机的三个IO口分别接到TM1620的DIN引脚(串行数据输入)、CLK引脚(时钟输入)和STB引脚(片选输入);TM1620的SEG1~SEG8输出引脚直接对应接到数码管的A~DP引脚,GRID1~GRID4输出引脚直接对应接到数码管的四个位选引脚,SEG13/GRID6、SEG14/GRID5这两个段/位复用输出引脚在此不使用,悬空即可。可见,用TM1620作为驱动芯片,只需占用单片机很少的IO口(3个),从而极大地改善了对单片机IO口的占用情况,这样就可以留出更多的IO口用于系统其他功能的扩展。
3 TM1620的指令与驱动程序
3.1 TM1620的指令说明
正确理解芯片的使用方法,在此基础上编写出行之有效的驱动程序,这是实现驱动功能的必要前提。TM1620按字节接收指令或数据;设计者通过单片机,向TM1620写入指令,从而实现对显示模式、工作状态、显示辉度等的设置;而向TM1620写入数据,则可以实现数字、符号等的显示效果。TM1620以“在STB下降沿后,DIN输入的第一个字节”作为指令,该字节的Bit7、Bit6用于區分不同的指令——“00”为显示模式指令,“01”为数据指令,“10”为显示控制指令,“11”为地址设置指令。详述如下:
(1)显示模式指令:用于设置所驱动数码管的段数和位数,写入“0x00”设为十段四位,写入“0x01”设为九段五位,写入“0x02”设为八段六位;
(2)数据指令:用于设置与写入显示数据有关的地址增加模式等。例如,写入“0x40”设为以“普通、显存地址自加”模式写显示数据到显存,写入“0x44”设为以“普通、显存地址固定”模式写显示数据到显存。在地址固定模式下,必须按照“先设置显存地址,后写入显示数据”的步骤控制各位数码管的显示;
(3)显示控制指令:TM1620内部自带了一个脉动信号发生器,由写入的显示控制指令对其工作状态、输出脉冲信号的占空比进行设置,从而实现开/关显示和辉度调节。该指令的Bit3是开/关显示的设置位,Bit2~Bit0是显示辉度的设置位。例如,写入“0x8F”对应“开显示,辉度最高”的显示效果;
(4)地址设置指令:用于设置显存的当前地址。TM1 620显存的有效地址有12字节(0xC0~0xCB),上电后默认设在0xC0。
3.2 驱动程序的写法
C语言中的一个重要观念是:每个程序都应分割成许多小的函数[3],从而使程序的每一部分都较易于完成,也便于后续的管理和维护。因此,在对TM1620的驱动程序进行设计时,可将其分为SendByte、SendCmd、Display三个函数,分别实现“向TM1620写入一字节”“向TM1620写入一个指令”和“数码管显示”三个功能。这里主要说明SendCmd函数和Display函数的写法。
3.2.1 SendCmd 函数
void SendCmd(u8 command)
{
TM1620_STB=1;
Delay();
TM1620_STB=0;//完成一次输入STB的下降沿
SendByte(command);
}
3.2.2 Display函数
void Display()
{
u8 i;
SendCmd(0x02);//设为八段六位模式
SendCmd(0x40);//设为普通,地址自加模式
SendCmd(0xC0);//设置显存起始地址
for(i=0;i<6;i++)//逐位发送显示数据
{ SendByte(DPY[disp[i]]);SendByte(0x00); }
SendCmd(0x8A);//设置辉度并显示
}
可以看到,其中有一句“SendByte(0x00)”,这是因为TM1620的GRID1~GRID6各对应两个字节的显存地址。以GRID1为例,其显存地址的低字节为0xC0,高字节为0xC1;而低字节地址Bit0~Bit7的8位内容分别对应SEG1~SEG8的输出状态,高字节地址的Bit4、Bit5的内容分别对应SEG13、SEG14的输出状态。由此可知,对应于八段数码管的显示,必须向TM1620每位(GRID)的奇地址写入“0x00”。
4 结 论
传统的数码管驱动方案都不免要占用较多的单片机IO口,在减小PCB使用面积方面也不具有优势。TM1620作为一款LED数码管驱动专用芯片,所实现的驱动电路具有占用IO口少、电路简洁等优点。本文对这一驱动电路方案、芯片指令和程序写法都作了说明,希望对后来的设计者有所助益。
参考文献:
[1] 刘建清.轻松玩转51单片机C语言 [M].北京:北京航空航天大学出版社,2011.
[2] 刘帅,周世杰,郑凡非.基于单片机的数字电压表设计实现 [J].数字技术与应用,2019,37(2):166-167.
[3] Ivor Horton.C语言入门经典(第5版) [M].杨浩,译.北京:清华大学出版社,2013.
作者簡介:王深(1985-),男,汉族,福建福州人,本科,助理讲师,研究方向:电子技术应用。