//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(); //電阻屏測試
}
|