打印
[AVR单片机]

用ADS7843做触摸屏,大侠帮忙看一下程序,先行谢过

[复制链接]
1941|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
northerns|  楼主 | 2007-3-20 19:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用ADS7843做触摸屏,可是定义了一个触摸区域,却有N个区域反应,大侠帮忙看一下程序,先行谢过

这是程序:delay()的基数是1us,用的是128
uint read7843(uchar com)
{  uint data;
   uchar fori,dat;
   data=0;dat=0;
   DDRE=0x1f;
   PORTE=0x02;
   PORTE&=~(1<<1);//CS=0
   //PORTE&=~(1<<4);
    DDRE&=~(1<<3);    
   delay(10);
   for(fori=0;fori<8;fori++)
    {   
        PORTE&=~(1<<0);       //DCLK=0;
          delay(5);  
          if((com<<fori)&0x80)
            {
                PORTE|=(1<<2);//DIN=1;
            }
          else
            {
                  PORTE&=~(1<<2);//DIN=0;
            }
          
  
          delay(5);//DIN数值预置在DCLK上升沿之前至少100ns
          PORTE|=(1<<0);       //DCLK=1;
          delay(5);//低电平至少200ns
          PORTE&=~(1<<0);       //DCLK=0;
          delay(5);
    }
   for(fori=0;fori<3;fori++)
     {
      PORTE&=~(1<<0);//加至少3个机器周期
      delay(5);
      PORTE|=(1<<0);
      delay(5);
     }
     DDRE&=~(1<<3);
    for(fori=0;fori<12;fori++)
      {
          PORTE&=~(1<<0);//DCLK=0
        data<<=1;
        delay(5);//低电平至少200ns
        PORTE|=(1<<0);//DCLK=1;
        delay(5);
        dat=PINE;
        if(dat&0x08) data++;
        PORTE&=~(1<<0);//DCLK=0
        delay(5);
      }
    for(fori=0;fori<3;fori++)
     {
      PORTE|=(1<<0);//加至少3个机器周期
      delay(5);
      PORTE&=~(1<<0);
      delay(5);
     }
   PORTE|=(1<<1);//CS=1
   return (data);
}

相关帖子

沙发
1dqmoon| | 2007-3-20 21:12 | 只看该作者

要进行软件滤波的

使用特权

评论回复
板凳
northerns|  楼主 | 2007-3-21 09:04 | 只看该作者

那我该怎么做呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

33

帖子

0

粉丝