我用是ADS7846触摸屏驱动芯片,程序是把读到的转换值发到串口去观察的,但不管点击屏的哪里,得到的值都是一样的.我又用从网上拷下来的程序来测试,也是不管点哪得到的值都一样。我测试过,串口发送数字是正确的.我把程序贴上来,哪位高手帮我看一下好吗?调了好几天,实在没法了. uint ADS7846WR(uchar CtrlData) //7846的写和读 { uchar i; uint ReadData; CS=1; DCLK = 0; DIN = 0 delay(2); CS=0; for(i=0; i<8; i++) //上升沿写控制字 { if( (CtrlData&0x80) != 0 ) DIN=1; else DIN=0; delay(2); DCLK = 0; delay(2); DCLK = 1; CtrlData = CtrlData<<1; } DIN = 0; DCLK = 0; delay(4); DCLK = 1; delay(2);
ReadData = 0;
for(i=0; i<12; i++) //下降沿读转换值 { DCLK = 1; delay(2); DCLK = 0; if( DOUT != 0 ) ReadData = ReadData | 1; delay(2); if(i<12) ReadData = ReadData<<1; //位12不移位了 if(i==7) delay(4); } for(i=0;i<4;i++) { DCLK = 1; delay(2); DCLK = 0; delay(2); } CS = 1; return(ReadData); } void countPOS( ) { xPOS=ADS7846WR(0xD0); //转换X坐标 yPOS=ADS7846WR(0x90); //转换Y坐标 }
void pressINT( ) interrupt 0 //pen中断 { EA=0; delay(250); //去抖 if(screenINT==0) { countPOS( ); } EA=1; }
然后就是在主函数里将xPOS和yPOS分为4个8位的数发送到串口上显示了. 但在哪触摸得到的数值都是一样的,奇怪. 请大家帮我看看呵,或者哪位调试过触摸屏的,给我指点一下好吗. 谢谢了!! |