⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad7887.c

📁 高速12位AD芯片.AD7887.读写芯片和AD数据C代码.
💻 C
字号:

sbit adc_cs = P3^7;
sbit adc_sclk = P3^2;
sbit adc_dout = P3^3;
sbit adc_din = P3^4;

uint ad7887_tmp;

void ad7887_poweron(void);
void ad7887_readdata(void);


 void ad7887_readdata(void)
{
//  31
//sbit adc_cs = P3^7;
//sbit adc_sclk = P3^2;
//sbit adc_dout = P3^3;
//sbit adc_din = P3^4;
adc_cs =1;		 
adc_sclk = 1;
adc_din =1;
adc_dout = 1;

adc_cs = 0;
//adc_sclk = 0;
//while(1)
//{
//wait(60);
ad7887_tmp = 0;
adc_cs = 0;
 //0	msb
//adc_din = 1;	 //7	  nc	one or two
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
 //1
//adc_din = 0;	   //6	  zero
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
 //2				  
//adc_din = 1;	   //5		   zero no ref    one ref
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
  //3
//adc_din = 1;	  //4			single/dual  select 
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
  //4
//adc_din = 0;	  //3		  channel select 
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
wait(2);
  //5
//adc_din = 0;		 //2  zero
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
   //6
//adc_din = 1;		   //1		  PM1
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
 //7
//adc_din = 0;		   //0		  PM0
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
 //8		msb
//adc_din = 1;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
 //9
//adc_din = 0;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
 //10
//adc_din = 1;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
  //11
//adc_din = 1;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
  //12
//adc_din = 0;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
  //13
//adc_din = 0;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
   //14
//adc_din = 0;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
 //15
//adc_din = 1;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);

 adc_cs = 1;
 wait(4);
 adr_data=ad7887_tmp&0x0FFF;
 ad7887_tmp = 0;
}
/////
void ad7887_poweron(void)
{
//while(1)
//{
wait(60);
//x=0xaa;//ad_command;
ad7887_tmp = 0;
adc_cs = 0;
 //0	msb
adc_din = 1;	//7   NC
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
 //1
adc_din = 0;   //6    zero
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
 //2
adc_din = 1;	 //5  0 ref,  1 no ref   
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
  //3
adc_din = 1;	 //4  	 single/dual  select   1 dual ,0  single
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
  //4
adc_din = 0;	 //3	  channel select 	o  ain0,  1 ain1
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
  //5
adc_din = 0;	  //2    zero
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
   //6
adc_din = 1;	 //1
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
 //7
adc_din = 1;	 //0
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
 //8	       two  word   msb
adc_din = 1;	//7
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
 //9
adc_din = 0;	 //6
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
 //10
adc_din = 1;   //5
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
  //11
adc_din = 1;	 //4
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
  //12
adc_din = 0;	  //3
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
  //13
adc_din = 0;	  //2
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
   //14
adc_din = 0;	 //1
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
 //15
adc_din = 1;	//0
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);

adc_cs= 1;
// }
}
///		  wait(4) ===125KHZ 
void wait(uint tmp)
{uint i;
for(i=0;i<tmp;i++);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -