北京信息科技大學(xué)信息獲取與檢測實驗室,北京 100101
計算機(jī)技術(shù)和電子技術(shù)改變著我們的生活生產(chǎn)方式,觸摸屏技術(shù)就是其中之一,它逐漸代替按鈕、按鍵等傳統(tǒng)控制輸入裝置,起著人與機(jī)器之間交流的橋梁作用。觸摸屏具有的輕便和操作簡單的特點,是傳統(tǒng)鍵盤所不具有的,而電阻式觸摸屏的低價格、高清晰度和高耐久等特點,讓電阻屏成為了人機(jī)交互設(shè)備中應(yīng)用最為廣泛的一種觸摸屏[1,2]。
本文對大面積電阻式觸摸屏信號檢測電路進(jìn)行硬件設(shè)計和軟件編程,分析了電阻屏的工作原理,結(jié)合電阻屏專用控制芯片,研究了電阻屏的線性化算法;通過藍(lán)牙模塊設(shè)計計算機(jī)接口,實現(xiàn)了下位機(jī)與上位機(jī)的無線短距離通訊;在MATLab的環(huán)境下,應(yīng)用GUI工具完成串口的數(shù)據(jù)接收,完成了顯示界面的實時繪圖以及保存功能。
設(shè)計方案是通過測量四線式電阻屏的觸點電路參數(shù),把該參數(shù)經(jīng)過A/D轉(zhuǎn)換,送給單片機(jī),在單片機(jī)上實現(xiàn)從數(shù)字參數(shù)到坐標(biāo)轉(zhuǎn)換,然后把坐標(biāo)通過藍(lán)牙送到上位機(jī),上位機(jī)接到坐標(biāo)信息后在上位機(jī)界面通過坐標(biāo)信息作圖[3]。
系統(tǒng)需要用到的硬件部分有:四線式電阻屏、ADS7846芯片、MSP430單片機(jī)和藍(lán)牙模塊。通過各個模塊的有機(jī)連接,組成系統(tǒng)的硬件部分。大面積電阻式觸摸屏用于系統(tǒng)的輸入。由于是電阻屏,可筆觸、手寫等多種輸入法。觸摸屏控制器為ADS7846芯片,一旦筆或手指觸摸在屏上,芯片采集觸摸屏上的坐標(biāo)。核心控制器MSP430實現(xiàn)對數(shù)據(jù)的處理,并結(jié)合上位機(jī)軟件一起實現(xiàn)定位[4]。藍(lán)牙模塊代替USB線連接單片機(jī)和上位機(jī)[5]。
軟件部分分為上位機(jī)軟件實現(xiàn)和單片機(jī)軟件編程。
上位機(jī)軟件主要功能是顯示,應(yīng)用MATLab的GUI和MATLab自帶的串口通信函數(shù)serial,設(shè)計一個人機(jī)交互可控友好界面,通過藍(lán)牙串口模塊,實現(xiàn)數(shù)據(jù)的實時接收,并利用MATLab的科學(xué)計算功能,實時處理接收到的數(shù)據(jù)并繪圖。
單片機(jī)軟件部分主要是算法的設(shè)計,控制數(shù)據(jù)的接收、處理和發(fā)送。接收的數(shù)據(jù)是由電阻屏控制芯片傳送的,處理數(shù)據(jù)主要是對數(shù)據(jù)進(jìn)行轉(zhuǎn)換和優(yōu)化,數(shù)據(jù)發(fā)送由單片機(jī)控制串口與上位機(jī)進(jìn)行通信。
電阻屏控制器ADS7846具有四線制觸摸屏接口,將電阻屏四根導(dǎo)線與ADS7846的四個數(shù)據(jù)接口分別對應(yīng)連接[6]。電阻觸摸屏與ADS7846連接電路圖如圖1所示。對ADS7846芯片的控制由MSP430F149單片機(jī)完成。對MSP430F149編程時啟用P1腳中斷功能,P1.0為外部中斷輸入。
單片機(jī)與上位機(jī)通過藍(lán)牙模塊進(jìn)行數(shù)據(jù)傳輸。設(shè)置好藍(lán)牙模塊傳輸波特率,此波特率分別與單片機(jī)波特率和上位機(jī)波特率一致,設(shè)置兩個藍(lán)牙模塊一個為主模塊一個為從模塊,分別把兩個模塊與單片機(jī)和上位機(jī)連接。
無線藍(lán)牙模塊采用的是HC-05 嵌入式藍(lán)牙串口通訊模塊,它具有兩種工作模式:命令響應(yīng)工作模式和自動連接工作模式,在自動連接工作模式下模塊又可分為主(Master)、從(Slave)和回環(huán)(Loopback)三種工作角色。
在這里我們采用的是自動連接模式,和藍(lán)牙連接的MSP430單片機(jī)是主角色,和藍(lán)牙連接的上位機(jī)是從角色,進(jìn)而根據(jù)事先設(shè)定的方式進(jìn)行數(shù)據(jù)傳輸。
由于藍(lán)牙模塊的接口為串口模式,藍(lán)牙模塊與單片機(jī)可直接串口連接,分別將藍(lán)牙模塊的RXD和TXD引腳與單片機(jī)的TXD和RXD引腳連接,連接關(guān)系表如圖1所示。
藍(lán)牙模塊與上位機(jī)連接時,需要將串口轉(zhuǎn)為USB接口,設(shè)計用到芯片PL2303將串口轉(zhuǎn)為USB口。藍(lán)牙模塊與上位機(jī)連接圖如圖1所示。
軟件實現(xiàn)部分可以分為單片機(jī)軟件部分和上位機(jī)軟件部分。單片機(jī)軟件部分主要是數(shù)據(jù)的接收、處理和發(fā)送,上位機(jī)軟件部分在接收數(shù)據(jù)后主要是顯示[7]。
單片機(jī)軟件部分負(fù)責(zé)數(shù)據(jù)的接收、處理和發(fā)送。
當(dāng)觸摸屏被觸摸時,單片機(jī)產(chǎn)生中斷信號,向ADS7846寫控制字,控制相應(yīng)I/O口產(chǎn)生測量X、Y坐標(biāo)的時序,等待A/D轉(zhuǎn)換完成后讀取數(shù)據(jù)。
電阻式觸摸屏的電阻分布是近線性的,但不是理想的線性關(guān)系,經(jīng)過A/D轉(zhuǎn)換后的坐標(biāo)值不能直接用于顯示坐標(biāo),那樣就會出現(xiàn)轉(zhuǎn)換后的坐標(biāo)值與實際坐標(biāo)值差別很大的情況,這時需要用算法處理接收到的數(shù)據(jù),就是電阻屏的線性化處理。
設(shè)計用到4點定位方法,得到坐標(biāo)變換公式的算法來減小隨機(jī)干擾,然后再對數(shù)據(jù)結(jié)果求算術(shù)平均值,進(jìn)一步減少誤差[8]。
然后將得到的X、Y值再次處理:取N個一組求算術(shù)平均值,經(jīng)測試,可以得出當(dāng)N等于15時,既能消除誤差又不至于傳輸速度過慢。
MSP430F149有不同的USART通訊端口,可以串口異步或同步通訊,兩種方式具有不同的幀格式和不同的控制寄存器。
本文采用串口異步通訊,波特率為9600。軟件流程圖如圖2所示。
軟件設(shè)計利用MATLab的串口通信函數(shù)serial函數(shù)通過串口接收數(shù)據(jù),利用MATLab GUI設(shè)計繪圖界面[9]。
MATLab GUI中斷方式的串口通信優(yōu)點是實現(xiàn)實時處理數(shù)據(jù)的目的。MATLab中的中斷方式就是事件回調(diào)驅(qū)動。在編寫程序時,首先設(shè)置驅(qū)動事件的方式,是字節(jié)驅(qū)動還是其他方式驅(qū)動,然后再設(shè)置事件驅(qū)動方式的觸發(fā)條件。當(dāng)串口上的數(shù)據(jù)緩沖區(qū)有滿足設(shè)置的字節(jié)數(shù)目的數(shù)據(jù)或者數(shù)據(jù)緩沖區(qū)內(nèi)的字節(jié)和設(shè)定好的字節(jié)相同,MATLab會調(diào)用回調(diào)函數(shù)里已設(shè)計好的程序。在回調(diào)函數(shù)里寫好需要回調(diào)的內(nèi)容,這樣當(dāng)中斷發(fā)生時,在回調(diào)函數(shù)里的函數(shù)就會被調(diào)用。MATLab實現(xiàn)實時串口通信的流程圖如圖3所示。
首先測試芯片ADS7846,測試過程如下:在觸摸屏上用筆觸摸,如果在LCD1602上有反應(yīng),不管數(shù)據(jù)正確與否,都說明芯片ADS7846可能在工作,然后觸摸另一些點,數(shù)據(jù)又有所變化,則芯片ADS7846是工作的。圖4為系統(tǒng)應(yīng)用的電阻式大面積觸摸屏,圖5為部分硬件連接圖。
在下位機(jī)測試完成后,然后測試藍(lán)牙模塊。在上位機(jī)軟件沒有完成前,先用串口助手接收數(shù)據(jù),由于串口助手沒有畫圖功能,因此顯示的還是坐標(biāo)。這時候就可以測試電阻屏線性化的好壞了,雖然不是很精確,但是可以看出大致趨勢。圖6為串口助手接收到的數(shù)據(jù),數(shù)據(jù)是一組一組上傳的,即測一組X、Y坐標(biāo)上傳一次,括號內(nèi)第一個數(shù)為X坐標(biāo),第二個數(shù)為Y坐標(biāo)。此次測量為畫一條垂直于X軸的直線,設(shè)計時使觸摸屏的左下角為坐標(biāo)原點。從測試數(shù)據(jù)可以看出,測試的直線橫坐標(biāo)為12,縱坐標(biāo)從13降到3,從數(shù)據(jù)可以看出這一段電阻呈線性化。
MATLab GUI顯示模塊可以簡單的設(shè)置串口號、波特率、停止位和數(shù)據(jù)位,另外還具有儲存上一次圖像的功能,以及清除圖像的功能。選擇上位機(jī)識別的串口號,設(shè)置波特率與下位機(jī)一致,然后打開串口就可以接收數(shù)據(jù)實時作圖,圖7為在電阻屏上書寫數(shù)字8和9在GUI界面的顯示效果。由于電阻屏制作工藝比較粗糙,線性化的程度也受到了限制。
本文主要對大面積電阻式觸摸屏檢測信號電路進(jìn)行了硬件設(shè)計和軟件實現(xiàn)。分析了電阻屏的工作原理,結(jié)合電阻屏專用控制芯片,研究了電阻屏的線性化算法;通過藍(lán)牙模塊設(shè)計計算機(jī)接口,實現(xiàn)了下位機(jī)與上位機(jī)的無線短距離通訊;在MATLab的環(huán)境下,應(yīng)用GUI工具完成串口的數(shù)據(jù)接收,完成了顯示界面的實時繪圖以及保存功能;設(shè)計了系統(tǒng)整體硬件電路。
經(jīng)過系統(tǒng)測試,該系統(tǒng)可以簡單作圖,可實現(xiàn)少量儲存功能,可靠性比較好。限于個人能力,基本完成了系統(tǒng)的硬件設(shè)計和軟件實現(xiàn),但仍有一些不足之處,例如界面功能過于簡單,電阻屏線性化不足,反應(yīng)速度慢等。