void AD7843(void) //外部中断0 用来接受键盘发来的数据 { CS=0; //delayms(1); //中断后延时以消除抖动,使得采样数据更准确 //while(BUSY); //如果BUSY信号不好使可以删除不用 //delayms(1); WriteCharTo7843(0x90); //送控制字 10010000 即用差分方式读X坐标 详细请见有关资料 //while(BUSY); //如果BUSY信号不好使可以删除不用 //delayms(1); DCLK=1; _nop_(); _nop_(); _nop_(); _nop_(); DCLK=0; _nop_(); _nop_(); _nop_(); _nop_(); TP_Y=ReadFromCharFrom7843(); WriteCharTo7843(0xD0); //送控制字 11010000 即用差分方式读Y坐标 详细请见有关资料 DCLK=1; _nop_(); _nop_(); _nop_(); _nop_(); DCLK=0; _nop_(); _nop_(); _nop_(); _nop_(); TP_X=ReadFromCharFrom7843(); CS=1; }
//从7846/7843/XPT2046/UH7843/UH7846读取adc值 0x90=y 0xd0-x u16 ADS_Read_AD(unsigned char CMD) { u16 l; CS=0; WriteCharTo7843(CMD); //送控制字即用差分方式读X坐标 详细请见有关资料 DCLK=1; _nop_();_nop_();_nop_();_nop_(); DCLK=0; _nop_();_nop_();_nop_();_nop_(); l=ReadFromCharFrom7843(); CS=1; return l; }
void Read_Position_ADS7843(void) { unsigned int X, Y; static const unsigned char Cmd_X = 0x90, Cmd_Y = 0xD0; CS_0; DCLK_0; WriteCharTo7843(Cmd_Y); //__delay_cycles(4000); DCLK_1; __delay_cycles(BIT_DELAY); DCLK_0; __delay_cycles(BIT_DELAY); ad_result[0] = ReadFromCharFrom7843(); WriteCharTo7843(Cmd_X); //__delay_cycles(4000); DCLK_1; __delay_cycles(BIT_DELAY); DCLK_0; __delay_cycles(BIT_DELAY); ad_result[1] = ReadFromCharFrom7843(); }