摘? 要: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-),男,漢族,福建福州人,本科,助理講師,研究方向:電子技術應用。