STM32 触摸屏测试代码解析:电阻屏与电容屏测试
// 电阻触摸屏测试函数 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; } } const u16 POINT_COLOR_TBL[OTT_MAX_TOUCH]= { RED,GREEN,BLUE,BROWN,GRED }; // 电容触摸屏测试函数 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++)//最多 5 点触摸 { if((tp_dev.sta)&(1<<t))//判断是否有点触摸? { if(tp_dev.x[t]<lcddev.width&&tp_dev.y[t]<lcddev.height)//在 LCD 范围内 { 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]<16) { Load_Drow_Dialog();//清除 } } }else lastpos[t][0]=0XFFFF; } delay_ms(5);i++; if(i%20==0)LED0=!LED0; } } int main(void) { delay_init(); //延时函数初始化 uart_init(9600); //串口初始化为 9600 LED_Init(); //初始化与 LED 连接的硬件接口 LCD_Init(); //初始化 LCD KEY_Init(); //按键初始化 tp_dev.init(); //触摸屏初始化 POINT_COLOR=RED;//设置字体为红色 POINT_COLOR=RED;//设置字体为红色 LCD_ShowString(60,50,200,16,16,'Mini STM32'); LCD_ShowString(60,70,200,16,16,'TOUCH TEST'); LCD_ShowString(60,90,200,16,16,'ATOM@ALIENTEK'); LCD_ShowString(60,110,200,16,16,'2014/3/11'); if(tp_dev.touchtype!=0XFF)LCD_ShowString(60,130,200,16,16,'Press KEY0 to Adjust'); delay_ms(1500); Load_Drow_Dialog(); if(tp_dev.touchtype&0X80)ctp_test(); //电容屏测试 else rtp_test(); //电阻屏测试
原文地址: https://www.cveoy.top/t/topic/ne8L 著作权归作者所有。请勿转载和采集!