📄 ads7843.c
字号:
//==================================================================
//文件: ADS7843.c
//修改: 李光祥 chenfengmcu@126.com
//日期: 2008/10/9
//描述:
//
//版本历史记录 V1.0
//==================================================================
#include "44b.h"
#include "ads7843.h"
static INT16U x,y;
//------------------------------------------------------------------
// 函数名 : void ADS7843_Delay(INT8U time)
// 输入 : 延时时间
// 输出 : Null
// 全局变量: Null
// 功能描述: 延时
//------------------------------------------------------------------
void ADS7843_Delay(INT8U time)
{
INT8U i;
for(i=0;i<time;i++);
}
//------------------------------------------------------------------
// 函数名 : void ADS7843_Init(void)
// 输入 : Null
// 输出 : Null
// 全局变量: Null
// 功能描述: 初始化
//------------------------------------------------------------------
void ADS7843_Init(void)
{
//端口配置?
}
//------------------------------------------------------------------
// 函数名 : INT16U ADS7843_Get(INT8U cmd)
// 输入 : cmd 配置命令
// 输出 : 坐标
// 全局变量: Null
// 功能描述: 得到坐标
//------------------------------------------------------------------
INT16U ADS7843_Get(INT8U cmd)
{
INT16U buf=0;
INT8U temp,i;
TP_DCLK(0);
TP_CS(1);
TP_DIN(1);
TP_DCLK(1);
TP_CS(0);
ADS7843_Delay(5); //40us
//while(TP_BUSY); //等待转换完成
TP_DCLK(0);
for(i=0;i<8;i++)
{
temp = (cmd>>(7-i))&0x1;//MSB在前,LSB在后
TP_DIN(temp); //时钟上升沿锁存DIN
ADS7843_Delay(25); //200ns
TP_DCLK(1); //开始发送命令字
ADS7843_Delay(25); //200ns
TP_DCLK(0); //时钟脉冲
}
ADS7843_Delay(25); //200ns
for(i=0;i<12;i++)
{
buf=buf<<1 ;
TP_DCLK(1);
ADS7843_Delay(25); //200ns
TP_DCLK(0);
ADS7843_Delay(5); //时钟下降沿读取,MSB在前
if(TP_DOUT) buf=buf+1;
ADS7843_Delay(20); //200ns
}
for(i=0;i<4;i++)
{
TP_DCLK(1);
ADS7843_Delay(25); //200ns
TP_DCLK(0);
ADS7843_Delay(25); //200ns
}
TP_CS(1);
return buf;
}
//------------------------------------------------------------------
// 函数名 : INT16U ADS7843_GetX(void)
// 输入 : cmd 配置命令
// 输出 : 坐标
// 全局变量: Null
// 功能描述: 得到坐标X
//------------------------------------------------------------------
INT16U ADS7843_GetX(void)
{
INT16U x0,x1;
if(TP_IRQ==0)
{
x0=ADS7843_Get(CHX)/(4095/240);
x1=ADS7843_Get(CHX)/(4095/240);
if(x0==x1) x=x0;
}
else
{
x=0;
y=0;
}
return x;
}
//------------------------------------------------------------------
// 函数名 : INT16U ADS7843_GetY(void)
// 输入 : cmd 配置命令
// 输出 : 坐标
// 全局变量: Null
// 功能描述: 得到坐标Y
//------------------------------------------------------------------
INT16U ADS7843_GetY(void)
{
INT16U y0,y1;
if(TP_IRQ==0)
{
y0=ADS7843_Get(CHY)/(4095/320);
y1=ADS7843_Get(CHY)/(4095/320);
if(y0==y1) y=y0;
}
else
{
x=0;
y=0;
}
return y;
}
//------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -