張賽男 陳梅金
摘 要:觸摸按鍵在電子產(chǎn)品中無(wú)處不在,而且越來(lái)越普遍,同時(shí)市面上出現(xiàn)觸摸按鍵的問(wèn)題也越來(lái)越多,主要體現(xiàn)在使用過(guò)程中被外界干擾后觸摸按鍵自動(dòng)觸發(fā)。該文提出一種多次循環(huán)偵測(cè)觸摸按鍵的算法,用來(lái)增強(qiáng)按鍵抗干擾的能力,以改善顯示器觸摸按鍵帶來(lái)的種種干擾問(wèn)題。
關(guān)鍵詞:觸摸按鍵;偵測(cè);人機(jī)交互
中圖分類號(hào):TP212 文獻(xiàn)標(biāo)志碼:A
0 引言
我們?nèi)粘J褂玫募矣秒娖髦校蟛糠侄荚谑褂糜|摸按鍵,并通過(guò)它對(duì)設(shè)備進(jìn)行控制。觸摸按鍵也越來(lái)越受到廣大用戶的認(rèn)可和喜愛。不過(guò)觸摸式按鍵在復(fù)雜的干擾環(huán)境下經(jīng)常會(huì)出現(xiàn)一些問(wèn)題,象自動(dòng)觸發(fā)按鍵功能,并且去執(zhí)行相應(yīng)按鍵的動(dòng)作,這樣就容易導(dǎo)致用戶不能正常使用設(shè)備。該文主要通過(guò)顯示器觸摸按鍵的偵測(cè)算法來(lái)改善按鍵偵測(cè)流程,利用偵測(cè)算法來(lái)改善按鍵的抗干擾能力。
該設(shè)計(jì)是基于顯示器的硬件系統(tǒng),對(duì)軟件控制系統(tǒng)功能進(jìn)行改善設(shè)計(jì)。硬件系統(tǒng)包括電源板電路、主板電路和觸摸按鍵回路。軟件上從3個(gè)方面著手設(shè)計(jì),一方面是Scaler IC通過(guò)IIC控制方式與觸摸按鍵IC進(jìn)行通信控制。另一方面是設(shè)計(jì)觸摸按鍵的偵測(cè)流程。第三是測(cè)試比對(duì)顯示器觸摸按鍵在不同的偵測(cè)條件下的作用效果。
1 硬件系統(tǒng)
1.1 硬件系統(tǒng)組成
該設(shè)計(jì)系統(tǒng)是基于顯示器系統(tǒng)研究的,主要由電源板、主板、按鍵板和喇叭以及液晶顯示面板組成。電源板輸出電源給主板和外圍電路。外圍電路包括按鍵板、Audio和顯示面板等這些電路回路。主板搭載著系統(tǒng)的核心處理器,即Scaler圖像處理芯片。Scaler及外圍電路給后續(xù)軟件設(shè)計(jì)提供了堅(jiān)實(shí)的硬件基礎(chǔ)。顯示面板主要負(fù)責(zé)對(duì)圖像處理芯片送來(lái)的信號(hào)進(jìn)行顯示處理。這些硬件電路模塊組成了該設(shè)計(jì)的硬件系統(tǒng),系統(tǒng)框圖如圖1所示。
1.2 IIC電路
IIC總線是由串行數(shù)據(jù)(SDA)總線和串行時(shí)鐘(SCL)總線組成的。數(shù)據(jù)總線在器件上傳遞相關(guān)指令信息,每個(gè)器件都可以識(shí)別相對(duì)應(yīng)的地址。器件在執(zhí)行相關(guān)數(shù)據(jù)傳輸時(shí),也可以被看成是主機(jī)或者是從機(jī)。主機(jī)主要負(fù)責(zé)初始化總線的數(shù)據(jù)傳輸和停止發(fā)送數(shù)據(jù),被尋址的任何器件都將被認(rèn)為是從機(jī)。SDA和SCL都是雙向線路,都通過(guò)一個(gè)電流源或上拉電阻連接到正電壓的電源。現(xiàn)在很多上拉電阻電路都已經(jīng)不這樣設(shè)計(jì)了,原因是很多圖像處理器IC內(nèi)部電路已經(jīng)添加相關(guān)的上拉或下拉電阻電路模塊。當(dāng)總線空閑時(shí),這2條線都設(shè)置成高電平,同時(shí)連接到總線的器件。連到總線上的任一器件輸出為低電平時(shí),都將使總線的信號(hào)變低,即各器件的SDA和SCL都是“線與”關(guān)系。IIC總線進(jìn)行數(shù)據(jù)傳送過(guò)程中,時(shí)鐘信號(hào)為高電平,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定。只有在時(shí)鐘線上的信號(hào)為低電平時(shí),數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。
1.3 按鍵控制電路
該設(shè)計(jì)按鍵板使用觸摸按鍵板。觸摸按鍵板有自己的MCU IC進(jìn)行處理控制。上位機(jī)為圖像處理器IC,下位機(jī)為Touch Key MCU IC。圖像處理器到觸摸按鍵板之間的控制電路圖如圖2所示,與Scaler連接的部分有3個(gè)引腳,分別是SDA_KEY,SCL_KEY,INT_KEY即Reset Key。
2 軟件系統(tǒng)
有了硬件系統(tǒng)作為基礎(chǔ),我們就可以對(duì)軟件控制系統(tǒng)進(jìn)行設(shè)計(jì)搭建。軟件上我們分成2個(gè)模塊設(shè)計(jì),模塊一是觸摸按鍵IIC驅(qū)動(dòng)設(shè)計(jì),需要完成對(duì)MCU IC通信命令控制和數(shù)據(jù)讀寫設(shè)計(jì);模塊二是觸摸按鍵控制流程設(shè)計(jì),需要完成加強(qiáng)對(duì)觸摸按鍵抗干擾能力的設(shè)計(jì)。
2.1 IIC軟件設(shè)計(jì)
IIC軟件設(shè)計(jì)分為起始條件控制、數(shù)據(jù)傳輸控制和停止控制。起始條件控制需要根據(jù)IIC標(biāo)準(zhǔn)設(shè)計(jì),先將IIC的SCL拉高,再Delay一段時(shí)間(時(shí)間以微秒為單位),然后SDA產(chǎn)生一個(gè)從高電平到低電平的下降沿,這樣就符合IIC標(biāo)準(zhǔn)的起始信號(hào)條件。
有了起始控制條件后就可以對(duì)數(shù)據(jù)進(jìn)行傳輸控制了。在數(shù)據(jù)傳輸控制時(shí)需要對(duì)狀態(tài)機(jī)進(jìn)行忙狀態(tài)判斷,如果總線處理繁忙狀態(tài)則需要等待數(shù)據(jù)處理;如果收到正常可以發(fā)送命令的狀態(tài),即主機(jī)收到正常ACK,則可以開始數(shù)據(jù)發(fā)送或接收處理。數(shù)據(jù)讀寫過(guò)程中同樣需要判定對(duì)應(yīng)的ACK,再?zèng)Q定是否重新開始傳輸數(shù)據(jù)。
同樣IIC停止控制需要按照IIC標(biāo)準(zhǔn)設(shè)計(jì)。首先將SCL拉成低電平,確保停止信號(hào)是我們軟件操作控制的前提下;再將SDA拉成低電平;接著將SCL設(shè)置成高電平,這時(shí)形成了控制SCL為高電平的必要條件;等待一段時(shí)間后再將SDA設(shè)置成高電平,這樣就達(dá)到了IIC停止信號(hào)的控制。
2.2 觸摸按鍵板控制設(shè)計(jì)
觸摸按鍵是對(duì)Touch Key MCU的控制。從工作經(jīng)驗(yàn)來(lái)看,下位機(jī)Touch Key的MCU通常會(huì)告知上位機(jī)Scaler對(duì)應(yīng)被執(zhí)行的地址位數(shù)據(jù)信息,并且將其對(duì)應(yīng)到相應(yīng)的觸摸按鍵,這樣Scaler則直接去執(zhí)行它讀取到的地址位數(shù)據(jù)而做出相應(yīng)的按鍵動(dòng)作控制。如果我們用這種一般的方式思考則會(huì)出現(xiàn)后續(xù)不可估量的隱藏問(wèn)題,當(dāng)電路受到干擾時(shí),Touch Key 的MCU很有可能對(duì)數(shù)據(jù)識(shí)別出現(xiàn)錯(cuò)誤。由于二進(jìn)制數(shù)據(jù)可能會(huì)從“0”變成“1”,也可能從“1”變成“0”,因此當(dāng)我們無(wú)法確保硬件線路絕對(duì)可靠的情況下,還是需要從軟件上對(duì)其進(jìn)行盡可能多的嚴(yán)格控制設(shè)計(jì)。
對(duì)Key的定義,我們會(huì)以十六進(jìn)制的數(shù)據(jù)進(jìn)行定義,如下為該設(shè)計(jì)方案Key數(shù)據(jù)對(duì)應(yīng)值的數(shù)據(jù)結(jié)構(gòu)定義:
#define TPREG_POWER 0x10 //電源按鍵值定義。
#define TPREG_MENU_EXIT 0x04 //菜單和退出按鍵值定義。
#define TPREG_PLUS 0x01 //按鍵“+”值定義。
#define TPREG_MINUS 0x02 //按鍵“-”值定義。
#define TPREG_RESET 0x80 //重置按鍵值定義。
#define TPREG_SELECT 0x08 //選中按鍵值定義。
#define TPREG_UP 0x40 //向上按鍵值定義。
#define TPREG_DOWN 0x20 //向下按鍵值定義。
Touch Key軟件控制的流程圖如圖3所示。軟體主流程中會(huì)先對(duì)相關(guān)IC初始化,再對(duì)Touch Key MCU確認(rèn)是否準(zhǔn)備好或當(dāng)前數(shù)據(jù)狀態(tài)是否正常,如果有異常,Scaler會(huì)要求Touch Key MCU執(zhí)行Reset,接著再對(duì)Touch Key MCU發(fā)送相關(guān)讀寫控制命令。讀取指令是0x01,寫指令是0x00。在讀取數(shù)據(jù)過(guò)程中,需要先向下位機(jī)MCU確認(rèn)其寄存器地址位置,并查找到對(duì)應(yīng)的存放頁(yè)面,這些前提條件設(shè)置好后,我們就可以開始對(duì)下位機(jī)MCU進(jìn)行數(shù)據(jù)命令的讀寫了。
2.3 TOUCH Key偵測(cè)
Touch Key偵測(cè)一般都會(huì)在運(yùn)行OSD菜單中進(jìn)行,由于每個(gè)按鍵的執(zhí)行結(jié)果都會(huì)對(duì)應(yīng)到菜單的顯示。原本對(duì)Touch Key的設(shè)計(jì)方法,基本上都是依靠軟體主流程的時(shí)間作為延長(zhǎng)時(shí)間,并且是單次向Touch Key Register讀取數(shù)據(jù),然后Scaler再去執(zhí)行相關(guān)數(shù)據(jù)的動(dòng)作。但問(wèn)題很可能會(huì)出現(xiàn)從寄存器讀到的數(shù)據(jù)是被干擾到的數(shù)據(jù)的情況,也就是很有可能是錯(cuò)誤的數(shù)據(jù)。該設(shè)計(jì)的提出就是需要確保這樣讀取到的數(shù)據(jù)是準(zhǔn)確的,對(duì)每個(gè)Touch Key寄存器讀取一次是不足的,因此需要做多次循環(huán)讀取確認(rèn)。根據(jù)系統(tǒng)的穩(wěn)定性,該設(shè)計(jì)設(shè)置讀取數(shù)據(jù)次數(shù)為3次,在3次讀取數(shù)據(jù)都相同的情況下才判定有對(duì)應(yīng)按鍵被觸發(fā)。這里需要說(shuō)明一點(diǎn),原來(lái)機(jī)械按鍵都會(huì)做De-bounce設(shè)計(jì)來(lái)防止抖動(dòng)問(wèn)題,基本上大家已經(jīng)都知道了,但是觸摸按鍵往往不需要De-bounce。實(shí)際經(jīng)驗(yàn)和實(shí)驗(yàn)結(jié)果表明觸摸按鍵也有必要做De-bounce設(shè)計(jì)。
在Touch Key偵測(cè)過(guò)程中,我們是使用中斷計(jì)數(shù)方式進(jìn)行設(shè)計(jì)控制的,這樣能確保數(shù)據(jù)及時(shí)快速地處理,不容易出現(xiàn)卡頓情況。
3 人機(jī)交互顯示
當(dāng)我們?cè)O(shè)計(jì)好按鍵后,就可以將編譯好的軟件燒錄到樣機(jī)顯示器上進(jìn)行實(shí)際人機(jī)交互操作實(shí)驗(yàn)。我們編譯出2套修改前后的軟體,分別燒錄到同一受干擾的顯示器中。在對(duì)沒有添加觸摸按鍵De-bounce流程的軟體進(jìn)行測(cè)試時(shí),可以發(fā)現(xiàn)樣機(jī)的觸摸按鍵自動(dòng)被觸發(fā),從而自動(dòng)彈出菜單的問(wèn)題。而在相同條件下,對(duì)有添加觸摸按鍵De-bounce程序流程的軟件進(jìn)行測(cè)試,則不會(huì)發(fā)生被自動(dòng)觸發(fā)菜單的問(wèn)題,而且觸摸按鍵的流暢度體驗(yàn)效果并不會(huì)被影響。
4 結(jié)語(yǔ)
該文提出的通過(guò)多次循環(huán)偵測(cè)觸摸按鍵的方法來(lái)增強(qiáng)按鍵抗干擾的能力,適用于相關(guān)觸摸按鍵的產(chǎn)品中。由于是用軟體方式實(shí)現(xiàn)的抗干擾觸摸按鍵,它經(jīng)濟(jì)實(shí)用,不增加硬件成本,值得推廣使用。
參考文獻(xiàn)
[1]周志永,胡建人.低成本電容式觸摸按鍵設(shè)計(jì)[J].機(jī)電工程, 2011,28(3):365-368.
[2]凌六一,伍龍.基于軟件模擬的51單片機(jī)IIC總線的實(shí)現(xiàn)[J].電子技術(shù),2004,31(5):13-16.
[3]洪勝和,林志賢,郭太良.基于OSD交互的液晶顯示器光學(xué)測(cè)試系統(tǒng)設(shè)計(jì)[J].電視技術(shù),2017,41(4-5):268-273.
[4]劉穎.人機(jī)交互界面的可用性評(píng)估及方法[J].人類工效學(xué),2002,8(2):35-38.