xpt2046的简易驱动 xpt2046电路原理图

说明使用的一个网友发表的文件,提取了触摸屏部分

.h部分

#ifndef touch_H
#define touch_H

#define touch
#define CMD_RDY 0X90 //0B10010000即用差分方式读X坐标
#define CMD_RDX0XD0//0B11010000即用差分方式读Y坐标
#define TEMP_RD0XF0//0B11110000即用差分方式读Y坐标
#define ZLG7290 0x70

#define SubKey0x01
#define SubCmdBuf 0x07
#define SubDpRam 0x10
#define ZLG7290I2C_frequence 25000

extern uint8key;
extern uint8key_value_renew;//按键中断标志
extern uint8key_value_break;//按键中断标志
extern machine_work_state mystate;
//extern void __irq irq_EINT3(void);

#defineCHX 0x90
#defineCHY 0xD0

#defineT_CS((unsigned int)1<<17)
#define T_CLK((unsigned int)1<<18)
#define T_DIN((unsigned int)1<<16)
#define T_INT((unsigned int)1<<30)
#define T_DOUT ((unsignedint)1<<2)

//#define TP_BUSY(1<<21)

#define TP_CLK_0IO0CLR = IO0CLR | T_CLK
#define TP_CLK_1IO0SET = IO0SET | T_CLK

#defineTP_CS_0IO0CLR = IO0CLR | T_CS
xpt2046的简易驱动 xpt2046电路原理图
#defineTP_CS_1IO0SET = IO0SET | T_CS

#define TP_DIN_0IO0CLR = IO0CLR | T_DIN
#define TP_DIN_1IO0SET = IO0SET | T_DIN

#defineTP_DOUT( IO0PIN & T_DOUT )
#defineTP_INT_IN (IO0PIN & T_INT )

extern void Init_TouchPannel_Port(void);

//-----------------------------------------------------------------------
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//-----------------------------------------------------------------------
//-----------------------内部函数----------------------------------------
extern void WR_CMD(unsigned char cmd);
extern unsigned short RD_AD(void);
extern unsigned short Read_X(void);
extern unsigned short Read_Y(void);
//------------------------------------
extern void TP_GetAdXY(int *x,int *y);
extern unsigned char CheckTP_INT(void);
extern unsigned int touch_x_value;
extern unsigned int touch_y_value;
extern machine_work_state mystate;
#endif

.c部分

#include "config.h"






//#define SPI_REAL
//---------------------------------------------------------------
//---------------------------------------------------------------
//---------------------------------------------------------------


//------------ADS7843 GPIO PinConfig------------------------------------
//Write To ADS7843's Pin

//-----------------------------------------------------------------------
//#define TP_IRQ(IO0PIN&TP_INT)//for check pressed
//---------------------------------------------------------

//-----------------------------------------------------------------------
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//-----------------------------------------------------------------------
//----------------------具体函数实现-------------------------------------
//---------------------------------------------------------
unsigned short xt,yt;//touch data fit LCD,adjusted!!!!!!
unsigned short xr,yr;//real touch data from ad

unsigned int touch_x_value;
unsigned int touch_y_value;

//---------------------------------------------------------
unsigned char CheckTP_INT(void)
{
return (IO0PIN&T_INT);
}
//-----------------------------------------------------------------------
void Init_TouchPannel_Port(void)
{
PINSEL0 &= ~(0x03<< (2 * 2));//设置P0.2接GPIO Dout 液晶屏的数据输出引脚
IO0DIR &= ~(1<< 2); //dout数据输入端

PINSEL1 &= ~(0x03<< (16 *2 - 32));
IO0CLR |= (1 <<16); // din 数据输出端
IO0SET |= T_DIN;

PINSEL1 &= ~(0x03<< (17 *2 - 32));
IO0CLR |= (1 <<17); //cs
IO0SET |= T_CS;

PINSEL1 &= ~(0x03<< (18 *2 - 32));
IO0CLR |= (1 <<18); //clk
IO0SET |= T_CLK;

PINSEL1 &= ~(0x03<< (30 *2 - 32));
IO0CLR &= ~(1<< 30); //int
IO0SET |= T_INT;

}
//------------------------------------------------------------
void WR_CMD(unsigned char cmd)
{
unsigned char i;

TP_CS_1;
TP_DIN_0;
TP_CLK_0;
TP_CS_0;

for(i=0;i<8;i++)
{
if(cmd&0x80)TP_DIN_1;
else TP_DIN_0;

TP_CLK_1;
cmd<<=1;
TP_CLK_0;
}
}
//---------------------------------------------------
unsigned short RD_AD(void)
{
unsigned short OutData=0;
unsigned char i;

TP_DIN_0;
TP_CLK_1;

for(i=0;i<12;i++)
{
OutData<<=1;
TP_CLK_0;
if(IO0PIN&T_DOUT)
OutData|=0x0001;
TP_CLK_1;
}
for(i=0;i<4;i++)
{
TP_CLK_1;
TP_CLK_0;
}
TP_CS_1;

return(OutData);
}
//---------------------------------------------------
unsigned short Read_X(void)
{
unsigned short OutData;

WR_CMD(CHX);
OutData=RD_AD();
returnOutData;
}
//---------------------------------------------------
unsigned short Read_Y(void)
{
unsigned short OutData;

WR_CMD(CHY);
OutData=RD_AD();
returnOutData;
}

//------------------------------------------------------
void TP_GetAdXY(int *x,int *y)
{
#define TIME10 //循环读数次数 最大16次
unsigned char t=0,t1,count=0;
unsigned char X_EABLE=0,Y_EABLE=0;
unsigned shortdatabuffer[TIME]={0,0,0,0,0,0,0,0,0,0};//数据组
unsigned short temp=0;
while(TP_INT_IN==0&&count<TIME)//循环读数
{
databuffer[count]=Read_X();
count++;
}
if(count==TIME)//一定要读到TIME次数据,否则丢弃
{
do//将数据X升序排列
{
t1=0;
for(t=0;t<count-1;t++)
{
if(databuffer[t]>databuffer[t+1])//升序排列
{
temp=databuffer[t+1];
databuffer[t+1]=databuffer[t];
databuffer[t]=temp;
t1=1;
}
}
}while(t1);
*x=(databuffer[TIME/2-1]+databuffer[TIME/2]+databuffer[TIME/2+1])/3;
X_EABLE=1;
}

count=0;
while(TP_INT_IN==0&&count<TIME)//循环读数TIME次
{
databuffer[count]=Read_Y();
count++;
}
if(count==TIME)//一定要读到TIME次数据,否则丢弃
{
do//将数据X升序排列
{
t1=0;
for(t=0;t<count-1;t++)
{
if(databuffer[t]>databuffer[t+1])//升序排列
{
temp=databuffer[t+1];
databuffer[t+1]=databuffer[t];
databuffer[t]=temp;
t1=1;
}
}
}while(t1);
*y=(databuffer[TIME/2-1]+databuffer[TIME/2]+databuffer[TIME/2+1])/3;
Y_EABLE=1;
}

}
//-----------------------------------------------------
//--------------------------------------------------------------------------------------
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//-----------------------------End ofTouchPannel_ARM.H---------------------------------

  

爱华网本文地址 » http://www.aihuau.com/a/25101013/177686.html

更多阅读

调音台电路原理图 百灵达调音台说明书

调音台自8路、10路、12路、16路和24路等多种规格。按电路组成有常规型和内置功放型两大类。常规型又分内置电源和外配电源两种,各机型主要电路和结构大同小异。图1是结构框图,每个通道单独做在一块印刷板上,各通道电路通过多条母线与

手机充电器电路原理图分析 c945

对于市场上到处可见的手机充电器,万能充不断的增多,但质量又不是很高,经常会出现问题,扔了可惜,故教大家几招分析手机充电器原理的分析,希望能给大家修理带来些帮助。分析一个电源,往往从输入开始着手。220V交流输入,一端经过一个4007半波整

电动车电路原理图 电动车全车电路原理

电动车电路图大全电动车电路图大全常用电动车充电器根据电路结构可大致分为两种。 第一种是以uc3842驱动场效应管的单管开关电源,配合LM358双运放来实现三阶段充电方式。其电原理图和元件参数见 图表1点击图片在新窗口查看清晰大图图

手机充电器原理图 小米手机充电器电路图

手机充电器电路图 800x600 |102KBbbs.dianyuan.comusb手机充电器的原理是从电脑 505x276 |28KBwww.ddyjsd.cn手机充电器电路原理图分析 109x154 |8KBwww.nexoncn.com中兴手机充电器电路图 1801x1201 |164KBwww.hqew.com

声明:《xpt2046的简易驱动 xpt2046电路原理图》为网友襡兲明分享!如侵犯到您的合法权益请联系我们删除