找回密码
 立即注册
查看: 591|回复: 8

基于AI8051U_V1.2实验箱_学习实验之触摸屏编程基础

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:493
  • 最近打卡:2025-05-01 08:31:58

30

主题

347

回帖

3476

积分

荣誉版主

积分
3476
发表于 2024-11-21 12:06:27 | 显示全部楼层 |阅读模式
基于AI8051U_V1.2实验箱_学习实验之触摸屏编程基础


本实验体现当点击触摸屏任意位置时, 显示点击点坐标值,
并执行不同的程序代码,在点击所在区域,显示不同色矩形块。
程序开始是黑色清屏,此后点击桌上角区域,可执行清屏。
请看图:  这是在满屏不同区域,点击15次以后的结果。
触摸屏编程基础.jpg


主程序源码:
//=====================================================================
// 文件名称: Main.C
// 功能说明: 测试 2.4寸彩色触摸显示屏 240*320 8位并行口模式(专用屏)
// 基于电路: AI8051U 实验箱V1.2 (感谢"江苏国芯科技"馈赠)
// 整理改编: 浦晓明(浦江一水) 2024-11-20
//=== 硬件连接 =========================================================
//======================电源接线========================================
//SYS-VCC 3.3V电源
//USB+5V  5.0V电源(为显示屏供电)
//GND接地
//===============液晶屏数据/控制线接线===================================
//本模块数据总线类型为8位并口 (+5V供电)
//液晶屏模块              AI8051U
// LCD_D0~D7  接       P20~P27       //液晶屏8位数据线
// LCD_RS        接       P45           //数据/命令选择控制信号
// LCD_RD        接       P37           //读控制信号
// LCD_WR       接       P36           //写控制信号
// LCD_CS        接       P05           //片选控制信号
// LCD_RST      接       P47           //复位信号
//=== 四线电阻触摸屏IO ==================================================
// 端口定义: 接口类型 SPI
// PEN    =   P1^4;   //触摸屏笔状态: 0:按下 1:抬起
// TCS    =   P1^5;   //触摸屏片选端: 0:选中 1:未选中
// DCLK  =   P3^2;   //时钟控制(上升沿将数据输出/下降沿将数据输入)
// DOUT =   P3^3;   //MISO 触摸屏数据输出 单片机MCU输入
// DIN    =   P3^4;   //MOSI 触摸屏数据输入 单片机MCU输出
//**********************************************************************/
#include "AI8051U.H"
#include "AI8051U_SYS.H"
#include "LCD9341.H"     //显示屏驱动
#include "PTouch.H"       //触摸屏驱动


//全局变量说明
unsigned int X,Y;  //触摸点坐标
unsigned char k;   //返回键值
char S[80];           //字符串显示缓存
//函数说明(排列在main()之后的函数须先说明一下)
unsigned char RDKEY(void);   //读取键值(触摸点)


//主函数
void main(void)
{
  SYS_Init();           //系统初始化
  LCD_Init();            //液晶屏初始化
//LCD_SetDIR(0);   //原显示方向(纵向屏)
  LCD_SetDIR(3);    //调整显示方向(横屏)
  LCD_CLS(0);        //清屏(蓝色)
  LCD_Str16(10,10,"PTouch",15,0);
  delay_us(50);
  while(1)
  {
    k=0; k=RDKEY(); //读取按键或触摸点键值...
    if(k!=0)
    { switch(k)  //根据不同触摸点,绘制不同色矩形色块
      { case  1: LCD_Box( 80,0,80,60,15,15,1);   break; //1号暗蓝
        case  2: LCD_Box(160,0,80,60,15,15,2);   break; //2号暗绿
        case  3: LCD_Box(240,0,80,60,15,15,3);   break; //3号暗青
        case  4: LCD_Box(  0,60,80,60,15,15,4);  break; //4号暗红
        case  5: LCD_Box( 80,60,80,60,15,15,5);  break; //5号暗紫
        case  6: LCD_Box(160,60,80,60,15,15,6);  break; //6号暗黄
        case  7: LCD_Box(240,60,80,60,15,15,7);  break; //7号暗灰
        case  8: LCD_Box(  0,120,80,60,15,15,8); break; // 8号亮灰
        case  9: LCD_Box( 80,120,80,60,15,15,9); break; // 9号亮蓝
        case 10: LCD_Box(160,120,80,60,15,15,10);break; //10号亮绿
        case 11: LCD_Box(240,120,80,60,15,15,11);break; //11号亮青
        case 12: LCD_Box(  0,180,80,60,15,15,12);break; //12号亮红
        case 13: LCD_Box( 80,180,80,60,15,15,13);break; //13号亮紫
        case 14: LCD_Box(160,180,80,60,15,15,14);break; //14号亮黄
        case 15: LCD_Box(240,180,80,60,0,0,15);  break; //15号亮白
        case 16: LCD_CLS(0);  break; //点触摸左上角0号黑色清屏
      }  k=0;
      sprintf(S,"X=%03d",X); LCD_Str16(10,10,S,15,0);  //显示触摸点坐标X
      sprintf(S,"Y=%03d",Y); LCD_Str16(10,30,S,15,0);  //显示触摸点坐标Y   
    }
    delay_ms(50);     //延时50ms
  }
}
//扫描按键和触摸屏返回键值
//为屏键双用而预设计...
unsigned char RDKEY(void)
{ k=0;   //当前页面按键和触摸点返回值(因页面不同而不同)
  if(PTouchOK()){ X=320-TP.y; Y=240-TP.x; } //坐标转换(由屏方向不同而不同)
  else                { X=0;        Y=0;        }
  if((X> 10)&&(X< 80)&&(Y>0)&&(Y<60))k=16;   
  if((X> 80)&&(X<160)&&(Y>0)&&(Y<60))k=1;   
  if((X>160)&&(X<240)&&(Y>0)&&(Y<60))k=2;   
  if((X>240)&&(X<320)&&(Y>0)&&(Y<60))k=3;   
  if((X> 10)&&(X< 80)&&(Y>60)&&(Y<120))k=4;   
  if((X> 80)&&(X<160)&&(Y>60)&&(Y<120))k=5;   
  if((X>160)&&(X<240)&&(Y>60)&&(Y<120))k=6;   
  if((X>240)&&(X<320)&&(Y>60)&&(Y<120))k=7;   
  if((X> 10)&&(X< 80)&&(Y>120)&&(Y<180))k=8;   
  if((X> 80)&&(X<160)&&(Y>120)&&(Y<180))k=9;   
  if((X>160)&&(X<240)&&(Y>120)&&(Y<180))k=10;   
  if((X>240)&&(X<320)&&(Y>120)&&(Y<180))k=11;   
  if((X> 10)&&(X< 80)&&(Y>180)&&(Y<240))k=12;   
  if((X> 80)&&(X<160)&&(Y>180)&&(Y<240))k=13;   
  if((X>160)&&(X<240)&&(Y>180)&&(Y<240))k=14;   
  if((X>240)&&(X<320)&&(Y>180)&&(Y<240))k=15;   
  return k;
}  
//==== END =========================================================



由于触摸屏驱动与显示屏驱动密切相关,本人的显示屏驱动自成体系,与官方例程中的显示屏驱动不同,
所以对触摸屏部分代码,进行了重新整理改编,脱离显示屏驱动而独立存在,以便移植匹配不同的显示屏。
触摸屏部分代码,还在打磨之中,尚未成熟定型,为避免涉嫌误人子弟,故暂时不便开源。
可执行代码可作为另外一种方式的触摸屏测试软件,
供有兴趣的Ai8051U单片机爱好者坛友,在配屏测试时选择使用。




可执行代码:

TestPTouch.rar (13.13 KB, 下载次数: 36)



3 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:486
  • 最近打卡:2025-05-01 10:50:05
已绑定手机

6

主题

285

回帖

881

积分

荣誉版主

积分
881
发表于 2024-11-21 13:17:45 | 显示全部楼层
浦江版主出品必属精品!

4
(仅供参考,欢迎探讨)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:117
  • 最近打卡:2025-03-06 09:50:21

6

主题

142

回帖

638

积分

高级会员

积分
638
发表于 2024-11-21 13:38:06 | 显示全部楼层
厉害了
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:493
  • 最近打卡:2025-05-01 08:31:58

30

主题

347

回帖

3476

积分

荣誉版主

积分
3476
发表于 2024-11-21 20:44:25 | 显示全部楼层
感谢 autopccopy 版主的鲜花鼓励。
感谢 国学芯用  版主的鲜花鼓励。
感谢 神农鼎 管理员的鲜花鼓励。

记得年初时节,神管曾留言“挂个荣誉版主?TFT/LCD...”,俺当时复“新人新手,岂敢岂敢”。
一直以来,承蒙诸位鼓励、抬爱,心存感激。
而今,被神管指为“荣誉版主”,实在诚惶诚恐,恭敬不如从命了。
俺自知才疏学浅、井底之蛙,唯有继续努力学习,
在有生之年,为国芯弘扬广大,竭微薄之力,别辜负了大家期望。
若有不妥之处,还望多包涵,及时指正。
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2024-11-21 21:01:54 | 显示全部楼层
咱们这个 TFT版块 挂在 TinyML 版块下面,
就是为了51实际全面进入以 【触摸输入】+【TFT彩屏显示】为基础的

AI 8051 Ultra 时代,荣誉版主们任重道远

咱们这个版块下面就是 RTOS版块,Ai8052U到来时,
就是
51世界全面 进入 RTOS + TFT + 触摸 + AI 】的时候
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:122
  • 最近打卡:2025-05-01 08:43:07
已绑定手机

2

主题

106

回帖

262

积分

中级会员

积分
262
发表于 2024-12-7 09:19:47 | 显示全部楼层

qiang

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:159
  • 最近打卡:2025-05-01 00:06:50
已绑定手机

12

主题

191

回帖

673

积分

高级会员

积分
673
发表于 2024-12-8 12:34:21 | 显示全部楼层

qiang

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:146
  • 最近打卡:2025-05-01 20:15:37

2

主题

73

回帖

236

积分

中级会员

积分
236
发表于 2024-12-9 12:32:31 | 显示全部楼层

qiang

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-02-28 11:44:43
已绑定手机

4

主题

21

回帖

100

积分

注册会员

积分
100
发表于 2025-2-14 11:35:57 | 显示全部楼层
学习了,谢谢分享
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 06:36 , Processed in 0.121106 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表