一種基于TM1638的智能儀表鍵盤顯示電路設(shè)計(jì)
引言
對(duì)于智能儀表人機(jī)交互化實(shí)現(xiàn)媒介,我們通常使用LCD液晶或者LED數(shù)碼管來(lái)作為顯示器件。其中LCD價(jià)格比較昂貴,醒目程度較低,可視角度也比較??;而LED數(shù)碼管亮度高,更醒目,而且價(jià)格低,因此,LED數(shù)碼管具有更好的性價(jià)比。但是,若采用一般的顯示方案,其所用元器件多而且復(fù)雜,系統(tǒng)可靠性低,成本較大。而若選用價(jià)格低廉的鍵盤顯示驅(qū)動(dòng)芯片TM1638,那么只需3根線就可與單片機(jī)(MCU)相連接,而且占用單片機(jī)(MCU)的I/O口資源少,硬件連接簡(jiǎn)單,可靠性高。
1 硬件電路設(shè)計(jì)
1.1 TM1638芯片介紹
TM1638是帶鍵盤掃描接口的LED驅(qū)動(dòng)控制專用芯片。該芯片內(nèi)部集成MCU數(shù)字接口、數(shù)據(jù)鎖存器、LED高壓驅(qū)動(dòng)和鍵盤掃描等電路。TM1638可以同時(shí)驅(qū)動(dòng)8個(gè)共陰極數(shù)碼管,可掃描24個(gè)矩陣式按鍵。
TM1638芯片的邏輯電源電壓為5V±10%,SEG1?10為P管開漏輸出,在使用時(shí)只能接LED的陽(yáng)極,驅(qū)動(dòng)輸出電流最大為一50mA。GRID1?8為N管開漏輸出,只能接LED的陰極,最大驅(qū)動(dòng)輸出電流為+200mA。驅(qū)動(dòng)數(shù)碼管時(shí),不需再加電阻限流,可通過改變顯示控制命令的后三位數(shù)來(lái)改變顯示亮度。
1.2 鍵盤和顯示主電路設(shè)計(jì)
圖1所示是筆者給出的實(shí)用智能儀表鍵盤顯示電路原理圖,其中的鍵盤和顯示驅(qū)動(dòng)芯片為TM1638,顯示部分為2片4位一體共陰極數(shù)碼管,鍵盤部分為9個(gè)按鈕(也可以擴(kuò)成24個(gè))??刂菩酒瑸镾TC11F02,該芯片是單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),指令代碼完全兼容8051,但速度比8051快8?12倍。內(nèi)部集成了高可靠復(fù)位電路,主要針對(duì)高速通信,智能控制和強(qiáng)干擾場(chǎng)合的應(yīng)用。
在圖1中,TM1638與STC11F02單片機(jī)相連只需用到單片機(jī)的3個(gè)I/O口,因而可大大減少占用單片機(jī)的I/O口資源。TM1638芯片可直接驅(qū)動(dòng)數(shù)碼管,也可直接接按鈕,而不需再加上拉電阻或限流電阻,整個(gè)電路用到的電子元器件很少,而且結(jié)構(gòu)簡(jiǎn)單,可靠性強(qiáng),成本低。
TM1638的SEG1—SEG10引腳是顯示和按鍵掃描復(fù)用的,若系統(tǒng)要用到組合鍵時(shí),可以在硬件上將需要同時(shí)按下的鍵設(shè)置在不同的K線上;但同一個(gè)K與不同的SEG引腳不能做成組合鍵使用。
2 軟件設(shè)計(jì)
2.1 顯示單元
TM1638內(nèi)部帶有顯示寄存器,該顯示寄存器存儲(chǔ)通過串行接口從MCU接收顯示的數(shù)據(jù),該TM1638顯示寄存器地址從00H-0FH共16字節(jié)單元,在寫LED顯示數(shù)據(jù)時(shí),一般從顯示地址的低位到高位,并從數(shù)據(jù)字節(jié)的低位到高位進(jìn)行操作。
2.2 顯示和掃描按鍵單元
讀鍵時(shí),先發(fā)讀鍵命令,開始讀取按鍵數(shù)據(jù)BYTE1-BYTE4字節(jié),讀數(shù)據(jù)從低位開始輸出;TM1638芯片的K和KS引腳對(duì)應(yīng)的按鍵按下時(shí),相對(duì)應(yīng)的字節(jié)內(nèi)的BIT位為1。DIO口輸出數(shù)據(jù)為N管開漏輸出,在讀鍵的時(shí)候,需要外接1?10k。的上拉電阻。DIO在時(shí)鐘的下降沿控制N管動(dòng)作,但此時(shí)讀數(shù)時(shí)可能不穩(wěn)定,只有在時(shí)鐘的上升沿讀數(shù)才是穩(wěn)定的。
單片機(jī)向TM1638發(fā)送顯示數(shù)據(jù)時(shí),在第一個(gè)STB片選信號(hào)后發(fā)送的是命令,寫完命令后才能發(fā)送要顯示的數(shù)據(jù)。單片機(jī)讀按鍵時(shí),先給TM1638發(fā)送讀按鍵命令42H,然后等待一個(gè)最小等待時(shí)間(最小13)后,再讀取按鍵數(shù)據(jù)。讀取和接受1個(gè)比特都在時(shí)鐘的上升沿操作。其操作代碼如下:
發(fā)送數(shù)據(jù)子程序
Send_data:
MOV A,R0
CLR STB
MOV R7,#8H
DLL2: CLR CLK
RRC A
MOV DIO,C
SETB CLK
DJNZ R7,DLL2
RET
讀數(shù)據(jù)子程序
Read_data:
SETB DIO
CLR STB
MOV R7,#8H
NEXT1: CLR CLK
MOVC,DIO
RLC A
SETB CLK
DJNZ R7,NEXT1
RET
圖2所示是顯示和掃描按鍵的程序流程圖。
3 結(jié)語(yǔ)
TM1638作為鍵盤及顯示管理器件與單片機(jī)或其他微處理器相連接時(shí),無(wú)論是硬件接口還是軟件編程都非常簡(jiǎn)單。更重要的是,TM1638價(jià)格低廉,整個(gè)硬件成本很低,而且結(jié)構(gòu)簡(jiǎn)單,功能強(qiáng)大、通用性強(qiáng)??沈?qū)動(dòng)8個(gè)數(shù)碼管,并可掃描24個(gè)矩陣式按鍵,完全能滿足大多數(shù)智能化儀表人機(jī)交互功能的要求。目前,筆者已將TM1638應(yīng)用在所設(shè)計(jì)的產(chǎn)品當(dāng)中,并取得了滿意的效果。