如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
//common.h#ifndef__COMMON_H__#define__COMMON_H__#include<reg52.h>#include<intrins.h>typedefunsignedintuint;typedefunsignedcharuchar;#endif//!__COMMON_H__//TouchPad.c#define__TOUCHPAD_C__#include"TouchPad.h"//我的屏幕接口//#include"gdi.h"sbitTP_CLK=P1^4;//时钟sbitTP_CS=P1^5;//片选sbitTP_IN=P1^6;//数据输入//sbitTP_BUSY=P1^3;//我没有使用忙碌标志sbitTP_OUT=P1^7;//数据输出sbitTP_IRQ=P3^2;//通过INT0通知MCU/**函数:检测触摸屏是否处于中断中,在中断中调用检测*参数:(无)*返回:0-没有,非0:触摸屏被按下*/uchartp_isirq(void){return!(uchar)TP_IRQ;}//开启外部中断1,通过外部中断通知MCUvoidtp_init(void){EX0=1;IT0=1;EA=1;TP_CS=1;TP_CLK=1;TP_IN=1;TP_CLK=1;}/*函数:SPI方式写一个字节*参数:ch:uchar:字节值*返回:(无)*/voidtp_write(ucharch){uchark;TP_CLK=0;for(k=0;k<8;k++){ch<<=1;TP_IN=CY;TP_CLK=0;_nop_();TP_CLK=1;_nop_();}}/**函数:SPI方式读函数*参数:(无)*返回值:12位有效数据*/uinttp_read(void){uchark;uintret=0;for(k=0;k<12;k++){ret<<=1;TP_CLK=1;_nop_();TP_CLK=0;_nop_();if(TP_OUT)ret++;}returnret;}/**函数:取得X,Y的坐标,但没有比较采样*参数:structtp_point的结构体指针*返回:(无)*注释:外部不要调用,有误差*/voidtp_get_pt(structtp_point*pt){TP_CS=0;tp_write(0x90);//读取YTP_CLK=1;_nop_();TP_CLK=0;_nop_();pt->y=tp_read();tp_write(0xd0);//读取XTP_CLK=1;_nop_();TP_CLK=0;_nop_();pt->x=tp_read();TP_CS=1;}/**函数:取得触摸屏坐标函数*参数:int型的x,y的指针*返回值:*返回0-采样失败*返回非0-有效采样*/inttp_get(int*px,int*py){structtp_pointpt1;structtp_pointpt2;intx,y;//两次取值并采样tp_get_pt(&pt1);tp_get_pt(&pt2);x=pt1.x-pt2.x;y=pt1.y-pt2.y;//误差不是很大则有效if(x<2&&y<2){//这个计算还不清楚,资料上的*px=240-(pt1.x-330)*10/142;*py=320-(pt1.y-380)/11;return1;}return0;}//TouchPad.h/*文件:TouchPad.h描述:触摸屏相关支持文件时间:2012-11-02作者:女孩不哭Q--Q:191035066文本:ts=4,sw=4,sts=4*/#ifndef__TOUCHPAD_H__#define__TOUCHPAD_H__#include"common.h"//common.h/*typedefunsignedcharuchar;typedefunsignedintuint;#include<reg52.h>*/inttp_get(int*px,int*py);//获取当前坐标点,返回值不为零为有效voidtp_init(void);//触摸屏初始化函数uchartp_isirq(void);//判断触摸屏是否依然在中断中#ifdef__TOUCHPAD_C__//内部结构,函数structtp_point{intx;inty;};voidtp_get_pt(s