?? 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 + -