<br /><br />我写了一个ADS7843控制4线触摸屏的程序,可是上电后只能读一次坐标,再触摸就无效了,请问是什么问题?cpu是C8051F022,代码如下:<br /><br />//SPI驱动部分<br />void start_ads7843(void)<br />{<br /> sck43=0;<br /> cs43=1;<br /> si43=1;<br /> sck43=1;<br /> cs43=0;<br />}<br /><br />void WriteTo7843(byte command) // 写7843命令<br />{<br /> byte count=0;<br /> sck43=0;<br /> for(count=0;count<8;count++)<br /> {<br /> if(command&0x80)<br /> si43=1;<br /> else<br /> si43=0;<br /> sck43=0;<br /> delay(2); <br /> sck43=1; // 上升沿有效<br /> delay(2); <br /> command<<=1;<br /> }<br />}<br /><br />word ReadFrom7843(void) // 读7843数据<br />{<br /> byte count=0;<br /> word coordinate=0;<br /> for(count=0;count<12;count++)<br /> {<br /> coordinate<<=1;<br /> sck43=1; <br /> delay(2);<br /> sck43=0; // 下降沿有效<br /> delay(2);<br /> if(so43) <br /> coordinate++;<br /> }<br /> return coordinate;<br />}<br /><br />void end_ads7843(void)<br />{<br /> sck43=1;<br /> cs43=1;<br />}<br /><br />//触摸读屏部分<br /> delay(200);<br /> start_ads7843();<br /> delay(2);<br /> WriteTo7843(0x90);<br /> delay(2);<br /> sck43=1;<br /> delay(2);<br /> sck43=0;<br /> delay(2);<br /> x_coordinate=ReadFrom7843();<br /> x_coordinate=(x_coordinate*240)/0x0fff;<br /> WriteTo7843(0xd0);<br /> delay(2);<br /> sck43=1;<br /> delay(2);<br /> sck43=0;<br /> delay(2);<br /> y_coordinate=ReadFrom7843();<br /> y_coordinate=(y_coordinate*320)/0x0fff;<br /> end_ads7843(); <br /> lcd_cross(((byte)(x_coordinate)),((word)(y_coordinate)),0); <br /> <br /> |
|