找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2565|回复: 0
收起左侧

关于显控触摸屏的应用

[复制链接]
ID:503806 发表于 2019-4-3 09:13 | 显示全部楼层 |阅读模式

//5个触控点的颜色(电容触摸屏用)            
const u16 POINT_COLOR_TBL[OTT_MAX_TOUCH]={RED,GREEN,BLUE,BROWN,GRED};  
//电阻触摸屏测试函数
void rtp_test(void)
{
u8 key;
u8 i=0;   
while(1)
{
   key=KEY_Scan(0);
  tp_dev.scan(0);   
  if(tp_dev.sta&TP_PRES_DOWN)   //触摸屏被按下
  {
    if(tp_dev.x[0]<lcddev.width&&tp_dev.y[0]<lcddev.height)
   {
    if(tp_dev.x[0]>(lcddev.width-24)&&tp_dev.y[0]<16)Load_Drow_Dialog();//清除
    else TP_Draw_Big_Point(tp_dev.x[0],tp_dev.y[0],RED);  //画图         
   }
  }else delay_ms(10); //没有按键按下的时候      
  if(key==KEY0_PRES) //KEY0按下,则执行校准程序
  {
   LCD_Clear(WHITE); //清屏
      TP_Adjust();    //屏幕校准
   TP_Save_Adjdata();  
   Load_Drow_Dialog();
  }
  i++;
  if(i%20==0)LED0=!LED0;
}
}
//电容触摸屏测试函数
void ctp_test(void)
{
u8 t=0;
u8 i=0;        
  u16 lastpos[5][2];  //最后一次的数据
while(1)
{
  tp_dev.scan(0);
  for(t=0;t<OTT_MAX_TOUCH;t++)
  {
   if((tp_dev.sta)&(1<<t))
   {
    if(tp_dev.x[t]<lcddev.width&&tp_dev.y[t]<lcddev.height)
    {
     if(lastpos[t][0]==0XFFFF)
     {
      lastpos[t][0] = tp_dev.x[t];
      lastpos[t][1] = tp_dev.y[t];
     }
     lcd_draw_bline(lastpos[t][0],lastpos[t][1],tp_dev.x[t],tp_dev.y[t],2,POINT_COLOR_TBL[t]);//画线
     lastpos[t][0]=tp_dev.x[t];
     lastpos[t][1]=tp_dev.y[t];
     if(tp_dev.x[t]>(lcddev.width-24)&&tp_dev.y[t]<20)
     {
      Load_Drow_Dialog();//清除
     }
    }
   }else lastpos[t][0]=0XFFFF;
  }
  
  delay_ms(5);i++;
  if(i%20==0)LED0=!LED0;
}
}

int main(void)
{

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168);  //初始化延时函数
uart_init(115200);  //初始化串口波特率为115200

LED_Init();     //初始化LED
  LCD_Init();     //LCD初始化
KEY_Init();     //按键初始化  
tp_dev.init();    //触摸屏初始化
  POINT_COLOR=RED;//设置字体为红色
LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");
LCD_ShowString(30,70,200,16,16,"TOUCH TEST");
LCD_ShowString(30,90,200,16,16,"nihao");
LCD_ShowString(30,110,200,16,16,"2014/5/7");
    if(tp_dev.touchtype!=0XFF)LCD_ShowString(30,130,200,16,16,"Press KEY0 to Adjust");//电阻屏才显示
delay_ms(1500);
  Load_Drow_Dialog();   

if(tp_dev.touchtype&0X80)ctp_test();//电容屏测试
else rtp_test();      //电阻屏测试
}


回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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