触摸屏控制器ADS7843的底层驱动程序设计,使用C写的_第1页
触摸屏控制器ADS7843的底层驱动程序设计,使用C写的_第2页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、触摸屏控制器ads7843的底层驱动程序设计,使用c写的 触摸屏掌握器ads7843的底层驱动程序设计,使用c写的 触摸屏掌握器ads7843的底层驱动程序设计,使用c写的 /=/ ads7843 驱动程序(串行)/硬件连接: dclk p00;/ cs p01; ! i/ f _! j. u! z' x3 u/ din p02; 9 i9 d4 u. w i% u6 t r/ busy p03/ dout p04) v, w l% j ? h8 l/ penirqp32;/ vdd-规律电源(+5v)/ vss-gnd(0v)/ads7843.c5 ' x8 ! h4 x;

2、o3 v5 g6 /2021年7月23日于eda试验室. ) g; r. x# j; b4 ? a: i3 m/=#include /stc单片机头文件#include#define uint unsigned int#define uchar unsigned char5sbit dclk = p00; /时钟信号,下降沿有效sbit cs = p01; /片选信号,低电平有效sbit din = p02; /串行数据输入) t9 psbit busy = p03; /忙信号sbit dout = p04; /串行数据输出sbit penirq = p32; /键盘中断恳求信号,低电平(负边

3、沿)有效void tranfer(char data);/uint average(uint a8);/=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 写入

4、的数据 o$ z0 $ m0 i6 z1 r/出口参数:无/=void ads7843_wr(uchar dat): a1 r; q- u7 # |1 vuchar count;dclk=0;for(count=0;count8;count+)* |3 u- 5 ?: sdat=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

5、 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/ xuint dat=0;for(count=0;count12;count+)6 u) q. e2dat=1;' zdclk=1; _nop_();_nop_();_nop_(); /下降沿有效dclk=0; _nop_();_nop_();_nop_();if(dout) 触摸屏掌握器ads7843的底层驱动程序设计,使用c写的 dat+;- n3 're

6、turn(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,a4,i, avex,avey,x8,y8;ie=0; /关中断delay(100); /中断后延时以消退抖动,使得采样数据更精确 v+if(!penirq)for(i=0;i8;i+) /进行8次数据

7、采集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轴坐标xi=x;ads7843_wr(0xd0); /送掌握字 11010000 即用差分方式读y坐标dclk=1;_nop_();_nop_();_nop_();_nop_();dclk=0;_nop_();_nop_();_nop_();_nop

8、_();y=ads7843_rd(); /读y轴坐标yi=y;cs=1;avex=average(x); /x坐标数据处理a0=avex/1000; /发上位机观看结果a1=(avex-a0*1000)/100;a2=(avex-a0*1000-a1*100)/10;a3=avex%10;tranfer(a0+48);tranfer(a1+48);tranfer(a2+48);tranfer(a3+48);avey=average(y); /y坐标数据处理a0=avey/1000; /发上位机观看结果a1=(avey-a0*1000)/100;a2=(avey-a0*1000-a1*100)/

9、10;a3=avey%10;tranfer(a0+48);tranfer(a1+48);tranfer(a2+48);tranfer(a3+48);for(i=0;i10;i+) /延时,在程序中依据详细状况改动delay(10000);ie=0x81; /开中断/=/函数名称:void init_serial()/函数功能:初始化串口;/入口参数:无/出口参数:无/=void init_serial()tmod=0x22; /定时器t1使用工作方式2th1=250; /设置初值tl1=250;tr1=1; /开头计时pcon=0x80; /smod=1;scon=0x50; /工作方式1,波

10、特率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 b4;tcon=0x01; /设置外部中断0下降沿触发ex0=1; /开外中断0ea=1; /开总中断init_serial();while(1);/=/函数名称:uint average(uint a8)/函数功能:数据处理程序,采集8次的数据,去掉最大值,去掉最小值,然后求平均/入口参数:数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论