摘? 要:TM1620是一款LED數(shù)碼管驅(qū)動(dòng)專用芯片,該芯片所實(shí)現(xiàn)的多位數(shù)碼管驅(qū)動(dòng)方案與傳統(tǒng)方案相比,具有占用單片機(jī)IO口少、電路簡(jiǎn)潔、輝度多級(jí)可調(diào)等優(yōu)點(diǎn)。現(xiàn)階段,介紹TM1620的文獻(xiàn)還不多,為了便于設(shè)計(jì)者更好地開展對(duì)該芯片的學(xué)習(xí)和應(yīng)用,本文較為詳細(xì)地說明了這款芯片驅(qū)動(dòng)共陰極數(shù)碼管的電路方案、芯片指令和程序?qū)懛ā?/p>
關(guān)鍵詞:TM1620;數(shù)碼管;LED;驅(qū)動(dòng)芯片
中圖分類號(hào):TN141.6? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2019)23-0042-02
Application of LED Digital Tube Driver Chip TM1620
WANG Shen
(Fujian Polytechnic School,F(xiàn)uzhou? 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? 引? 言
在電子產(chǎn)品設(shè)計(jì)中,數(shù)碼管是一種常用的顯示器件,只要點(diǎn)亮特定的幾個(gè)LED段,它就能夠顯示出表示信息的數(shù)字或符號(hào)[1]。數(shù)碼管要正常顯示,驅(qū)動(dòng)電路是不可或缺的,它起到了連接單片機(jī)與數(shù)碼管的橋梁作用。以驅(qū)動(dòng)四位八段數(shù)碼管為例,傳統(tǒng)的驅(qū)動(dòng)電路設(shè)計(jì)方案主要有以下三種。
(1)只使用分立元件構(gòu)成:以單片機(jī)的8個(gè)IO口經(jīng)限流電阻接到數(shù)碼管的段引腳(A~DP),用另外4個(gè)IO口經(jīng)電阻、三極管控制數(shù)碼管的位選引腳。該方案要占用單片機(jī)的12個(gè)IO口,而使用較多的分立元件不利于減小PCB(印制電路板)的使用面積。
(2)使用74HC573構(gòu)成[2]:74HC573是八路“并行輸
入,并行輸出”的鎖存器芯片。以單片機(jī)的8個(gè)IO口先后經(jīng)一片74HC573、限流電阻接到數(shù)碼管的段引腳(A~ DP),用另外4個(gè)IO口經(jīng)另一片74HC573控制數(shù)碼管的位選引腳。該方案并未改善對(duì)單片機(jī)IO口的占用情況,只是減少了分立元件的使用數(shù)量。
(3)使用74HC595構(gòu)成:74HC595是“串行輸入,八路并行輸出”的移位寄存器芯片。以單片機(jī)的4個(gè)IO口分別連接74HC595的1個(gè)串行輸入引腳和3個(gè)控制引腳,74HC595的八路并行輸出端經(jīng)限流電阻接到數(shù)碼管的段引腳,用另外4個(gè)IO口經(jīng)電阻、三極管(或用一片74HC573)控制數(shù)碼管的位選引腳。該方案一定程度上改善了對(duì)單片機(jī)IO口的占用情況(占用8個(gè)),但仍需使用為數(shù)不少的分立元件。
現(xiàn)如今,許多款單片機(jī)產(chǎn)品的IO口幾乎都被“復(fù)用”了——不僅可以作為通用IO口使用,還可作為特殊功能引腳使用。因此,為了驅(qū)動(dòng)數(shù)碼管而占用過多的IO口并不是電子產(chǎn)品設(shè)計(jì)者所樂見的情況,他們有時(shí)還為單片機(jī)的IO口不夠分配而苦惱。而TM1620正可以為他們提供一種更優(yōu)的方案,實(shí)現(xiàn)對(duì)數(shù)碼管顯示的可靠驅(qū)動(dòng)。
1? TM1620的性能特點(diǎn)
TM1620是深圳天微電子公司的一款LED數(shù)碼管驅(qū)動(dòng)專用芯片,采用CMOS工藝,封裝形式為SOP20,可工作于5V或3.3V的典型電壓環(huán)境(若是驅(qū)動(dòng)藍(lán)光數(shù)碼管,則應(yīng)選5V來供電),穩(wěn)定性好,抗干擾能力強(qiáng)。TM1620有三種顯示模式可供靈活選擇——十段四位、九段五位或八段六位,且輝度八級(jí)可調(diào);內(nèi)部自帶LED驅(qū)動(dòng)電路,能夠自動(dòng)進(jìn)行多位數(shù)碼管的動(dòng)態(tài)掃描,這樣就不再需要由單片機(jī)對(duì)數(shù)碼管的位選進(jìn)行控制。
2? TM1620驅(qū)動(dòng)四位共陰極數(shù)碼管的電路方案
以單片機(jī)的三個(gè)IO口分別接到TM1620的DIN引腳(串行數(shù)據(jù)輸入)、CLK引腳(時(shí)鐘輸入)和STB引腳(片選輸入);TM1620的SEG1~SEG8輸出引腳直接對(duì)應(yīng)接到數(shù)碼管的A~DP引腳,GRID1~GRID4輸出引腳直接對(duì)應(yīng)接到數(shù)碼管的四個(gè)位選引腳,SEG13/GRID6、SEG14/GRID5這兩個(gè)段/位復(fù)用輸出引腳在此不使用,懸空即可。可見,用TM1620作為驅(qū)動(dòng)芯片,只需占用單片機(jī)很少的IO口(3個(gè)),從而極大地改善了對(duì)單片機(jī)IO口的占用情況,這樣就可以留出更多的IO口用于系統(tǒng)其他功能的擴(kuò)展。
3? TM1620的指令與驅(qū)動(dòng)程序
3.1? TM1620的指令說明
正確理解芯片的使用方法,在此基礎(chǔ)上編寫出行之有效的驅(qū)動(dòng)程序,這是實(shí)現(xiàn)驅(qū)動(dòng)功能的必要前提。TM1620按字節(jié)接收指令或數(shù)據(jù);設(shè)計(jì)者通過單片機(jī),向TM1620寫入指令,從而實(shí)現(xiàn)對(duì)顯示模式、工作狀態(tài)、顯示輝度等的設(shè)置;而向TM1620寫入數(shù)據(jù),則可以實(shí)現(xiàn)數(shù)字、符號(hào)等的顯示效果。TM1620以“在STB下降沿后,DIN輸入的第一個(gè)字節(jié)”作為指令,該字節(jié)的Bit7、Bit6用于區(qū)分不同的指令——“00”為顯示模式指令,“01”為數(shù)據(jù)指令,“10”為顯示控制指令,“11”為地址設(shè)置指令。詳述如下:
(1)顯示模式指令:用于設(shè)置所驅(qū)動(dòng)數(shù)碼管的段數(shù)和位數(shù),寫入“0x00”設(shè)為十段四位,寫入“0x01”設(shè)為九段五位,寫入“0x02”設(shè)為八段六位;
(2)數(shù)據(jù)指令:用于設(shè)置與寫入顯示數(shù)據(jù)有關(guān)的地址增加模式等。例如,寫入“0x40”設(shè)為以“普通、顯存地址自加”模式寫顯示數(shù)據(jù)到顯存,寫入“0x44”設(shè)為以“普通、顯存地址固定”模式寫顯示數(shù)據(jù)到顯存。在地址固定模式下,必須按照“先設(shè)置顯存地址,后寫入顯示數(shù)據(jù)”的步驟控制各位數(shù)碼管的顯示;
(3)顯示控制指令:TM1620內(nèi)部自帶了一個(gè)脈動(dòng)信號(hào)發(fā)生器,由寫入的顯示控制指令對(duì)其工作狀態(tài)、輸出脈沖信號(hào)的占空比進(jìn)行設(shè)置,從而實(shí)現(xiàn)開/關(guān)顯示和輝度調(diào)節(jié)。該指令的Bit3是開/關(guān)顯示的設(shè)置位,Bit2~Bit0是顯示輝度的設(shè)置位。例如,寫入“0x8F”對(duì)應(yīng)“開顯示,輝度最高”的顯示效果;
(4)地址設(shè)置指令:用于設(shè)置顯存的當(dāng)前地址。TM1 620顯存的有效地址有12字節(jié)(0xC0~0xCB),上電后默認(rèn)設(shè)在0xC0。
3.2? 驅(qū)動(dòng)程序的寫法
C語言中的一個(gè)重要觀念是:每個(gè)程序都應(yīng)分割成許多小的函數(shù)[3],從而使程序的每一部分都較易于完成,也便于后續(xù)的管理和維護(hù)。因此,在對(duì)TM1620的驅(qū)動(dòng)程序進(jìn)行設(shè)計(jì)時(shí),可將其分為SendByte、SendCmd、Display三個(gè)函數(shù),分別實(shí)現(xiàn)“向TM1620寫入一字節(jié)”“向TM1620寫入一個(gè)指令”和“數(shù)碼管顯示”三個(gè)功能。這里主要說明SendCmd函數(shù)和Display函數(shù)的寫法。
3.2.1? SendCmd 函數(shù)
void SendCmd(u8 command)
{
TM1620_STB=1;
Delay();
TM1620_STB=0;//完成一次輸入STB的下降沿
SendByte(command);
}
3.2.2? Display函數(shù)
void Display()
{
u8 i;
SendCmd(0x02);//設(shè)為八段六位模式
SendCmd(0x40);//設(shè)為普通,地址自加模式
SendCmd(0xC0);//設(shè)置顯存起始地址
for(i=0;i<6;i++)//逐位發(fā)送顯示數(shù)據(jù)
{ SendByte(DPY[disp[i]]);SendByte(0x00); }
SendCmd(0x8A);//設(shè)置輝度并顯示
}
可以看到,其中有一句“SendByte(0x00)”,這是因?yàn)門M1620的GRID1~GRID6各對(duì)應(yīng)兩個(gè)字節(jié)的顯存地址。以GRID1為例,其顯存地址的低字節(jié)為0xC0,高字節(jié)為0xC1;而低字節(jié)地址Bit0~Bit7的8位內(nèi)容分別對(duì)應(yīng)SEG1~SEG8的輸出狀態(tài),高字節(jié)地址的Bit4、Bit5的內(nèi)容分別對(duì)應(yīng)SEG13、SEG14的輸出狀態(tài)。由此可知,對(duì)應(yīng)于八段數(shù)碼管的顯示,必須向TM1620每位(GRID)的奇地址寫入“0x00”。
4? 結(jié)? 論
傳統(tǒng)的數(shù)碼管驅(qū)動(dòng)方案都不免要占用較多的單片機(jī)IO口,在減小PCB使用面積方面也不具有優(yōu)勢(shì)。TM1620作為一款LED數(shù)碼管驅(qū)動(dòng)專用芯片,所實(shí)現(xiàn)的驅(qū)動(dòng)電路具有占用IO口少、電路簡(jiǎn)潔等優(yōu)點(diǎn)。本文對(duì)這一驅(qū)動(dòng)電路方案、芯片指令和程序?qū)懛ǘ甲髁苏f明,希望對(duì)后來的設(shè)計(jì)者有所助益。
參考文獻(xiàn):
[1] 劉建清.輕松玩轉(zhuǎn)51單片機(jī)C語言 [M].北京:北京航空航天大學(xué)出版社,2011.
[2] 劉帥,周世杰,鄭凡非.基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)實(shí)現(xiàn) [J].數(shù)字技術(shù)與應(yīng)用,2019,37(2):166-167.
[3] Ivor Horton.C語言入門經(jīng)典(第5版) [M].楊浩,譯.北京:清華大學(xué)出版社,2013.
作者簡(jiǎn)介:王深(1985-),男,漢族,福建福州人,本科,助理講師,研究方向:電子技術(shù)應(yīng)用。