Exemplo n.º 1
0
u16 TP_Read_AD(u8 CMD)
{
	u8 count=0;
	u16 Num=0;
	GPIO_ResetBits(GPIOB,GPIO_Pin_0);//TCLK=0;		//先拉低时钟
	GPIO_ResetBits(GPIOH,GPIO_Pin_7);//TDIN=0; 	//拉低数据线
	GPIO_ResetBits(GPIOF,GPIO_Pin_11);//TCS=0; 		//选中触摸屏IC
	TP_Write_Byte(CMD);//发送命令字
	delay_us(6);//ADS7846的转换时间最长为6us
	GPIO_ResetBits(GPIOB,GPIO_Pin_0);//TCLK=0;
	delay_us(1);
	GPIO_SetBits(GPIOB,GPIO_Pin_0);//TCLK=1;		//给1个时钟,清除BUSY
	delay_us(1);
	GPIO_ResetBits(GPIOB,GPIO_Pin_0);//TCLK=0;
	for(count=0;count<16;count++)//读出16位数据,只有高12位有效
	{
		Num<<=1;
		GPIO_ResetBits(GPIOB,GPIO_Pin_0);//TCLK=0;	//下降沿有效
		delay_us(1);
		GPIO_SetBits(GPIOB,GPIO_Pin_0);//TCLK=1;
 		if(DOUT)Num++;
	}
	Num>>=4;   	//只有高12位有效.
	GPIO_SetBits(GPIOF,GPIO_Pin_11);//TCS=1;		//释放片选
	return(Num);
}
Exemplo n.º 2
0
//从TPIC读取ADC值	   
unsigned int TP_Read_AD(unsigned char CMD)	  
{ 
  unsigned char i                                   ; 	  
  unsigned int  rec = 0                             ; 
  CLR_PSCK                                          ;	   	 
  CLR_TP_CS                                         ;	 
  TP_Write_Byte(CMD)                                ; // 发送命令字
  __delay_cycles(200)                               ; // 等待响应
  for(i=0;i<16;i++)  
  { 				  
    SET_PSCK                                        ;	   	 
    __delay_cycles(5)                               ;
    CLR_PSCK                                        ;	   	 
    rec          <<= 1                              ; 	 
    if(PMISO_IS_SET)    rec++                       ; 		 
  }  	
  rec            >>= 4                              ; //高12位有效
  SET_TP_CS                                         ;	 
  return(rec)                                       ;   
}
Exemplo n.º 3
0
u16 TP_Read_AD(u8 CMD)	  
{ 	 
	u8 count=0; 	  
	u16 Num=0; 
	TCLK=0;		//先拉低时钟 	 
	TDIN=0; 	//拉低数据线
	TCS=0; 		//选中触摸屏IC
	TP_Write_Byte(CMD);//发送命令字
	delay_us(6);//ADS7846的转换时间最长为6us
	TCLK=0; 	     	    
	delay_us(1);    	   
	TCLK=1;		//给1个时钟,清除BUSY	    	    
	TCLK=0; 	     	    
	for(count=0;count<16;count++)//读出16位数据,只有高12位有效 
	{ 				  
		Num<<=1; 	 
		TCLK=0;	//下降沿有效  	    	   
		TCLK=1;
		if(DOUT)Num++; 		 
	}  	
	Num>>=4;   	//只有高12位有效.
	TCS=1;		//释放片选	 
	return(Num);   
}