日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 芯聞號(hào) > 充電吧
[導(dǎo)讀]TSC2046簡(jiǎn)介??????? TSC2046是一款電阻觸摸屏,電阻觸摸屏的工作原理主要是通過壓力感應(yīng)原理來實(shí)現(xiàn)對(duì)屏幕內(nèi)容的操作和控制的,這種觸摸屏屏體部分是一塊與顯示器表面非常配合的多層復(fù)合薄膜,

TSC2046簡(jiǎn)介


??????? TSC2046是一款電阻觸摸屏,電阻觸摸屏的工作原理主要是通過壓力感應(yīng)原理來實(shí)現(xiàn)對(duì)屏幕內(nèi)容的操作和控制的,這種觸摸屏屏體部分是一塊與顯示器表面非常配合的多層復(fù)合薄膜,其中第一層為玻璃或有機(jī)玻璃底層,第二層為隔層,第三層為多元樹脂表層,表面還涂有一層透明的導(dǎo)電層,上面再蓋有一層外表面經(jīng)硬化處理、光滑防刮的塑料層。在多元脂表層表面的傳導(dǎo)層及玻璃層感應(yīng)器是被許多微小的隔層所分隔電流通過表層,輕觸表層壓下時(shí),接觸到底層,控制器同時(shí)從四個(gè)角讀出相稱的電流及計(jì)算手指位置的距離。這種觸摸屏利用兩層高透明的導(dǎo)電層組成觸摸屏,兩層之間距離僅為2.5微米。當(dāng)手指觸摸屏幕時(shí),平常相互絕緣的兩層導(dǎo)電層就在觸摸點(diǎn)位置有了一個(gè)接觸,因其中一面導(dǎo)電層接通Y軸方向的5V均勻電壓場(chǎng),使得偵測(cè)層的電壓由零變?yōu)榉橇?,控制器偵測(cè)到這個(gè)接通后,進(jìn)行A/D轉(zhuǎn)換,并將得到的電壓值與5V相比,即可得觸摸點(diǎn)的Y軸坐標(biāo),同理得出X軸的坐標(biāo),這就是所有電阻技術(shù)觸摸屏共同的最基本原理。
數(shù)據(jù)手冊(cè):鏈接: http://pan.baidu.com/s/1pLxmr2b 密碼: j8uq

代碼

TSC2046.h
#ifndef?_TSC2046_H_
#define?_TSC2046_H_

#include?"lpc17xx.h"
#include?"Common.h"

#define?TSC2046_CS_GPIO		LPC_GPIO1
#define?TSC2046_CS_PIN		19
#define?TSC2046_DCLK_GPIO	LPC_GPIO1	
#define?TSC2046_DCLK_PIN	18
#define?TSC2046_DIN_GPIO	LPC_GPIO1	
#define?TSC2046_DIN_PIN		20
#define?TSC2046_DOUT_GPIO	LPC_GPIO1	
#define?TSC2046_DOUT_PIN	22
#define?TSC2046_PENING_GPIO	LPC_GPIO1	
#define?TSC2046_PENING_PIN	23

#define?TSC2046_CS_HIGH()						TSC2046_CS_GPIO???	->FIOSET?=?_BV(TSC2046_CS_PIN??)	
#define?TSC2046_CS_LOW()						TSC2046_CS_GPIO???	->FIOCLR?=?_BV(TSC2046_CS_PIN??)
#define?TSC2046_DCLK_HIGH()						TSC2046_DCLK_GPIO?	->FIOSET?=?_BV(TSC2046_DCLK_PIN)	
#define?TSC2046_DCLK_LOW()						TSC2046_DCLK_GPIO?	->FIOCLR?=?_BV(TSC2046_DCLK_PIN)
#define?TSC2046_DIN_HIGH()		????			TSC2046_DIN_GPIO??	->FIOSET?=?_BV(TSC2046_DIN_PIN?)	
#define?TSC2046_DIN_LOW()						TSC2046_DIN_GPIO??	->FIOCLR?=?_BV(TSC2046_DIN_PIN?)
#define?GET_TSC2046_DOUT()						(TSC2046_DOUT_GPIO	->FIOPIN?&?_BV(TSC2046_DOUT_PIN?))
#define?GET_TSC2046_PENING()					(TSC2046_PENING_GPIO->FIOPIN?&?_BV(TSC2046_PENING_PIN))

#define?TSC2046_MEASURE_X						0xD0
#define?TSC2046_MEASURE_Y						0x90
#define?TSC2046_MEASURE_Z1						0xB0
#define?TSC2046_MEASURE_Z2						0xC0

void?TSC2046_GPIO_Init(void);
void?TSC2046_Init(void);
uint32_t?TSC2046_ReadWithFilter(uint8_t?cmd);


#endif


TSC2046.c
#include?"TSC2046.h"
#include?"Delay.h"

//觸摸讀取次數(shù)??根據(jù)實(shí)際情況修改
#define?TSC2046_READ_TIMES?5
//丟棄值
#define?TSC2046_LOST_Val???1

void?TSC2046_GPIO_Init(void)
{
	TSC2046_CS_GPIO		->FIODIR?|=?_BV(TSC2046_CS_PIN);
	TSC2046_DCLK_GPIO	->FIODIR?|=?_BV(TSC2046_DCLK_PIN);
	TSC2046_DIN_GPIO	->FIODIR?|=?_BV(TSC2046_DIN_PIN);
	TSC2046_DOUT_GPIO	->FIODIR?&=?(~_BV(TSC2046_DOUT_PIN));
	TSC2046_PENING_GPIO	->FIODIR?&=?(~_BV(TSC2046_PENING_PIN));
}

void?Send_One_byte(uint8?data)
{
	uint8?i?=?0;
	for(i?=?0;i?<?8;i?++)
	{
		if(data?&?0x80)
		{
			TSC2046_DCLK_LOW();
			TSC2046_DIN_HIGH();
		}
		else
		{
			TSC2046_DCLK_LOW();
			TSC2046_DIN_LOW();
		}
		DelayUS(10);
		TSC2046_DCLK_HIGH();
		DelayUS(10);
		data?=	(?data<<?1);
	}
}

uint8?Read_One_byte()
{
	uint8?i?=?0;
	uint8?rec_data?=?0;
	for(i?=?0;i?<?8;i?++)
	{
		TSC2046_DCLK_LOW();
		DelayUS(10);
		rec_data?=?(rec_data?<<?1);
		if(GET_TSC2046_DOUT()?!=?0)
		{
			rec_data?|=?0x01;
		}
		TSC2046_DCLK_HIGH();
		DelayUS(10);
	}
	return?rec_data;
}

/*
排序函數(shù)
*/
void?SortBigToSmallUint16(uint16_t?*ptr,?uint8_t?n)
{
	uint8_t?i;
	uint16_t?*p;
	uint16_t?temp;

	if(n)
	{
		for(--n;?n;?--n)
		{
			p?=?ptr;
			for(i?=?0;?i?<?n;?++i)
			{
				if(*p?<?*(p?+?1))
				{
					temp?=?*p;
					*p?=?*(p?+?1);
					*(p?+?1)?=?temp;
				}
				++p;
			}
		}
	}
}


void?TSC2046_Init(void)
{
	TSC2046_GPIO_Init();
	TSC2046_CS_HIGH();
	
	DelayUS(10);
	
	TSC2046_CS_LOW();
	
	Send_One_byte(TSC2046_MEASURE_X);
	DelayUS(5);
	Send_One_byte(0);
	Send_One_byte(0);
	
	TSC2046_CS_HIGH();
}


uint16_t?TSC2046_Read(uint8_t?cmd)
{
	uint16?data;

	TSC2046_CS_LOW();
	Send_One_byte(cmd);
	DelayUS(5);
	data?=?Read_One_byte();
	data?<>?3);
}


uint32_t?TSC2046_ReadWithFilter(uint8_t?cmd)
{
	uint8_t?i;
	uint16_t?buf[14];
	uint32_t?temp;

	if(GET_TSC2046_PENING())
	{
		return?0;
	}
		
	for(i?=?14;?i;?--i)
	{
		buf[i]?=?TSC2046_Read(cmd);
	}
	
	SortBigToSmallUint16(&buf[0],?14);

	temp?=?0;
	for(i?=?5;?i?<?9;?++i)
	{
		temp?+=?buf[i];
	}
	temp?>>=?2;
	return?temp;
}


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉