久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4252|回復: 2
打印 上一主題 下一主題
收起左側

零知開源軟件庫使用-XPT2046

[復制鏈接]
跳轉到指定樓層
樓主
本次介紹一下軟件庫XPT2046型號的觸摸屏的使用,該觸摸屏結合ILI9341的LCD顯示屏一起使用(原文請查看零知官網,我們的LCD和觸摸屏已經連接在一起使用的),使用以下示例進行介紹,示例功能為:當觸摸屏按下后,在LCD屏上顯示當前按下的點的坐標值,示例程序代碼如下:
  1. /**
  2. * XPT2046 Touch Screen Controller example.
  3. *       
  4. * @ brief:show the touch point on the LCD screen
  5. */

  6. #include <XPT2046_Touchscreen.h>

  7. #include "ili9341_parallel.h"

  8. #define CS_PIN 10 // Chip Select pin
  9. #define irq_pin 14 //IRQ pin

  10. XPT2046_Touchscreen ts(CS_PIN, irq_pin);

  11. ili9341_parallel_class tft(15,16,17,18,19,0,1,2,3,4,5,6,9);

  12. void setup() {
  13.   Serial.begin(9600);
  14.   
  15.         ts.begin(); //Begin TouchScreen.
  16.   
  17.   tft.begin();
  18.   tft.clear(BLACK);
  19. }

  20. boolean wastouched = true;

  21. void loop() {
  22.        
  23.   boolean istouched = ts.touched();
  24.   if (istouched) {
  25.     TS_Point p = ts.getPoint();
  26.     if (!wastouched) {
  27.       tft.drawString(20,180,BLUE,"Touch");
  28.     }
  29.         tft.clear(BLACK);
  30.     tft.drawFrame(100, 150, 200, 230, RED);

  31.     tft.drawString(110,160,GREEN,"X = ");
  32.         char str[20];
  33.         sprintf(str, "%d", p.x);
  34.        
  35.     tft.drawString(150,160,GREEN,str);

  36.     tft.drawString(110,200,GREEN,"Y = ");
  37.         sprintf(str, "%d", p.y);
  38.     tft.drawString(150,200,GREEN,str);
  39.        
  40.     Serial.print(", x = ");
  41.     Serial.print(p.x);
  42.     Serial.print(", y = ");
  43.     Serial.println(p.y);
  44.   } else {
  45.         Serial.println("no touch");
  46.   }
  47.   wastouched = istouched;
  48.   delay(100);
  49. }
復制代碼
可以看到觸摸屏的使用比較簡單,我們通過SPI接口將觸摸屏的接口與零知開發板相連接即可,然后在程序中通過touched()接口檢測是否有觸摸動作,如果有觸摸再通過getPoint()函數得到觸摸的坐標值。觸摸屏的檢測的時候還可以使用中斷引腳連接到開發板,然后通過檢測中斷是否發生來檢測是否有觸摸動作,該型號的觸摸屏在沒有觸摸的時候中斷腳輸出高電平,如果有觸摸發生會有一段時間的低電平信號。我們連接好硬件后,燒寫上面點的程序到零知開發板,程序運行后,我們用手指觸摸屏幕,可以在顯示屏上顯示我們當前觸摸的坐標值,如下:





需要注意的是觸摸屏的坐標和LCD坐標的轉換,這里XPT2046的觸摸屏為12位的精度,因此坐標范圍為0-4096,而此處ILI9341的LCD坐標范圍為0-240,和0-320,因此需要轉換后兩者才能對應起來,而且還需要注意兩者的原點坐標,這可以通過軟件方式簡單的轉換即可對應起來。當然在實際產品開發中,我們還需要做觸摸屏的校準,這樣得到的觸摸動作才能精確的檢測。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:579197 發表于 2020-1-9 18:06 | 只看該作者
請問如何自定義MOSI、MISO、SCK引腳呢?
回復

使用道具 舉報

板凳
ID:71262 發表于 2020-1-15 08:04 | 只看該作者
非常感謝樓主
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美福利 | 亚洲欧美日韩在线 | 日韩欧美国产精品 | 精品国产99 | 亚洲精品在线看 | 日韩在线视频一区二区三区 | 精品国产免费一区二区三区五区 | 国产日韩欧美激情 | 欧美日韩一| 亚州精品成人 | 国产精品视频网站 | 天天综合干 | 一级毛片视频在线观看 | 欧美成人黄色小说 | 日本在线视频一区二区 | 在线观看黄色电影 | 国产欧美一区二区精品忘忧草 | 久久精品国产99国产精品亚洲 | 亚洲性人人天天夜夜摸 | 亚洲国产精品99久久久久久久久 | 久久精品伊人 | 国产线视频精品免费观看视频 | 国产免费色 | 国产一区在线免费 | 高清一区二区视频 | 国产精品美女久久久久aⅴ国产馆 | 欧美亚洲综合久久 | 精品亚洲一区二区三区 | 亚洲一区中文 | 中文字幕久久久 | 国产精品国产三级国产播12软件 | 日韩欧美网 | 在线看91 | 亚洲精久 | 欧美福利精品 | 天天躁人人躁人人躁狂躁 | 91热在线| 亚洲欧美日韩在线 | 欧美精品 在线观看 | 日本精品一区二区三区在线观看 | 国产精品久久久久aaaa樱花 |