触摸屏控制器ADS7843的底层驱动程序设计,使用C写的
更新时间:2023-08-15 05:41:01 阅读量: 人文社科 文档下载
- 触摸屏控制器的主要作用推荐度:
- 相关推荐
触摸屏控制器ADS7843的底层驱动程序设计,使用C写的
触摸屏控制器ADS7843的底层驱动程序设计,使用C写的
//=====================================================================
// ADS7843 驱动程序(串行)
//硬件连接: DCLK ——P0^0;
// CS ——P0^1; ! I/ f" _! j. U! Z' x3 U
// DIN ——P0^2; 9 I9 d4 u. W" I% U6 T R
// BUSY ——P0^3
// DOUT ——P0^4) v, W" L% J" ?& h8 L
// PENIRQ——P3^2;
// VDD--逻辑电源(+5V)
// VSS--GND(0V)
//ADS7843.c5 ]' X8 [! h4 X; o3 v5 G6 {
//2008年7月23日于EDA实验室. `) G; R. x# j; B4 ?" a: I3 M
//=====================================================================
#include //STC单片机头文件
#include
#define uint unsigned int
#define uchar unsigned char5
sbit DCLK = P0^0; //时钟信号,下降沿有效
sbit CS = P0^1; //片选信号,低电平有效
sbit DIN = P0^2; //串行数据输入) t9 p
sbit BUSY = P0^3; //忙信号
sbit DOUT = P0^4; //串行数据输出
sbit PENIRQ = P3^2; //键盘中断请求信号,低电平(负边沿)有效
void Tranfer(char Data);/
uint average(uint a[8]);
//====================================================================================
void delay(uint us)
{$
while(us--);
}
//====================================================================================
//函数名称:void ADS7843_start(void)
//函数功能:ADS7843启动2 Y) X- E,
//入口参数:无
//出口参数:无
//====================================================================================
void ADS7843_start(void)+ ~#
{
DCLK=0;; s4 ]'
CS=1;)
DIN=1;
DCLK=1;
CS=0;.
}
//====================================================================================
//函数名称:void ADS7843_wr(uchar dat): C! n0 D: t/ c
//函数功能:写ADS7843
//入口参数:dat 写入的数据 o$ z0 `$ m0 i6 Z1 r
//出口参数:无
//====================================================================================
void ADS7843_wr(uchar dat): A1 r; Q- u7 \# |1 V
{
uchar count;
DCLK=0;
for(count=0;count<8;count++)
{* |3 U- ^ @5 ?: S
dat<<=1;
DIN=CY;
DCLK=0;,
_nop_();
_nop_();
_nop_();
DCLK=1;9
_nop_();
_nop_();
_nop_();
}
}
//====================================================================================
//函数名称:uint ADS7843_rd(void)* i/ Z0 z y6 A& \, _. O# _
//函数功能:读ADS7843' E; t0 z/ A# V5 l, i8 h" o0 Y
//入口参数:无2 v* H, t( i7 b
//出口参数:读回的坐标值( ?+ g! ?, q$ y% p, e0 \
//====================================================================================
uint ADS7843_rd(void)
{
uchar count=0;5 w/ X
uint dat=0;"
for(count=0;count<12;c
ount++)6 u) q.
{" E2
dat<<=1;' Z
DCLK=1; _nop_();_nop_();_nop_(); //下降沿有效
DCLK=0; _nop_();_nop_();_nop_();
if(DOUT)
触摸屏控制器ADS7843的底层驱动程序设计,使用C写的
dat++;- N3
}'
return(dat);+
}8 M! H2 l,
//==================================================================================== ?3 m# `6 c# g
//函数名称:void intr0_int()
//函数功能:外中断0中断服务函数1 i% Y9 w6 }8 Y3 w) @8 N. ?
//入口参数:无+ p* P4 {- @! s) M( b6 L* g9 J7 ?5 N
//出口参数:无
//====================================================================================
void intr0_int() interrupt 0 using 2
{#
uint X=0,Y=0,a[4],i, avex,avey,x[8],y[8];
IE=0; //关中断
delay(100); //中断后延时以消除抖动,使得采样数据更准确" v+
if(!PENIRQ)
{
for(i=0;i<8;i++) //进行8次数据采集
{
ADS7843_start();
delay(2);
ADS7843_wr(0x90);//送控制字 10010000 即用差分方式读X坐标
delay(2);
DCLK=1;
_nop_();
_nop_();
_nop_();
_nop_();
DCLK=0;
_nop_();
_nop_();
_nop_();
_nop_();
X=ADS7843_rd(); //读X轴坐标
x[i]=X;
ADS7843_wr(0xD0); //送控制字 11010000 即用差分方式读Y坐标
DCLK=1;
_nop_();
_nop_();
_nop_();
_nop_();
DCLK=0;
_nop_();
_nop_();
_nop_();
_nop_();
Y=ADS7843_rd(); //读Y轴坐标
y[i]=Y;
CS=1;
}
avex=average(x); //X坐标数据处理
a[0]=avex/1000; //发上位机观察结果
a[1]=(avex-a[0]*1000)/100;
a[2]=(avex-a[0]*1000-a[1]*100)/10;
a[3]=avex%10;
Tranfer(a[0]+48);
Tranfer(a[1]+48);
Tranfer(a[2]+48);
Tranfer(a[3]+48);
avey=average(y); //Y坐标数据处理
a[0]=avey/1000; //发上位机观察结果
a[1]=(avey-a[0]*1000)/100;
a[2]=(avey-a[0]*1000-a[1]*100)/10;
a[3]=avey%10;
Tranfer(a[0]+48);
Tranfer(a[1]+48);
Tranfer(a[2]+48);
Tranfer(a[3]+48);
for(i=0;i<10;i++) //延时,在程序中根据具体情况改动
delay(10000);
}
IE=0x81; //开中断
}
//====================================================================================
//函数名称:void init_serial()
//函数功能:初始化串口;
//入口参数:无
//出口参数:无
//====================================================================================
void init_serial()
{
TMOD=0x22; //定时器T1使用工作方式2
TH1=250; //设置初值
TL1=250;
TR1=1; //开始计时
PCON=0x80; //SMOD=1;
SCON=0x50; //工作方式1,波特率9600bit/s,允许接收
TI=1;
}
//====================================================================================
//函数名称:void Tranfer(char Data)
//函数功能:发送数据程序
//入口参数data 要发送的数据
//出口参数:无
//====================================================================================
void Tranfer(char Data)
{
while(TI==0);
SBUF=Data;
TI=0;
}
//====================================================================================
//函数名称:int main()
//函数功能:主函数
//入口参数:无
//出口参数:
触摸屏控制器ADS7843的底层驱动程序设计,使用C写的
无
//====================================================================================
int main()
{
// uint b[4];
TCON=0x01; //设置外部中断0下降沿触发
EX0=1; //开外中断0
EA=1; //开总中断
init_serial();
while(1);
}
//====================================================================================
//函数名称:uint average(uint a[8])
//函数功能:数据处理程序,采集8次的数据,去掉最大值,去掉最小值,然后求平均
//入口参数:数组首地址
//出口参数:平均值
//====================================================================================
uint average(uint a[8])
{
uint max,min,i,av
e=0,sum=0;
max=a[0];
min=a[0];
for(i=0;i<8;i++)
{
oif(maxif(min>a[i])min=a[i];
sum+=a[i];
}
ave=(sum-min-max)/6;
return ave;
}
正在阅读:
触摸屏控制器ADS7843的底层驱动程序设计,使用C写的08-15
学校网络安全突发事件应急预案11-18
CBOC信号处理中的二次采样方法08-10
八年级第二章人教版动物的运动和行为第一节动物的运动08-15
Java1试题加答案()02-03
2017-2023年中国微电子组件市场前景展望分析及竞争格局预测研发报告(目录)01-22
2017高三数学备课组工作计划精选06-18
实验九--羧酸和取代羧酸的性质04-30
- 粮油储藏基础知识
- 论文范文(包括统一封面和内容的格式)
- 经典解题方法
- 综合部后勤办公用品管理办法+领用表
- 学生宿舍突发事件应急预案
- 16秋浙大《生理学及病理生理学》在线作业
- 四分比丘尼戒本(诵戒专用)
- 浙江财经大学高财题库第一章习题
- 九大员岗位职责(项目经理、技术负责人、施工员、安全员、质检员、资料员、材料员、造价员、机管员)
- 旅游财务管理习题(学生版)
- 德阳外国语高二秋期入学考试题
- 投资学 精要版 第九版 第11章 期权市场
- 控制性详细规划城市设计认识
- bl03海运提单3国际贸易答案
- 2010-2011学年湖北省武汉市武珞路中学七年级(上)期中数学试卷
- VB程序填空改错设计题库全
- 教师心理健康案例分析 - 年轻班主任的心理困惑
- 民间借贷司法解释溯及力是否适用?
- 三联书店推荐的100本好书
- 《化工原理》(第三版)复习思考题及解答
- 触摸屏
- 底层
- 程序设计
- 控制器
- ADS7843
- 驱动
- 使用
- 海德堡上海青浦工厂二期工程正式投产
- 管理中的协调和沟通123
- 马克思主义基本原理
- 2005年高考理科数学(湖南卷)试题及答案
- 2012山东高考语文试卷答案
- 第九章_污水管网设计与计算
- 单词的循环重复记忆法
- 2014年春季运动会秩序册
- KPI+PBC绩效考核实战培训课程大纲
- 高等教育与地方经济发展
- 4.3 用一元一次方程解决问题(2)
- 实验报告-利用单臂路由实现VLAN间的路由
- 美国华盛顿大学商科硕士项目排名及招生要求
- 高中语文教师年度考核工作总结
- 2010年全国高考理科数学试题及答案-天津(word版)
- 流程梳理:流程E化的必经之路
- 重庆市2008年中考物理试题(word版无答案)
- 第1章 常见故障分
- 植物学教学实习实验报告
- 软包装检测与控制技术