touch.c

来自「STM32驱动nrf24l01」· C语言 代码 · 共 78 行

C
78
字号
#include "touch.h"
#include "custom.h" 
//读取一次X,Y值
//读到的X,Y坐标值必须都大于100
//成功返回1,不成功返回0
//读数限制在100~3800之间.

unsigned int X,Y;

void start_spi(void)   
{ 	  
	//TCLK_SET(0);   
	//TCS_SET(1); 	 
	//TDIN_SET(1);  
	//sTCLK_SET(1);
	//SPI_Flash_SendByte(1);  
	TCS_SET(0);   
}

u8 read_once(void)
{	
	unsigned int a,b;
	start_spi();//启动SPI 
	delay_u(3);	
	SPI_Flash_SendByte(SPI1,CMD_RDY); 	//	FLASH操作基本函数,发送一个字节
	delay_u(3);	
	a=SPI_Flash_ReadByte(SPI1,0);  	//flash操作基本函数,读一个字节
	a=a<<8;
	a|=SPI_Flash_ReadByte(SPI1,0);	//flash操作基本函数,读一个字节
	a>>=3; 
	X=a;	  
  SPI_Flash_SendByte(SPI1,CMD_RDX);  //	FLASH操作基本函数,发送一个字节
	delay_u(3);	
	b=SPI_Flash_ReadByte(SPI1,0);	//flash操作基本函数,读一个字节
	b=b<<8;
	b|=SPI_Flash_ReadByte(SPI1,0);	//flash操作基本函数,读一个字节
	b>>=3; 
	Y=b;   
	TCS_SET(1); 
	if(X>100&&Y>100&&X<4000&&Y<4000)
	{
	     return 1;//读数成功(范围限制)
	}
	else{ return 0;			                 //读数失败
	}		//=1 
}

void Read_Ads7843(void)
{
	uint dataBuff[2][10];
	uchar a = 1;
	uchar t = 0;
	unsigned long j,k;
	while(a && !PEN)
	{
		if(read_once() == 1)
		{
			dataBuff[0][t] = X;
			dataBuff[1][t] = Y;
			t++;
			if(t == 10)
				a = 0;
		}
		else
		{}
	}
	if(10 == t)
	{
		for(t = 0;t < 10;t++)
		{
			j += dataBuff[0][t];
			k += dataBuff[1][t];	
		}
		X = j / 10;
		Y = k / 10;
	}
}

⌨️ 快捷键说明

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