欢迎来到虫虫下载站 | 资源下载 资源专辑 关于我们
虫虫下载站

c_entry.c

采用SDT编译的ads7843芯片的触摸屏驱动
C
字号:
#include "EP73121.h"
#include "touchpad.h"
#include "lcd.h"
#include "color.h"
#include "graphic.h"

unsigned long topbottomx[2];
unsigned long topbottomy[2];

extern void touchpane_disp(void);

unsigned long  touch_data_process( unsigned short *data_arrey)

{

	unsigned short i, j, t;
	unsigned long total = 0;
		for ( j = 1 ; j < 20 ; j++)
	   for ( i = 1 ; i <= 20 - j ; i ++)
	      if ( *(data_arrey+i) > *(data_arrey+i+1))
	         {t = *(data_arrey+i); *(data_arrey+i) = *(data_arrey+i+1); *(data_arrey+i+1) = t;}
	for (i = 5 ; i <15 ; i++)
	   total += *(data_arrey+i);
	total /= 10;
	return total;
}


int c_entry()
{
	unsigned short touch_buffer_x[20];
	unsigned short touch_buffer_y[20];
	
	unsigned int val;
	unsigned long valx = 0, valy = 0;
		
	unsigned char i;
	init_touchpad();
	
	init_lcd();

///////////////////////////////////
//	校正
///////////////////////////////////	
	do
	{	
				clear_lcd();

				draw_vline(1, 0, 5, RED);
	
				draw_hline(0, 5, 1, RED);

			while(1)
			{	
				val = INTSR1;

				if (val & 0x00000020)
				{	
					i = 10;
					while (!i--){
					topbottomx[0] = ReadX();			
					
					topbottomy[0] = ReadY();
					}
					
					for (i = 0 ; i <20 ; i ++){
					topbottomx[0] = ReadX();
					topbottomy[0] = ReadY();
					topbottomx[0] &=0x00000fff;
					topbottomy[0] &=0x00000fff;
					//CONSOL_Printf("valX=%d\tvalY=%d\n",topbottomx[0],topbottomy[0]);
					touch_buffer_x[i] = (unsigned short)(topbottomx[0] & 0x00000fff);
					touch_buffer_y[i] = (unsigned short)(topbottomy[0] & 0x00000fff);
					}
					val = INTSR1;
					
					while((val & 0x00000020) == 0x20)
					{
						val = INTSR1;
					}
					
					topbottomx[0] = touch_data_process(touch_buffer_x);
					topbottomy[0] = touch_data_process(touch_buffer_y);
		
					//topbottomy[0] &= 0x00000fff;
					//CONSOL_Printf("!!!EvalX=%d\tEvalY=%d\n",topbottomx[0],topbottomy[0]);
					break;	
				}
			}

				clear_lcd();
			
				draw_vline(319, 235, 240, RED);
	
				draw_hline(315, 320, 239, RED);
			while(1)
			{	

				val = INTSR1;
				
				if (val & 0x00000020)
				{	

					i = 10;
					while (!i--){
					topbottomx[1] = ReadX();			
					
					topbottomy[1] = ReadY();
					}
					
					for (i = 0 ; i <20 ; i ++){
					topbottomx[1] = ReadX();
					topbottomy[1] = ReadY();
					touch_buffer_x[i] = (unsigned short)(topbottomx[1] & 0x00000fff);
					touch_buffer_y[i] = (unsigned short)(topbottomy[1] & 0x00000fff);
					}
					val = INTSR1;
					
					while((val & 0x00000020) == 0x20)
					{
						val = INTSR1;
					}
					
					topbottomx[1] = touch_data_process(touch_buffer_x);
					topbottomy[1] = touch_data_process(touch_buffer_y);
		
					//topbottomy[0] &= 0x00000fff;
					//CONSOL_Printf("valX=%d\tvalY=%d\n",topbottomx[1],topbottomy[1]);
					break;
				}
			}	
				clear_lcd();
			
				draw_vline(160, 115, 125, RED);
	
				draw_hline(155, 165, 120, RED);
		
	
		while(1)
		{	
			val = INTSR1;
			if (val & 0x00000020)
			{	
				i = 10;
				while (!i--){
				valx = ReadX();			
				
				valy = ReadY();
				}
				
				for (i = 0 ; i <20 ; i ++){
				valx = ReadX();
				valy = ReadY();
				touch_buffer_x[i] = (unsigned short)(valx & 0x00000fff);
				touch_buffer_y[i] = (unsigned short)(valy & 0x00000fff);
				}
				val = INTSR1;
				
				while((val & 0x00000020) == 0x20)
				{
					val = INTSR1;
				}
				
				valx = touch_data_process(touch_buffer_x);
				valy = touch_data_process(touch_buffer_y);
	
				//topbottomy[0] &= 0x00000fff;
				//CONSOL_Printf("valX=%d\tvalY=%d\n",topbottomx[1],topbottomy[1]);
				break;
			}
		}	

		
			
/*		valx &= 0x000000fff;

		valy &= 0x000000fff;

		topbottomx[0] &= 0x00000fff;
		
		topbottomx[1] &= 0x00000fff;

		topbottomy[0] &= 0x00000fff;

		topbottomy[1] &= 0x00000fff;

*/
		valx = 320*(valx-topbottomx[0])/(topbottomx[1]-topbottomx[0]);
		
	
		valy = 240*(valy-topbottomy[0])/(topbottomy[1]-topbottomy[0]);

		//CONSOL_Printf("\n!!!cenvalX=%d\tcenvalY=%d\n",valx,valy);

	
	}while(!(valx<170 && valx>150 && valy<130 && valy>110));
	
	touchpane_disp();
	
	return 0;


}

void touchpane_disp(void)
{
	unsigned int val;
	unsigned long valx = 0, valy = 0;
	unsigned short i;
	unsigned short touch_buffer_x[20];
	unsigned short touch_buffer_y[20];
	
	while(1)
	{	

			val = INTSR1;
			if (val & 0x00000020)
			{	
				i = 10;
				while (!i--){
				valx = ReadX();			
				
				valy = ReadY();
				}
				
				for (i = 0 ; i <20 ; i ++){
				valx = ReadX();
				valy = ReadY();
				touch_buffer_x[i] = (unsigned short)(valx & 0x00000fff);
				touch_buffer_y[i] = (unsigned short)(valy & 0x00000fff);
				}
				val = INTSR1;
				
				while((val & 0x00000020) == 0x20)
				{
					val = INTSR1;
				}
				
				valx = touch_data_process(touch_buffer_x);
				valy = touch_data_process(touch_buffer_y);
	
				valx = 320*(valx-topbottomx[0])/(topbottomx[1]-topbottomx[0]);
					
					
				valy = 240*(valy-topbottomy[0])/(topbottomy[1]-topbottomy[0]);
				//CONSOL_Printf("valX=%x\tvalY=%x\n",valx,valy);
							
				clear_lcd();
				
				draw_vline(valx, valy-5, valy+5, RED);
				
				draw_hline(valx-5, valx+5, valy, RED);
			}
	}
	return;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -