曹振華,吳健,劉靖陽
(蘇州經貿職業技術學院機電與信息技術學院,蘇州 215009)
多按鍵與指示燈混編系統設計與實現
曹振華,吳健,劉靖陽
(蘇州經貿職業技術學院機電與信息技術學院,蘇州215009)
指示燈和按鍵式嵌入式領域內最常見的元素,指示燈常用來提示用戶程序運行的狀態、電源工作狀態、工作進展等,經常用LED實現。LED具有使用壽命長、功耗低、體積小、易控制等優點;按鍵則是用戶向嵌入式系統輸入信息的最常用手段。

LED作為最常用的指示燈,在嵌入式領域被廣泛使用,根據使用數量的不同,可以分為以下幾種控制策略。
(1)I/O直接驅動法
當LED使用數量較少,例如三兩個或者7-8個的情況下,使用的控制端口比較少,特別是三兩個的情況下,僅使用極少的I/O口即可完成[1],所以這時候通常使用直接驅動法,電路如圖1所示。

圖1 直接驅動電路
圖1中,R?為限流電阻,電流通過VCC供給LED,經過限流電阻后流向單片機的I/O,當I/O為高電平時,由于LED兩側電平相等,則無電流經過LED,所以LED不亮,當I/O為低電平時,電流從VCC流向I/O,從而導致LED點亮,因此起到用I/O控制LED亮滅的功能,即狀態指示的功能。如果LED的功率較大,則還需要增加三極管進行驅動功率的放大。
直接驅動法中每個LED對應特定的單片機I/O口,因此程序編寫較容易,但是端口復用性差,比較浪費硬件資源,對于I/O口較少的單片機不適合用該法做較多的指示燈。
(2)掃描驅動法
掃描驅動法中,每個LED指示燈對應兩個I/O口,一個負責輸入,一個負責輸出,但是一個I/O口,可以接入到多個指示燈上[2],如圖2所示。
圖2中,分別用到I/O_A、I/O_B、、I/O_C、I/O_1、I/ O_2和I/O_3共計6個I/O口,可以控制9個LED指示燈。比如控制LED_B2亮起時,只需要將I/O_B口拉高電平,I/O_2拉低電平即可實現,I/O_B和I/O_2的其它電平組合都會使該LED指示燈熄滅。對于9個LED指示燈的控制是按照行或者列為單位進行控制的,例如要想控制9個LED燈中的LED_A1、LED_A2、LED_B1和LED_C3亮,按照行的順序控制則需要三個步驟:(注1代表高電平,0代表低電平)
第一步,I/O_A=1、I/O_B=0、I/O_C=0、I/O_1=0、I/ O_2=0、I/O_3=1、延時;
第二步,I/O_A=0、I/O_B=1、I/O_C=0、I/O_1=0、I/ O_2=1、I/O_3=1、延時;
第三步,I/O_A=0、I/O_B=0、I/O_C=1、I/O_1=1、I/ O_2=1、I/O_3=0、延時;
第三步完成后,上述四個LED小燈就完成了每個瞬間亮一次的任務,但是如果想讓四個LED燈保持一直亮,就必須持續重復三個步驟,利用人眼的視覺暫留原理,人的眼睛就感覺四個燈一直在亮[1]。
掃描驅動法中,利于了6個I/O就可以驅動9個LED燈,比直接驅動法節約了3個I/O,因此,合理安排LED的數量可以大幅度節約I/O口硬件資源,但是編程難度較直接驅動法大,而且需要持續掃描,浪費單片機的寶貴資源。

圖2 直掃描驅動電路

按鍵的驅動法與LED燈的驅動法及其相似,常用的也是直接驅動法和掃描驅動法,不同之處在于鍵盤驅動法中需要加上拉或者下拉電阻,保持按鍵在沒有被按下時處于穩定的電平狀態,電路圖與1-1、1-2相似,只是在靠近后端I/O口的位置加上拉電阻或者下拉電阻即可,不贅述。
本節需要設計126個LED指示燈的亮滅,并且采集63個按鍵的狀態,原則上每片TM1638可以實現80 個LED燈,64個按鍵狀態的同時控制和采集,為了產品的模塊化生產并利于設備安裝維修,本文將126個LED指示燈和63個按鍵分為7個PCB設計制作,每個PCB使用一片TM1638,所有PCB與單片機之間僅用10個I/O口設計完成。

TM1638是帶鍵盤掃描接口的LED(發光二極管顯示器)驅動控制專用電路,內部集成有MCU數字接口、數據鎖存器、LED高壓驅動、鍵盤掃描等電路。主要應用于冰箱、空調 、家庭影院等產品的高段位顯示屏驅動。采用SOP28封裝設計[3],引腳如圖3所示。

圖3 TM1638引腳圖
TM1638也是基于掃描驅動法的原理實現的,TM1638可以實現自動掃描驅動,掃描過程無需單片機干預,單片機只需要通過類IIC接口告訴TM1638需要哪些LED燈亮,然后獲取按鍵信息即可,所以大大降低了對單片機性能的要求,圖3中SEGn相當于掃描驅動法中的輸出引腳,而GRIDn相當于驅動掃描法中的輸入引腳,LED燈的電流從SEGn中來,流向GRIDn;按鍵的電流是從KSn中來,如果有按鍵按下,則流向GRIDn,否則電路短路,GRIDn無電流回流。
STB引腳為片選信號,CLK和DI/O兩個引腳構成通信口,在多個TM1638形成的網絡中,CLK和DI/O是共用的,只要單獨設立STB片選信號即可。

經過分組設計后,每片TM1638PCB只需要控制18個LED指示燈和采集9個按鍵的信息,I/O口資源需要用到一個STB,一個CLK和一個DI/O,另外配備5v電源接口,使用5pin的插針接口,電路圖如圖4所示。在通信口及片選口上加18pf的電容,可以有效提高信號的穩定性,據測試,通信線在80cm以內都可以穩定通信,電容必須緊靠TM1638芯片放置。

圖4 接口電路圖
18個LED指示燈,通過掃描法的原理可以推斷,只需要用SEG1-SEG9作為輸出線,GRID1和GRID2作為輸入線,即可完成9×2=18的掃描矩陣,因此本文采用此方法進行設計如圖5所示。

圖5 LED燈驅動電路圖
TM1638芯片的KS引腳只有8個,所以9個按鍵使用一個GRID無法實現,因此本文采用KS1-KS3和GRID1-GRID3,形成3×3=9的掃描矩陣,驅動電路圖如圖6所示。為了防止多個按鍵同時按下時信號可能出現混亂的情況,設計中必須在SEG引腳與按鍵之間加二極管進行電流約束,這樣各個SEG信號之間就不會出現電流回流的現象,避免了按鍵的誤判。

圖6 鍵盤驅動電路圖

在單片機端,除了要設計DI/O和SCK兩個I/O作為通信口之外,還要設計7路片選信號,即總計占用9 個I/O,接口電路如圖7所示。
圖7中,STBn為第n路的片選信號,對應單片機的7個I/O口。

圖7 單片機端接口電路圖

根據第二節的設計思路制作成的單片PCB成品如圖8所示,7片PCB級聯之后的產品如圖9所示。
圖8中,粉色部分位于電路板的keepoutlayer,用于固定電路板及按鍵板用,TM1638及級聯接線端子位于電路板右側,按鍵與LED指示燈位于電路板背面。
圖10中,左側引出線即為級聯線,每根為5pin杜邦線,共7組,另一端連接至控制中心單片機上。

圖8 單片PCB成品

圖9 七片PCB級聯圖

圖10 系統顯示效果圖

產品用于蘇州攜手智能科技有限公司與蘇州城時實業有限公司推出的券達人賣券機上,經過1年的市場推廣和應用,獲得了用戶的一致好評,產品在吉祥餛飩連鎖機構、果果咖喱連鎖及面勉面餐飲連鎖機構等大型餐飲連鎖機構獲得認可,運行穩定,產品如圖10所示。圖中,產品為了體現層次感和系統功能分區,上面兩排按鍵和指示燈全部使用,而下面5排的按鍵和指示燈只用了一部分。
[1]胡全.51單片機的數碼管動態顯示技術[J].中國新技術新產品,2009(13).
[2]王宜懷.嵌入式系統原理與實踐[M].北京:電子工業出版社,2012.
[3]天徽.TM1638_Ver1.2.pdf[M].深圳:www.titanmec.com.Titan Micro Electronics,2009.
曹振華(1980~),男,山東臨沂人,碩士,研究方向為嵌入式應用技術
吳建(1984-),男,江蘇蘇州人,本科,工程師,研究方向為嵌入式系統應用
劉靖陽(1993-),男,廣東河源人,大專,在校學生,研究方向為嵌入式應用技術
Many Keys;Many Lights;TM1638;Scanning Matrix
Design and ImplementatI/On of Hybrid System Composed of Many Buttons and Lights
CAO Zhen-hua,WU Jian,LIU Jing-yang
(Department of Mechatronics&Information,Suzhou Institute of Trade&Commerce,Suzhou 215009)
1007-1423(2015)28-0065-05
10.3969/j.issn.1007-1423.2015.28.016
2015-09-11
2015-09-22
在嵌入式領域內經常用到按鍵和指示燈,如果數量較少,可以直接用單片機的I/O口驅動,編程容易,但需要充足的I/ O;如果使用數量較多,單片機的I/O口不夠用,則需要用矩陣掃描驅動,此種方法編程復雜,需要及時掃描刷新,占用單片機資源較多;如果使用數量很多,上述常規方法已經不能勝任,采用天徽公司生產的TM系列芯片,設計實現一個126個LED指示燈+63個按鍵的混編顯示控制面板。
多按鍵;多指示燈;TM1638;矩陣掃描
2015年大學生實踐創新訓練計劃項目(No.201512685002Y)
Buttons and lights are often used in embedded system,if the quantity is less,can be directly driven by microcontroller I/O port,the pro-gramming is relatively easy in this condition,but need more I/O port.If uses more number of buttons and lights and microcontroller I/O port is not enough,we need drive it by the scanning matrix,although it needs complex programming,timely scanning refresh,more system resource occupancy is used in this way.If uses a large number of buttons and lights,those conventional methods can't be competent,uses a chip of TM,designs a 126 lights and 63 keys mixed display panel.