📄 touch.c
字号:
/**********************************
*
*
*
*
************************************/
#include <avr/io.h>
#include "spi.h"
#include "touch.h"
#include "tft.h"
unsigned int XY_POS[2]={0,0};
void TouchInit(void)
{
Touch_res();
DDRE |= (1<<TOUCH_CS);
DDRE &= ~(1<<TOUCH_INT); //PE4 connect to Touch screen interrupt
}
void Touch_set(void)
{
/*----SPI----*/
//SCLK = Fosc/64
//---SPCR |= (1<<SPR1) | (1<<SPR0) | (1<<CPHA);
SPCR |= (1<<SPR1) | (1<<SPR0);
SPSR |= (1<<SPI2X);
//asm("nop");
/*-----touch set-------*/
}
/**************************************************************************************
* 名 称: GetTouchADvalue
* 功 能: 得到触摸屏的AD值
* 参 数: 要采集的AD通道及命令
* 返 回 值:
* 备 注: 24 Clocks-per-Conversion
**************************************************************************************/
unsigned int GetTouchADvalue(unsigned char CMD)
{
unsigned char spi_data;
unsigned int ad_value = 0;
Touch_cs(); //片选
spi_data = spiTransferByte(CMD);
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
//ad_value = spi_send(0x00);
ad_value = spiTransferByte(0x00);
//ad_value |= spi_data;
//ad_value <<= 8;
//spi_data = spi_send(0x00);
spi_data = spiTransferByte(0x00);
ad_value <<= 8;
ad_value |= spi_data;
Touch_res(); //释放
ad_value >>= 3;
return ad_value;
}
/**************************************************************************************
* 名 称: Touch_XY
* 功 能: 计算XY在屏幕上的位置
* 参 数: 指针指向存放XY的AD值的数组
* 返 回 值: 无
*
**************************************************************************************/
void Touch_XY(unsigned int *pxy)
{
asm("nop");
asm("nop");
asm("nop");
}
/**************************************************************************************
* 名 称: DisplayPosition
* 功 能: 在液晶上的指定位置显示数字
* 参 数:
* 返 回 值: 无
* 备 注: 可以显示的数字范围0000~9999
**************************************************************************************/
void DisplayPosition(unsigned int x, unsigned int y, unsigned int Pos)
{
unsigned int temp;
unsigned char i;
temp = Pos;
i = temp/1000;
DrawAscii(x,y,(i+0x30),BLUE,WHITE, NORMAL);
temp = temp % 1000;
i = temp/100;
DrawAscii(x+8,y,(i+0x30),BLUE,WHITE, NORMAL);
temp = temp % 100;
i = temp/10;
DrawAscii(x+16,y,(i+0x30),BLUE,WHITE, NORMAL);
temp = temp % 10;
i = temp;
DrawAscii(x+24,y,(i+0x30),BLUE,WHITE, NORMAL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -