搜索
bottom↓
回复: 4

请教大家关于ADS7843的时序

[复制链接]

出0入0汤圆

发表于 2012-8-10 09:34:19 | 显示全部楼层 |阅读模式
我软件模拟的SPI对7843进行操作,12位的AD转换,我测试发现读回的AD转换值x坐标最大300多,y坐标最大2000多,而且位置不准,是不是我模拟时序的问题啊?下面是程序,请教大家了,谢谢。
//触摸控制接口
#define  DCLK_H     P3OUT|=(1<<0)
#define  DCLK_L     P3OUT&=~(1<<0)
#define  CS_H       P3OUT|=(1<<1)
#define  CS_L       P3OUT&=~(1<<1)
#define  DIN_L      P3OUT|=(1<<2)
#define  DIN_H      P3OUT&=~(1<<2)
#define  BUSY_OK       P3IN&0x08    //为0表示不繁忙可读数据
#define  DOUT       P3IN&0x10     //触摸屏的数据输出

#define  Penirq     P3IN&0x20    //触碰触摸屏时,ADS7843Penirq引脚由未触摸时的高电平变为低电平

struct  struct1  coordinate;  //定义一个结构变量,用于存放触摸点采样结果
unsigned int lx,ly;    //根据采集到的参数转换为TFT上的实际坐标值


void Init_2046()
{
        CS_H;
        DCLK_L;
        DIN_L;      
}


//写8位命令到触摸控制IC,模拟SPI
void  Write_2046(unsigned char temp)
{
        unsigned char i=0;
        for(i=0;i<8;i++)
        {
                if(temp&0x80)
                      DIN_H;
                else
                      DIN_L;
                DCLK_H;
                delay_us(4);
                DCLK_L;
                delay_us(4);
                temp<<=1;
        }
}
//从触摸IC读回12位数据
unsigned int Read_2046()
{
        unsigned char i=0;
        unsigned int temp=0;
        P3DIR&=~(1<<4);  //数据口设为输入
        for(i=0;i<12;i++)
        {
                DCLK_H;
                delay_us(4);
               
                if(DOUT)
                      temp++;
                temp<<=1;
               
                DCLK_L;
                delay_us(4);
        }
        P3DIR|=(1<<4);
        return temp;
}
//读取x y坐标 返回读取到的触摸点的电压值
struct struct1 AD_2046()
{
        struct struct1 pix;
        CS_L;
        Write_2046(0x90);   //送控制字
        DCLK_H;
        delay_us(4);
        DCLK_L;
        delay_us(4);
        pix.y=Read_2046();
        Write_2046(0xd0);   //读x坐标
        DCLK_H;
        delay_us(4);
        DCLK_L;
        delay_us(4);
        pix.x=Read_2046();
        CS_H;  
        return pix;  
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2012-8-10 12:34:26 | 显示全部楼层
顶一下。。。

出0入0汤圆

 楼主| 发表于 2012-8-11 11:08:11 | 显示全部楼层
请教下,我写的时序有问题吗

出0入0汤圆

 楼主| 发表于 2012-8-11 11:11:54 | 显示全部楼层
请教下,我写的时序有问题吗

出0入0汤圆

发表于 2012-12-18 10:51:37 | 显示全部楼层
void  Write_2046(unsigned char temp)
这个好像有问题     CLKH和CLKL换个位置

我的触摸屏坐标不成线性,郁闷
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 04:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表