当前位置:首页 > 芯闻号 > 充电吧
[导读]TSC2046简介        TSC2046是一款电阻触摸屏,电阻触摸屏的工作原理主要是通过压力感应原理来实现对屏幕内容的操作和控制的,这种触摸屏屏体部分是一块与显示器表面非常配合的多层复合薄膜,

TSC2046简介


        TSC2046是一款电阻触摸屏,电阻触摸屏的工作原理主要是通过压力感应原理来实现对屏幕内容的操作和控制的,这种触摸屏屏体部分是一块与显示器表面非常配合的多层复合薄膜,其中第一层为玻璃或有机玻璃底层,第二层为隔层,第三层为多元树脂表层,表面还涂有一层透明的导电层,上面再盖有一层外表面经硬化处理、光滑防刮的塑料层。在多元脂表层表面的传导层及玻璃层感应器是被许多微小的隔层所分隔电流通过表层,轻触表层压下时,接触到底层,控制器同时从四个角读出相称的电流及计算手指位置的距离。这种触摸屏利用两层高透明的导电层组成触摸屏,两层之间距离仅为2.5微米。当手指触摸屏幕时,平常相互绝缘的两层导电层就在触摸点位置有了一个接触,因其中一面导电层接通Y轴方向的5V均匀电压场,使得侦测层的电压由零变为非零,控制器侦测到这个接通后,进行A/D转换,并将得到的电压值与5V相比,即可得触摸点的Y轴坐标,同理得出X轴的坐标,这就是所有电阻技术触摸屏共同的最基本原理。
数据手册:链接: 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"

//触摸读取次数  根据实际情况修改
#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;
}

/*
排序函数
*/
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;
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭