1. 程式人生 > >嵌入式系統學習——STM32之電容型觸控式螢幕

嵌入式系統學習——STM32之電容型觸控式螢幕

觸控式螢幕

  觸控式螢幕(touch screen)又稱為“觸控屏”、“觸控面板”,是一種可接收觸頭等輸入訊號的感應式裝置。作為一種新型的電腦輸入裝置,可以用來取代傳統的機械按鍵等輸入裝置。它是目前最簡單、方便、自然的一種人機互動方式。主要應用於公共資訊的查詢、領導辦公、工業控制、軍事指揮、電子遊戲、點歌點菜、多媒體教學、房地產預售等。
  觸控式螢幕本質上與液晶是分離的。觸控式螢幕負責的是檢測觸控點,液晶屏負責的是顯示。區別開來。

觸控式螢幕分類

按照觸控式螢幕的工作原理和傳輸資訊的介質,把觸控式螢幕分為四種,它們分別為
①電阻式:定位準確,單點觸控。
②電容感應式:支援多點觸控,價格偏貴。工業應用最廣泛
③紅外線式:價格低廉,但其外框易碎,容易產生光干擾,曲面情況下失真。
④表面聲波式:解決各種缺點,但是螢幕表面如果有水滴和塵土會使觸控式螢幕變的遲鈍。

電容型觸控式螢幕

電容屏是利用人體感應進行觸點檢測控制,只需要輕微接觸,通過檢測感應電流來定位觸控座標。現在幾乎所有智慧手機,包括平板電腦都是採用電容屏作為觸控式螢幕。

電容型觸控式螢幕分類

表面電容式電容觸控式螢幕

    表面電容式觸控式螢幕技術是利用ITO(銦錫氧化物,是一種透明的導電材料)導電膜,通過電場感應方式感測螢幕表面的觸控行為進行。但是表面電容式觸控式螢幕有一些侷限性,它只能識別一個手指或者一次觸控。

投射式電容觸控式螢幕

   投射電容式觸控式螢幕是感測器利用觸控式螢幕電極發射出靜電場線。一般用於投射電容感測技術的電容型別有兩種:自我電容和互動電容。

①自我電容式

自我電容又稱絕對電容,是最廣為採用的一種方法,自我電容通常是指掃描電極與地構成的電容

。在玻璃表面有用ITO製成的橫向與縱向的掃描電極,這些電極和地之間就構成一個電容的兩極。當用手或觸控筆觸控的時候就會並聯一個電容到電路中去,從而使在該條掃描線上的總體的電容量有所改變。在掃描的時候,控制IC依次掃描縱向和橫向電極,並根據掃描前後的電容變化來確定觸控點座標位置。膝上型電腦觸控輸入板就是採用的這種方式,膝上型電腦的輸入板採用X*Y的感測電極陣列形成一個感測格子,當手指靠近觸控輸入板時,在手指和感測電極之間產生一個小量電荷。採用特定的運演算法則處理來自行、列感測器的訊號來確定手指的位置。

②互動電容式

互動電容又叫做跨越電容,它是在玻璃表面的橫向和縱向的ITO電極的交叉處形成電容。互動電容的掃描方式就是掃描每個交叉處的電容變化

,來判定觸控點的位置。當觸控的時候就會影響到相鄰電極的耦合,從而改變交叉處的電容量,互動電容的掃面方法可以偵測到每個交叉點的電容值和觸控後電容變化,因而它需要的掃描時間與自我電容的掃描方式相比要長一些,需要掃描檢測X*Y根電極。目前智慧手機/平板電腦等的觸控式螢幕,都是採用互動電容技術。

電阻屏與電容屏的區別電阻屏與電容屏的區別

①電阻屏在觸模時需要輕觸壓按,而電容屏只需輕微的手指觸碰就能啟用
②電阻屏可以用任何物體來觸控,而電容屏是人體熱感應工作原理,只能用手指的熱感區來觸控,指甲和手寫筆均無效。由於手指頭的面積比手寫筆大很多,因此電容屏的手機,觸控比較小圖示或者選單的時候,觸控精度無法做到電阻屏那麼高。
③電容屏可以很容易進行多點觸控,電阻屏一般不能實現多點觸控的。
④電阻屏內部是軟的,一般是在4到5層超薄的鋼化玻璃中間夾雜細微的炭粒(顯微鏡下才能看見),通過按壓導致上下兩層的炭粒相互接觸而接通觸屏電路,產生觸控反應,容易產生劃痕,易壞,容易觸屏不靈,而電容屏都是採用單層加厚鋼化玻璃,硬度大,耐舊,使用壽長
⑤電阻屏在陽光下可視性稍差,電容屏則非常好,在陽光下可視性很強。
電容觸控式螢幕對工作環境的要求是比較高的,在潮溼、多塵、高低溫環境下面,都是不適合使用電容屏的。

電容屏優缺點總結

優點:
       手感好,無需校準,支援多點觸控,透光性好。
缺點:
       成本高,精度不高,抗干擾能力差。

電容觸控式螢幕一般都需要一個驅動IC來檢測電容觸控,且一般是通過IIC介面輸出觸控資料的。

常見的2種電容觸控式螢幕驅動

①ICGT9147:採用17*10的驅動結構(10個感應通道,17個驅動通道)。
②OTT2001A:採用13*8的驅動結構(8個感應通道,13個驅動通道)。
它們與MCU連線通過4根線:SDA、SCL、RST和INT。

  GT9147的IIC地址,可以是0X14或者0X5D,當復位結束後的5ms內,如果INT是高電平,則使用0X14作為地址,否則使用0X5D作為地址。

GT9147關鍵暫存器

控制命令暫存器(0X8040)

     該暫存器可以寫入不同值,實現不同的控制,我們一般使用0和2這兩個值,寫入2,即可軟復位GT9147,在硬復位之後,一般要往該暫存器寫2,實行軟復位。然後,寫入0,即可正常讀取座標資料(並且會結束軟復位)。

配置暫存器組(0X8047~0X8100)

     這裡共186個暫存器,用於配置GT9147的各個引數,這些配置一般由廠家提供給我們(一個數組),所以我們只需要將廠家給我們的配置,寫入到這些暫存器裡面,即可完成GT9147的配置。

產品ID暫存器(0X8140~0X8143)

     這裡總共由4個暫存器組成,用於儲存產品ID,對於GT9147,這4個暫存器讀出來就是:9,1,4,7四個字元(ASCII碼格式)。因此,我們可以通過這4個暫存器的值,來判斷驅動IC的型號,從而判斷是OTT2001A還是GT9147,以便執行不同的初始化。

狀態暫存器(0X814E)


我們僅關心最高位和最低4位,最高位用於表示buffer狀態,如果有資料(座標/按鍵),buffer就會是1,最低4位用於表示有效觸點的個數,範圍是:0~5,0,表示沒有觸控,5表示有5點觸控。

座標資料暫存器(共30個)

這裡共分成5組(5個點),每組6個暫存器儲存資料,以觸點1的座標資料暫存器組為例,


我們一般只用到觸點的x,y座標,所以只需要讀取0X8150~0X8153的資料,組合即可得到觸點座標。其他4組分別是:0X8158、0X8160、0X8168和0X8170等開頭的16個暫存器組成,分別針對觸點2~4的座標。同樣GT9147也支援暫存器地址自增,我們只需要傳送暫存器組的首地址,然後連續讀取即可,GT9147會自動地址自增,從而提高讀取速度。