把代码重写了一下,整齐多了,ADS7846是个好东西,呵呵~ //编译器:CCSC V4.032 //SPI口设成时钟上升沿采样,下降沿送数,时钟1.25MHz空闲为高电平。 int get_ads7846(int comm) { int a,b; a=spi_read(comm); //送控制字驱动X+X-,Y+做A/D输入 delay_us(200); //延时200us待采样稳定再转换(1米长的排线实测从100us开始出现明显偏差) a=spi_read(0x00); //发送0x00以便读取X轴坐标高字节 b=spi_read(0x00); //低字节 a<<=1; //取高字节的6:0位 b>>=7; //取低字节的第7位 return(a+b); //拼合成8位结果 } //读取触摸屏坐标,结果存入X,Y,Z1,Z2 //8位分辨率,差分模式,节电模式 void get_touch() { CST=0;//片选ADS7846 x=get_ads7846(0xd8); y=get_ads7846(0x98); z1=get_ads7846(0xb8); z2=get_ads7846(0xc8); CST=1; //关闭ADS7846 }
|