📄 ads7843.c
字号:
#include "44b.h"
#include "44blib.h"
#include "def.h"
#include "ads7843.h"
//#include "..\inc\lcdlib.h"
//#include "..\inc\glib.h"
//#include "..\inc\slib.h"
//typedef struct {int Min; int Max; } tMinMax;
//
//static tMinMax xyMinMax[2] = {
//#if ((GUI_TOUCH_SWAP_XY==0) && (GUI_TOUCH_MIRROR_X==0)) || ((GUI_TOUCH_SWAP_XY) && (GUI_TOUCH_MIRROR_Y==0))
// { GUI_TOUCH_AD_LEFT, GUI_TOUCH_AD_RIGHT },
//#else
// { GUI_TOUCH_AD_RIGHT, GUI_TOUCH_AD_LEFT },
//#endif
//#if ((GUI_TOUCH_SWAP_XY==0) && (GUI_TOUCH_MIRROR_Y==0)) || ((GUI_TOUCH_SWAP_XY) && (GUI_TOUCH_MIRROR_X==0))
// { GUI_TOUCH_AD_TOP, GUI_TOUCH_AD_BOTTOM }
//#else
// { GUI_TOUCH_AD_BOTTOM, GUI_TOUCH_AD_TOP }
//#endif
//};
//
///*********************************************************************
//*
//* Convert physical value into (logical) coordinates
//*/
//static int AD2X(int adx) {
// int r = adx - xyMinMax[0].Min;
// r *= GUI_TOUCH_XSIZE - 1;
// return r / (xyMinMax[0].Max - xyMinMax[0].Min);
//}
//
//static int AD2Y(int ady) {
// int r = ady - xyMinMax[1].Min;
// r *= GUI_TOUCH_YSIZE - 1;
// return r/(xyMinMax[1].Max - xyMinMax[1].Min);
//}
static void WR_CMD (U8 cmd) {
U8 buf;
U8 i,j;
TP_CS(1);
TP_DIN(0);
TP_DCLK(0);
TP_CS(0); //芯片允许
for(i=0;i<8;i++) {
buf=(cmd>>(7-i))&0x1; //MSB在前,LSB在后
TP_DIN(buf); //时钟上升沿锁存DIN
for(j=0;j<25;j++); //200ns
TP_DCLK(1); //开始发送命令字
for(j=0;j<25;j++); //200ns
TP_DCLK(0); //时钟脉冲,一共8个
}
}
static U16 RD_AD(void) {
U16 buf=0,temp;
U8 i,j;
TP_DIN(0);
TP_DCLK(1);
for(i=0;i<12;i++) {
for(j=0;j<25;j++); //200ns
TP_DCLK(0);
for(j=0;j<5;j++);
temp=TP_DOUT; //时钟下降沿读取,一共12个,MSB在前,LSB在后
buf|=(temp<<(11-i));
for(j=0;j<25;j++); //200ns
TP_DCLK(1);
}
for(i=0;i<4;i++) {
for(j=0;j<25;j++); //200ns
TP_DCLK(1);
for(j=0;j<25;j++); //200ns
TP_DCLK(0); //4个没用时钟
}
TP_CS(1); //禁止芯片
buf&=0x0fff; //屏蔽高4 bit
return(buf);
}
int Read_X(void) {
int i;
WR_CMD(CHX);
// while(TP_BUSY);
for(i=0;i<5;i++);
i=RD_AD();
return i;
}
int Read_Y(void) {
int i;
WR_CMD(CHY);
// while(TP_BUSY);
for(i=0;i<5;i++);
i=RD_AD();
return i;
}
/******************************************************************************
* get A/D xy
*/
void TP_GetAdXY(int *x,int *y) {
int adx,ady;
adx=Read_X();
ady=Read_Y();
*x=adx;
*y=ady;
}
///******************************************************************************
// * get touchscreen xy
// */
//void TP_GetScrXY(int *x,int *y) {
// int adx,ady,xx,yy;
//
// adx=Read_X();
// ady=Read_Y();
// xx=AD2X(adx);
// yy=AD2Y(ady);
//
// *x=xx;
// *y=yy;
//}
///******************************************************************************
// * show the cursor
// */
//void ShowCursor(int x, int y) {
// Glib_Line(x-2,y,x+2,y,0);
// Glib_Line(x,y-2,x,y+2,0);
//}
///******************************************************************************
// * test
// */
//#define TP_UP 0
//#define TP_DOWN 1
//void tp_test(void)
//{
// int adx,ady,scrx,scry,i;
// U32 TpStatus=TP_UP;
// for(;;){
// if(TpStatus==TP_UP){ //笔未压下状态位
// if(!TP_IRQ){ //得到笔压下中断信号
// Delay(50);
// if(!TP_IRQ){ //两次检测防干扰
// TP_GetAdXY(&adx,&ady); //读取A/D转换值
// TP_GetScrXY(&scrx, &scry); //读取屏幕坐标
// TpStatus=TP_DOWN; //设置压下状态
// ShowCursor(scrx,scry);
// Uart_Printf("\nadx=%d,ady=%d,scrx=%d,scry=%d",adx,ady,scrx,scry);
// }
// }
// }
// if(TpStatus==TP_DOWN){ //笔已压下状态位
// if(TP_IRQ) { //笔中断信号已经消失
// Delay(50);
// if(TP_IRQ) { //两次检测防干扰
// TpStatus=TP_UP; //设置笔未压状态位
// }
// }
// }
// if(GetKey()!=0xff)
// return;
// }
//}
//void test2(void) {
// int scrx,scry;
// while(!TP_IRQ){
//
//
// TP_GetScrXY(&scrx, &scry); //读取屏幕坐标
// PutPixel(scrx,scry,0);
//// Uart_Printf("\n XY(%4d,%4d)",scrx,scry);
//
//// Delay(10000);
//// if(GetKey()!=0xff)
//// return;
// }
//}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -