




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
触摸屏控制芯片ADS7843中文资料ADS7843是一个内置12位模数转换、低导通电阻模拟开关的串行接口芯片。供电电压2.75 V,参考电压VREF为1 V+VCC,转换电压的输入范围为0 VREF,最高转换速率为125 kHz。ADS7843引脚图及引脚功能说明了:ADS7843的引脚配置如图3所示。表1为引脚功能说明,图4为典型应用。aDS7843引脚说明ADS7843典型应用电路2.2 ADS7843的内部结构及参考电压模式选择ADS7843之所以能实现对触摸屏的控制,是因为其内部结构很容易实现电极电压的切换,并能进行快速A/D转换。图5所示为其内部结构,A2A0和SER/为控制寄存器中的控制位,用来进行开关切换和参考电压的选择。ADS7843支持两种参考电压输入模式:一种是参考电压固定为VREF,另一种采取差动模式,参考电压来自驱动电极。这两种模式分别如图6(a)、(b)所示。采用图6(b)的差动模式可以消除开关导通压降带来的影响。表2和表3为两种参考电压输入模式所对应的内部开关状况。2.3 ADS7843的控制字及数据传输格式ADS7843的控制字如表4所列,其中S为数据传输起始标志位,该位必为1。A2A0进行通道选择(见表2和3)。MODE用来选择A/D转换的精度,1选择8位,0选择12位。SER/选择参考电压的输入模式(见表2和3)。PD1、PD0选择省电模式:00省电模式允许,在两次A/D转换之间掉电,且中断允许;01同00,只是不允许中断;10保留;11禁止省电模式。为了完成一次电极电压切换和A/D转换,需要先通过串口往ADS7843发送控制字,转换完成后再通过串口读出电压转换值。标准的一次转换需要24个时钟周期,如图7所示。由于串口支持双向同时进行传送,并且在一次读数与下一次发控制字之间可以重叠,所以转换速率可以提高到每次16个时钟周期,如图8所示。如果条件允许,CPU可以产生15个CLK的话(比如FPGAs和ASICs),转换速率还可以提高到每次15个时钟周期,如图9所示。2.4 A/D转换时序的程序设计ADS7843的典型应用如图4所示。假设P接口与51单片机的P1.3P1.7相连,现以一次转换需24个时钟周期为例,介绍A/D转换时序的程序设计。; A/D 接口控制线DCLK BIT P1.3CS BIT P1.4DIN BIT P1.5BUSY BIT P1.6DOUT BIT P1.7; A/D 通道选择命令字和工作寄存器CHX EQU 094H ;通道X+的选择控制字CHY EQU 0D4H;通道Y+的选择控制字CH3 EQU 0A4HCH4 EQU 0E4HAD_CH EQU 35H ;通道选择寄存器AD_RESULTH EQU 36H ;存放12 bit A/D值AD_RESULTL EQU 37H; 存放通道CHX+的A/D值CHXAdResultH EQU 38HCHXAdResultL EQU 39H; 存放通道CHY+的A/D值CHYAdResultH EQU 3AHCHYAdResultL EQU 3BH; 采集通道CHX+的程序段(CHXAD)CHXAD: MOV AD_CH,#CHXLCALL AD_RUNMOV CHXAdResultH,AD_RESULTHMOV CHXAdResultL,AD_RESULTLRET; 采集通道CHY+的程序段(CHYAD)CHYAD: MOV AD_CH,#CHYLCALL AD_RUNMOV CHYAdResultH,AD_RESULTHMOV CHYAdResultL,AD_RESULTLRET; A/D转换子程序(AD_RUN); 输入: AD_CH-模式和通道选择命令字; 输出: AD_RESULTH,L ;12 bit的A/D转换值; 使用: R2 ;辅助工作寄存器AD_RUN:CLR CS ; 芯片允许CLR DCLKMOV R2,#8 ;先写8 bit命令字MOV A,AD_CHAD_LOOP:MOV C, ACC.7MOV DIN,C ;时钟上升沿锁存DINSETB DCLK ;开始发送命令字CLR DCLK ;时钟脉冲,一共24个RL ADJNZ R2,AD_LOOPNOPNOPNOPNOPADW0: JNB BUSY,AD_WAIT ;等待转换完成SJMP ADW1AD_WAIT:LCALL WATCHDOGNOPSJMP ADW0CLR DINADW1: MOV R2,#12 ;开始读取12bit结果SETB DCLKCLR DCLKAD_READ:SETB DCLKCLR DCLK ;用时钟的下降沿读取MOV A,AD_RESULTLMOV C,DOUTRLC AMOV AD_RESULTL,AMOV A,AD_RESULTHRLC AMOV AD_RESULTH,ADJNZ R2,AD_READMOV R2,#4 ;最后是没用的4个时钟IGNORE:SETB DCLKCLR DCLKDJNZ R2,IGNORESETB CS ;禁止芯片ANL AD_RESULTH,#0FH ;屏蔽高4 bitRET2.5 A/D转换结果的数据格式ADS7843转换结果为二进制格式。需要说明的是,在进行公式计算时,参考电压在两种输入模式中是不一样的。而且,如果选取8位的转换精度,1LSB=VREF/256,一次转换完成时间可以提前4个时钟周期,此时串口时钟速率也可以提高一倍。本文来自: DZ3W.COM 原文网址:/info/commonIC/0086705.htmlADS7843驱动程序(C语言源程序)ADS7843是一个内置12位模数转换、低导通电阻模拟开关的串行接口芯片。供电电压2.75 V,参考电压VREF为1 V+VCC,转换电压的输入范围为0 VREF,最高转换速率为125 kHz。/=/ ADS7843 驱动程序(串行)/硬件连接: DCLK P00;/ CS P01; / DIN P02; / BUSY P03/ DOUT P04/ PENIRQP32;/ VDD-逻辑电源(+5V)/ VSS-GND(0V) /ADS7843.c/writer:谷雨 2008年7月23日于EDA实验室/=#include /STC单片机头文件#include#define uint unsigned int#define uchar unsigned charsbit DCLK = P00; /时钟信号,下降沿有效sbit CS = P01; /片选信号,低电平有效sbit DIN = P02; /串行数据输入sbit BUSY = P03; /忙信号sbit DOUT = P04; /串行数据输出sbit PENIRQ = P32; /键盘中断请求信号,低电平(负边沿)有效void Tranfer(char Data);uint average(uint a8);/=/函数名称:void delay(uint us)/函数功能:延时子函数/入口参数:us 延时时间/出口参数:无/=void delay(uint us)while(us-);/=/函数名称:void ADS7843_start(void)/函数功能:ADS7843启动/入口参数:无/出口参数:无/=void ADS7843_start(void)DCLK=0;CS=1;DIN=1;DCLK=1;CS=0;/=/函数名称:void ADS7843_wr(uchar dat)/函数功能:写ADS7843/入口参数:dat 写入的数据/出口参数:无/=void ADS7843_wr(uchar dat)uchar count;DCLK=0;for(count=0;count8;count+) dat=1; DIN=CY; DCLK=0; _nop_(); _nop_(); _nop_(); DCLK=1; _nop_(); _nop_(); _nop_();/=/函数名称:uint ADS7843_rd(void)/函数功能:读ADS7843/入口参数:无/出口参数:读回的坐标值/=uint ADS7843_rd(void)uchar count=0;uint dat=0;for(count=0;count12;count+) dat=1; DCLK=1; _nop_();_nop_();_nop_(); /下降沿有效 DCLK=0; _nop_();_nop_();_nop_(); if(DOUT) dat+;return(dat);/=/函数名称:void intr0_int() /函数功能:外中断0中断服务函数/入口参数:无/出口参数:无/=void intr0_int() interrupt 0 using 2 uint X=0,Y=0,a4,i, avex,avey,x8,y8;IE=0; /关中断delay(100); /中断后延时以消除抖动,使得采样数据更准确if(!PENIRQ) for(i=0;i8;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轴坐标 xi=X; ADS7843_wr(0xD0); /送控制字 11010000 即用差分方式读Y坐标 DCLK=1; _nop_(); _nop_(); _nop_(); _nop_(); DCLK=0; _nop_(); _nop_(); _nop_(); _nop_(); 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)/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使用工作方式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() /函数功能:主函数/入口参数:无/出口参数:无/=int main()/ uint b4;TCON=0x01; /设置外部中断0下降沿触发 EX0=1; /开外中断0 EA=1; /开总中断init_serial();while(1);/=/函数名称:uint
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 门窗设计施工合同(标准版)
- 团购合同(标准版)
- 路灯防汛经费申请报告(3篇)
- 局资产合同(标准版)
- Di-tert-butyl-Butylphosphonate-d7-生命科学试剂-MCE
- Dimephosphon-生命科学试剂-MCE
- Desmethyl-cyclobenzaprine-hydrochloride-生命科学试剂-MCE
- 员工突发疾病伤亡应急预案
- 压缩挤压伤害应急预案
- 2024-2025学年湖南省岳阳市临湘市七年级(下)期末数学试卷含答案
- 2025年北京市家庭居室装修工程施工合同
- 消防设备设施操作讲解培训课件P
- 2025年执业医师考试-中医师承及确有专长考核历年参考题库含答案解析(5卷单选一百题)
- 承装修试许可证管理办法
- 中国绳结课件
- 中国民族服饰课件
- 学堂在线 大学生国家安全教育 章节测试答案
- 2025楼宇平方效益评价规范
- 术后并发症护理
- 早读的好处教学课件
- 人教版高一上学期数学(必修一)《1.3集合的基本运算》同步练习题及答案
评论
0/150
提交评论