|
楼主 |
发表于 2014-11-27 09:28:26
|
显示全部楼层
//====================读屏函数================================================================
static unsigned short RD_AD(void)
{
unsigned short buf=0,temp;
unsigned char i;
TP_DIN(0);
TP_DCLK(1);
for(i=0;i<12;i++)
{
TP_DCLK(0);
temp= (TP_DOUT) ? 1:0;
buf|=(temp<<(11-i));
//Delayus(5);
TP_DCLK(1);
}
// TP_CS(1);
buf&=0x0fff;
return(buf);
}
//====================================================================================
int GUI_TOUCH_X_MeasureX(void)
{
int i[5],temp;
u8 cou=0,k=0;
WR_CMD(CHX);
RD_AD();
while(cou<5) //循环读数5次
{
WR_CMD(CHX);
cou++;
i[cou]=RD_AD();
}
//将数据升序排列
for(k=0;k<4;k++)
{
for(cou=1;cou<5-k;cou++)
{
if(i[cou]>i[cou+1])
{
temp=i[cou+1];
i[cou+1]=i[cou];
i[cou]=temp;
}
}
}
return (i[1]+i[2]+i[3])/3;
}
//====================================================================================
int GUI_TOUCH_X_MeasureY(void)
{
int i[5],temp;
u8 cou=0,k=0;
WR_CMD(CHY);
RD_AD();
while(cou<5) //循环读数5次
{
WR_CMD(CHY);
cou++;
i[cou]=RD_AD();
}
//将数据升序排列
for(k=0;k<4;k++)
{
for(cou=1;cou<5-k;cou++)
{
if(i[cou]>i[cou+1])
{
temp=i[cou+1];
i[cou+1]=i[cou];
i[cou]=temp;
}
}
}
return (i[1]+i[2]+i[3])/3;
}
unsigned int TOUCH_X(void)
{
unsigned int i;
i=GUI_TOUCH_X_MeasureX();
if(i<250||i>3800)return 800;
else return (3800-i)*40/(380-25);//2011年6月3日之后的屏用3850-350或3600-1000,之前的屏用3850-150
}
unsigned int TOUCH_Y(void)
{
unsigned int i;
i=GUI_TOUCH_X_MeasureY();
if(i<300||i>3800)return 800;
else return (3800-i)*24/(380-30);
}
void TP_GetAdXY(unsigned int *x,unsigned int *y)
{
unsigned int adx,ady;
adx=GUI_TOUCH_X_MeasureX();
ady=GUI_TOUCH_X_MeasureY();
*x=adx;
*y=ady;
}
unsigned int LCD_L0_GetPixelIndex(int x, int y)
{
return(GetPoint(x,y));
}
u16 GetPoint(u16 x,u16 y)
{
volatile u16 a;
WriteComm(0x2a);
WriteData(x>>8);
WriteData(x&0xff);
WriteComm(0x2b);
WriteData(y>>8);
WriteData(y&0xff);
a=0;a=0;a=0;a=0;a=0;
WriteComm(0x2E);
a=0;a=0;a=0;a=0;a=0;a=0;
a = *(__IO u16 *) (Bank1_LCD_D);
a=0;a=0;a=0;a=0;a=0;
a = *(__IO u16 *) (Bank1_LCD_D);
return a;
// return (a&0xf800)|((a&0x03f0)<<1)|((a&0x3)<<3)|(b>>13);
} |
|