www.pudn.com > TLC549_89C52.rar > TLC549_ADC.h, change:2009-08-03,size:1439b


/**************************************************************** 
 *TLC549的驱动程序 
 **************************************************************** 
*/ 
 
#ifndef _TLC549_ADC_H_ 
#define _TLC549_ADC_H_ 
 
#include<intrins.h> 
 
sbit CLK=P2^5; 
sbit DO=P2^4; 
sbit CS=P2^3; 
 
unsigned int Volt;              //电压换算值并扩大1000倍 
unsigned char LED[4];           //电压数据转换成数码管数字 
unsigned char TLC549_ADC(void);  //获得的电压数据 
void Data_Conversion(void);     //电压换算函数 
void Volt_To_LED(void);        //数码管显示函数 
 
/************************************************* 
 *数据采集函数TLC549_ADC(void) 
 ************************************************* 
 */ 
 unsigned char TLC549_ADC(void) 
 { 
     unsigned char i,tmp; 
     CS=1;     //CS置高,片选无效 
     CLK=0;     
 
     CS=0;     //CS置低,片选有效;同时DO输出最高位 
     _nop_(); 
     _nop_();   //适当延时 
 
     for(i=0;i<8;i++)  //串行数据移位输入 
     { 
	   tmp<<=1; 
	   tmp |=DO; 
 
	   CLK=1; 
	   _nop_(); 
	   CLK=0; 
	  } 
 
	  CS=1; 
	  for(i=17;i!=0;i--)    //下一次转换需要17us 
	   _nop_(); 
 
	  return(tmp); 
  } 
 
 void Data_Conversion(void) 
 { 
  unsigned char AD_Data; 
  AD_Data=TLC549_ADC(); 
  Volt=5.0 / 256 * AD_Data *1000; 
 } 
 
void Volt_To_LED(void) 
{ 
 Data_Conversion(); 
 LED[0]=Volt/1000;    //小数位 
 LED[1]=Volt/100%10;  //百位 
 LED[2]=Volt/10%10;   //十位 
 LED[3]=Volt%10;      //个位 
} 
 
#endif