打印

请教版主 ADS7846的问题

[复制链接]
1850|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cgd555|  楼主 | 2009-4-30 15:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我最近做一个基于ADS7846 触摸屏的项目。板子做好了后,发现按触摸屏,ADS7846不能产生中断,请问是不是要对ADS7846进行配置,才能正常工作。但是,datasheet上没有相关的信息。请指教。 谢谢

相关帖子

沙发
救火车| | 2009-4-30 15:28 | 只看该作者

这样的问题,你可以联系AD公司的技术支持。

使用特权

评论回复
板凳
一条大河| | 2009-5-2 00:42 | 只看该作者

中断自动产生的

本帖最后由 一条大河 于 2010-6-30 14:29 编辑

这是我的一段驱动,你可以参考下<br /><br />void WriteChar7843 (unsigned char Data)<br />{<br />    unsigned char Count=0,i=0;<br />    ;P0DATA &= 0xfb; // dclk 拉低<br />    for (Count=0; Count<8; Count++)<br />    {<br />        if ((Data & 0x80) == 0x80)<br />        {<br />            ;P0DATA |= 0x40; // din输出高<br />        }<br />        else<br />        {<br />            ;P0DATA &= ~0x40; //din输出低<br />        }<br />        ;P0DATA &= 0xfb;    //命令实用dclk的上升沿<br />        i = 0;i = 0;i = 0;<br />        i = 0;i = 0;i = 0;<br />        i = 0;i = 0;i = 0;<br /><br />        ;P0DATA |= 0x04;<br />        i = 0;i = 0;i = 0;<br />        i = 0;i = 0;i = 0;<br />        i = 0;i = 0;i = 0;<br />        Data <<= 1;<br />    }<br />}<br /><br />unsigned int ReadFrom7843 (void)<br />{<br />    unsigned char Count;<br />    unsigned int i,Data;<br /><br />    <br />    ;P0DATA &= 0xfb;    //dclk 输出低<br />    i = 0;i = 0;i = 0;<br />    i = 0;i = 0;i = 0;<br />    i = 0;i = 0;i = 0;<br />    <br />    //for (Count=0; Count<12; Count++)<br />    for (Count=0; Count<16; Count++) //读16次<br />    {<br />        Data <<= 1;<br />        ;P0DATA |= 0x04;   //读数据实用dclk下降沿<br />        i = 0;i = 0;i = 0; // 延时用<br />        i = 0;i = 0;i = 0;<br />        i = 0;i = 0;i = 0;<br />        ;P0DATA &= 0xfb;<br />        i = 0;i = 0;i = 0;<br />        i = 0;i = 0;i = 0;<br />        i = 0;i = 0;i = 0;<br />        if ((P0DATA & 0x08) == 0x08)<br />        {<br />            Data |= 0x0001;<br />        }<br />        else<br />        {<br />            Data &= 0xfffe;<br />        }<br />    }<br />    Data >>= 4;<br />    return (Data);<br />    <br />}<br /><br />void interrupt(void)<br />{<br />    //请注意,在读数据的过程中,请关掉中断,<br />    //不然会产生重复触发<br />    Delay(10000); //延时消抖<br /><br />    WriteChar7843(0x90); //发读取x坐标命令<br />    Delay(30);<br />    Xnow = ReadFrom7843();//读取数据<br />        <br />    WriteChar7843(0xd0);//发读取y坐标命令<br />    Delay(30);<br />    Ynow = ReadFrom7843(); //读取数据<br />}<br /><br />另外,驱动是小事情啦,后面的消抖滤波可能会更麻烦一点呢。<br /><br />有问题可联系我qq

使用特权

评论回复
地板
cgd555|  楼主 | 2009-5-5 09:44 | 只看该作者

谢谢

使用特权

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

本版积分规则

6

主题

16

帖子

1

粉丝