int main(void) { u8 key; u8 i=0; SystemInit(); delay_init(72); //延时初始化 NVIC_Configuration(); uart_init(9600); LED_Init(); KEY_Init(); LCD_Init(); POINT_COLOR=RED;//设置字体为蓝色 LCD_ShowString(60,50,"Mini STM32"); LCD_ShowString(60,70,"TOUCH TEST"); LCD_ShowString(60,90,"ATOM@ALIENTEK"); LCD_ShowString(60,110,"2011/1/1"); LCD_ShowString(60,130,"Press KEY0 to Adjust"); Touch_Init(); delay_ms(1500); Load_Drow_Dialog(); while(1) { key=KEY_Scan(); if(Pen_Point.Key_Sta==Key_Down)//触摸屏被按下 { Pen_Int_Set(0);//关闭中断 do { Convert_Pos(); Pen_Point.Key_Sta=Key_Up; if(Pen_Point.X0>216&&Pen_Point.Y0<16)Load_Drow_Dialog();//清除 else { Draw_Big_Point(Pen_Point.X0,Pen_Point.Y0);//画图 GPIOC->ODR|=1<<1; //PC1 上拉 } }while(PEN==0);//如果PEN一直有效,则一直执行 Pen_Int_Set(1);//开启中断 }else delay_ms(10); if(key==1)//KEY0按下,则执行校准程序 { LCD_Clear(WHITE);//清屏 Touch_Adjust(); //屏幕校准 Save_Adjdata(); Load_Drow_Dialog(); } i++; if(i==20) { i=0; LED0=!LED0; } }; }
//进入触摸屏校准函数 void Load_Adjust_Panel() { LCD_Clear(WHITE);//清屏 Touch_Adjust(); //屏幕校准 Save_Adjdata(); Load_Drow_Dialog(); }
//任务5 //触摸画笔 void TaskTouch(void *pdata) { LCD_ShowString(10,160,"Touch Panel"); while(1) { GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource1); //触摸中断线映射 if(Pen_Point.Key_Sta==Key_Down)//触摸屏被按下 { Pen_Int_Set(0);//关闭中断 Convert_Pos(); Pen_Point.Key_Sta=Key_Up; if(Pen_Point.X0>216&&Pen_Point.Y0>304)Load_Drow_Dialog();//清除 else if(Pen_Point.Y0>180) { Draw_Big_Point(Pen_Point.X0,Pen_Point.Y0);//画图 GPIO_SetBits(GPIOC,GPIO_Pin_1); } Pen_Int_Set(1);//开启中断 } OSTimeDlyHMSM(0,0,0,2); }; }
/* ********************************************************************************************************* * Description: Main function * Arguments : None * Returns : None ********************************************************************************************************* */ int main (void) { u8 key; u8 x0,y0,x1,y1,x2,y2; u8 r,a,b; unsigned char flag; tccolor=Blue; SystemInit(); UART0_Init(); LCD_Init (); LPC_GPIO0->FIODIR |= 0x00002C0; //P0.6 0.7 0.9 Output LPC_GPIO2->FIODIR |= 0x00000FF; //P2.13 input P2.0...P2.7 Output Touch_Init(); LCD_Color(0,0,239,239,White); Load_Drow_Dialog(); LCD_Color(279,0,40,40,White); while(1) { if(len==8) { len=0; flag=data[6]; switch(flag) { case 0x01: x0=data[0];y0=data[1];x1=data[2];y1=data[3]; pencolor=colorchange(data[7]); LCD_Color(0,0,239,239,pencolor); LCD_DrawLine(x0,y0,x1,y1); break; case 0x02: x0=data[0];y0=data[1];x1=data[2];y1=data[3];x2=data[4];y2=data[5]; pencolor=colorchange(data[7]); LCD_Color(0,0,239,239,pencolor); LCD_DrawTriangle(x0,y0,x1,y1,x2,y2); break; case 0x03: x0=data[0];y0=data[1];x1=data[2];y1=data[3]; pencolor=colorchange(data[7]); LCD_Color(0,0,239,239,pencolor); LCD_DrawRectangle(x0,y0,x1,y1); break; case 0x04: x0=data[0];y0=data[1];r=data[2]; pencolor=colorchange(data[7]); LCD_Color(0,0,239,239,pencolor); LCD_DrawCircle(x0,y0,r); break; case 0x05: x0=data[0];y0=data[1];a=data[2];b=data[3]; pencolor=colorchange(data[7]); LCD_Color(0,0,239,239,pencolor); LCD_DrawEllipse(x0,y0,a,b); } } key = KEY_Scan(); if(Pen_Point.Key_Sta==Key_Down) //Touch screen is pressed { Pen_Int_Set(0); //Closed interrupt do { Convert_Pos(); Pen_Point.Key_Sta=Key_Up; // Draw_Big_Point(Pen_Point.X0,Pen_Point.Y0); //Drawing if(Pen_Point.Y0>=240) { Load_Drow_Dialog(); switch(Pen_Point.X0/40) { case 0:LCD_Color(279,0,40,40,White);tccolor=Blue;break; case 1:LCD_Color(279,40,40,40,White);tccolor=Yellow;break; case 2:LCD_Color(279,80,40,40,White);tccolor=Green;break; case 3:LCD_Color(279,120,40,40,White);tccolor=Red;break; case 4:LCD_Color(279,160,40,40,White);tccolor=Purple;break; case 5:LCD_Color(279,200,40,40,White);tccolor=Cyan;break; } } /* else { LCD_Color(0,0,239,239,tccolor); }*/ }while(PEN==0); //While the Touch screen is pressing Pen_Int_Set(1); //Opene the interrupt } else delay1ms(1); } }