⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ocmj15x20d_touch.c

📁 触摸屏中断控制程序
💻 C
字号:
 //中断方式
//==============================================================================
//本触摸屏程序只适用于金鹏公司D型液晶模块,显示点数按OCMJ15X20D液晶模块显示,即320X240点阵显示。
//本程序利用液晶模块的触摸屏中断信号输出到lcd_int脚由MCU的INT0接收。
//==============================================================================
#include "init.c"

uchar code tab1[] = "      金鹏电子有限公司D系列液晶模块    "
		    "          内嵌触摸屏功能演示程序        "
		    "              No-Touch!!                "
                    "               X=                       "
                    "               Y=                       ";
                    
uchar code tab2[] = "No-Touch!!";
uchar code tab3[] = "Touch-Now!";

//==============================================================================
void Get_Touch_XY(void)
{
	uchar temp;
	uint X1, X2, Y1 ,Y2;
	
	lcd_regwrite(0xc0, 0xc0);//touch on,打开ADC
	
	Y1 = Touch_Y();
	X1 = Touch_X();
		
	Delay1ms(2);
			
	if(Test_Touch())
	{	
		Y2 = Touch_Y();
		X2 = Touch_X();
		
		if((X1==X2) && (Y1==Y2))
		{	
			/*已获得确实的触摸坐标X1、Y1*/
			
			gotoxy(14, 64);
			LCD_Bold();
			for(temp=0 ; temp<11 ; temp++)
			{	
				lcd_datawrite(tab3[temp]);
			}
			gotoxy(18, 96);
			Print_Hex(X1);
			gotoxy(18, 128);
			Print_Hex(Y1);
			LCD_NoBold();
			
			delay1 (100);
		}
	}
	lcd_regwrite(0xc0, 0x00);//touch off,关闭ADC对显示质量的干扰
	
	gotoxy(14, 64);
	for(temp=0 ; temp<11 ; temp++)
	{	
		lcd_datawrite(tab2[temp]);
	}
}

//==============================================================================
void lcd_touch_init(void)
{	
	uchar temp;
	
	temp=lcd_regread(0xa0)|0x04;//enable lcd touch int
	lcd_regwrite(0xa0, temp);
		
}
//==============================================================================
void Ext_int0(void) interrupt 0
{
	EA=0;
	
	if(0x40==(lcd_regread(0xa0)&0x40))      //test bit6 touch int is "1"?
	{
		Get_Touch_XY();
	}
	EA=1;
}
/******************************************************************************/
/*Main program 		  													  */
/******************************************************************************/
void main(void)
{
	uchar temp;
		
	lcd_reset();
  	lcd_initial();
	lcd_clear();
	
	lcd_touch_init();
	
	lcd_regwrite(0x10,0x6b);
   	lcd_regwrite(0x00,0xcd);
   	
	gotoxy(0, 0);
	for(temp=0 ; temp<199 ; temp++)
	{	
		lcd_datawrite(tab1[temp]);
	}
	
	IT0=1;
	EA=1;
	EX0=1;
	
	while(1);

}
		

⌨️ 快捷键说明

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