日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多点电容触摸屏实验

發布時間:2023/12/10 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多点电容触摸屏实验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 多點電容觸摸簡介
  • 硬件原理分析
  • 實驗程序編寫
  • 編譯下載驗證
    • 編寫Makefile 和鏈接腳本
    • 編譯下載

隨著智能手機的發展,電容觸摸屏也得到了飛速的發展。相比電阻觸摸屏,電容觸摸屏有很多的優勢,比如支持多點觸控、不需要按壓,只需要輕輕觸摸就有反應。ALIENTEK 的三款RGB LCD 屏幕都支持多點電容觸摸,本章就以ATK7016 這款RGB LCD 屏幕為例講解一下如何驅動電容觸摸屏,并獲取對應的觸摸坐標值。

多點電容觸摸簡介

觸摸屏很早就有了,一開始是電阻觸摸屏,電阻觸摸屏只能單點觸摸,在以前的學習機、功能機時代被廣泛使用。2007 年1 月9 日蘋果發布了劃時代的第一代Iphone,也就是Iphone2G,Iphone 2G 上使用了多點電容觸摸屏,而當時的手機基本都是使用的電阻觸摸屏。電容觸摸屏優秀的觸摸品質和手感瞬間征服了消費者,帶來了手機觸摸屏的大變革,后面新出的手機也都采用了多點電容觸摸屏。和電阻觸摸屏相比,電容觸摸屏最大的優點是支持多點觸摸(后面的電阻屏也支持多點觸摸,但是為時已晚),電容屏只需要手指輕觸即可,而電阻屏是需要手指給予一定的壓力才有反應,而且電容屏不需要校準。如今多點電容觸摸屏已經得到了廣泛的應用,手機、平板、電腦、廣告機等等,如果要做人機交互設備的開發,多點電容觸摸屏基本是不可能繞過去的。所以本章我們就來學習一下如何使用多點觸摸屏,如何獲取到多點觸摸值。關于電容屏的物理原理我們就不去研究了,畢竟我們不是開發電容屏的,而是電容屏的使用者,我們只需要關注如何使用電容屏,如何得到其多點觸摸坐標值即可。ALIENTEK 的三款RGB LCD 屏幕都是支持5 點電容觸摸屏的,本章我們同樣以ATK-7016 這款屏幕為例來講解如何使用多點電容觸摸屏。

ATK-7016 這款屏幕其實是由TFT LCD+觸摸屏組合起來的。底下是LCD 面板,上面是觸摸面板,將兩個封裝到一起就成了帶有觸摸屏的LCD 屏幕。電容觸摸屏也是需要一個驅動IC的,驅動IC 一般會提供一個I2C 接口給主控制器,主控制器可以通過I2C 接口來讀取驅動IC里面的觸摸坐標數據。ATK-7016、ATK-7084 這兩款屏幕使用的觸摸控制IC 是FT5426,ATK-4342 使用的驅動IC 是GT9147。這三個電容屏觸摸IC 都是I2C 接口的,使用方法基本一樣。

FT5426 這款驅動IC 采用15*28 的驅動結構,也就是15 個感應通道,28 個驅動通道,最多支持5 點電容觸摸。ATK-7016 的電容觸摸屏部分有4 個IO 用于連接主控制器:SCL、SDA、RST 和INT,SCL 和SDA 是I2C 引腳,RST 是復位引腳,INT 是中斷引腳。一般通過INT 引腳來通知主控制器有觸摸點按下,然后在INT 中斷服務函數中讀取觸摸數據。也可以不使用中斷功能,采用輪詢的方式不斷查詢是否有觸摸點按下,本章實驗我們使用中斷方式來獲取觸摸數據。

和所有的I2C 器件一樣,FT5426 也是通過讀寫寄存器來完成初始化和觸摸坐標數據讀取的,I.MX6U 的I2C 我們已經在第二十六章做了詳細的講解,所以本章的主要工作就是讀寫FT5426 的寄存器。FT5426 的I2C 設備地址為0X38,FT5426 的寄存器有很多,本章我們只用到了其中的一部分,如表28.1.1.1 所示:


表28.1.1.1 中就是本章實驗我們會使用到的寄存器。關于觸摸屏和FT5426 的知識就講解到這里。

硬件原理分析

本試驗用到的資源如下:
①、指示燈LED0。
②、RGB LCD 屏幕。
③、觸摸屏
④、串口
觸摸屏是和RGB LCD 屏幕做在一起的,所以觸摸屏也在RGB LCD 接口上,都是連接在I.MX6U-ALPHA 開發板底板上,原理圖如圖28.2.1 所示:

從圖28.2.1可以看出,觸摸屏連接著I.MX6U 的I2C2,INT引腳連接著I.MX6U的GPIO1_IO9,RST 引腳連接著I.MX6U 的SNVS_TAMPER9。在本章實驗中使用中斷方式讀取觸摸點個數和觸摸點坐標數據,并且將其顯示在LCD 上。

實驗程序編寫

本實驗對應的例程路徑為:開發板光盤-> 1、裸機例程-> 19_touchscreen。

本章實驗在上一章例程的基礎上完成,更改工程名字為“touchscreen”,然后在bsp 文件夾下創建名為“touchscreen”的文件。在bsp/ touchscreen 中新建bsp_ft5xx6.c 和bsp_ft5xx6.h 這兩個文件,在bsp_ft5xx6.h 中輸入如下內容:

1 #ifndef _FT5XX6_H 2 #define _FT5XX6_H 3 /*************************************************************** 4 Copyright ? zuozhongkai Co., Ltd. 1998-2019. All rights reserved. 5 文件名: bsp_ft5xx6.h 6 作者: 左忠凱

文件bsp_ft5xx6.h 文件中先是定義了FT5426 的設備地址、寄存器地址和一些觸摸點狀態宏,然后在第37 行定義了一個結構體ft5426_dev_struc,此結構體用來保存觸摸信息,最后就是一些函數聲明。接下來在bsp_ft5xx6.c 中輸入如下所示內容:

/*************************************************************** Copyright ? zuozhongkai Co., Ltd. 1998-2019. All rights reserved. 文件名: bsp_ft5xx6.c 作者: 左忠凱 版本: V1.0 描述: 觸摸屏驅動文件,觸摸芯片為FT5xx6, 包括FT5426和FT5406。 其他: 無 論壇: www.openedv.com 日志: 初版V1.0 2019/1/21 左忠凱創建 ***************************************************************/ 1 #include "bsp_ft5xx6.h" 2 #include "bsp_i2c.h" 3 #include "bsp_int.h" 4 #include "bsp_delay.h" 5 #include "stdio.h" 6 7 struct ft5426_dev_struc ft5426_dev; 8 9 /* 10 * @description : 初始化觸摸屏,其實就是初始化FT5426 11 * @param : 無 12 * @return : 無 13 */ 14 void ft5426_init(void) 15 { 16 unsigned char reg_value[2];

文件bsp_ft5xx6.c 中有7 個函數,我們依次來看一下這7 個函數。第1 個是函數ft5426_init,此函數是ft5426 的初始化函數,此函數先初始化FT5426 所使用的I2C2 接口引腳、復位引腳和中斷引腳。接下來使能了FT5426 所使用的中斷,并且注冊了中斷處理函數,最后初始化了I2C2和FT5426。第2 個函數是gpio1_io9_irqhandler,這個是FT5426 的中斷引腳中斷處理函數,在
此函數中會讀取FT5426 內部的觸摸數據。第3 和第4 個函數分別為ft5426_write_byte 和ft5426_read_byte,函數ft5426_write_byte 用于向FT5426 的寄存器寫入指定的值,函數ft5426_read_byte 用于讀取FT5426 指定寄存器的值。第5 個函數是ft5426_read_len,此函數也是從FT5426 的指定寄存器讀取數據,但是此函數是讀取數個連續的寄存器。第6 個函數是
ft5426_read_tpnum,此函數用于獲取FT5426 當前有幾個觸摸點有效,也就是觸摸點個數。最后一個函數是ft5426_read_tpcoord,此函數就是讀取FT5426 各個觸摸點坐標值的。

最后在main.c 中輸入如下內容:

/************************************************************** Copyright ? zuozhongkai Co., Ltd. 1998-2019. All rights reserved. 文件名: main.c 作者: 左忠凱 版本: V1.0 描述: I.MX6U開發板裸機實驗20 觸摸屏實驗 其他: I.MX6U-ALPHAL推薦使用正點原子-7寸LCD,此款LCD支持5點電容觸摸, 本節我們就來學習如何驅動LCD上的5點電容觸摸屏。 論壇: www.openedv.com 日志: 初版V1.0 2019/1/21 左忠凱創建 **************************************************************/ 1 #include "bsp_clk.h"

文件main.c 第53 行調用函數ft5426_init 初始化觸摸屏,也就是FT5426 這個觸摸驅動IC。最后在main 函數的while 循環中不斷的顯示獲取到的觸摸點數以及對應的觸摸坐標值。因為本章實驗我們采用中斷方式讀取FT5426 的觸摸數據,因此main 函數中并沒有讀取FT5426 的操作,只是顯示觸摸值。本章實驗程序編寫就到這里,接下來就是編譯、下載和驗證。

編譯下載驗證

編寫Makefile 和鏈接腳本

修改Makefile 中的TARGET 為touchscreen,然后在INCDIRS 和SRCDIRS 中加入“bsp/touchscreen”,修改后的Makefile 如下:

1 CROSS_COMPILE ?= arm-linux-gnueabihf- 2 TARGET ?= touchscreen 3 4 /* 省略掉其它代碼...... */ 5 6 INCDIRS := imx6ul \ 7 stdio/include \ 8 bsp/clk \ 9 bsp/led \ 10 bsp/delay \ 11 bsp/beep \ 12 bsp/gpio \ 13 bsp/key \ 14 bsp/exit \ 15 bsp/int \ 16 bsp/epittimer \ 17 bsp/keyfilter \ 18 bsp/uart \ 19 bsp/lcd \ 20 bsp/rtc \

第2 行修改變量TARGET 為“touchscreen”,也就是目標名稱為“touchscreen”。
第25 行在變量INCDIRS 中添加觸摸屏的驅動頭文件(.h)路徑。
第46 行在變量SRCDIRS 中添加觸摸屏的驅動文件(.c)路徑。
鏈接腳本保持不變。

編譯下載

使用Make 命令編譯代碼,編譯成功以后使用軟件imxdownload 將編譯完成的touchscreen.bin 文件下載到SD 卡中,命令如下:

chmod 777 imxdownload //給予imxdownload 可執行權限,一次即可 ./imxdownload touchscreen.bin /dev/sdd //燒寫到SD 卡中,不能燒寫到/dev/sda 或sda1 設//備里面!

燒寫成功以后將SD 卡插到開發板的SD 卡槽中,然后復位開發板。默認情況下LCD 界面如圖28.4.2.1 所示:

當我們用手指觸摸屏幕的時候就會在LCD 上顯示出當前的觸摸點和對應的觸摸值,如圖28.4.2.2 所示:

圖28.4.2.2 中有5 個觸摸點,每個觸摸點的坐標全部顯示到了LCD 屏幕上。如果移動手指的話LCD 上的觸摸點坐標數據就會相應的變化。

總結

以上是生活随笔為你收集整理的多点电容触摸屏实验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。