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

📄 main.c

📁 一个用51MCU做电流表的产品.源代码.电流精度达到1MA有级别.
💻 C
📖 第 1 页 / 共 2 页
字号:
	adfcnt++;
	return(1);
   }
}
////////////////////////////////////////////////////////系统配置
void initsys(void)
{
 AUXR = 0X80; 
 EA = 0;
 //把timer设置成1ms
 TMOD = 0X21;
 TH0 = 0XD4; //65535 - 11059
 TL0 = 0X46;
 TH1 = 0XFF;
 TR0 = 1;
 TR1 = 1;
 P1M0 = 0x03;//0;
 P1M1 = 0X03;//0;
 P3M0 =0;
 P3M1 =0;
 P1 = 0X0f;;//P1 = 0;/
 P2 = 0Xc0;
 P3 = 0XFF;
 SCON = 0x50;
 REN =1;
 PCON = PCON | 0X80;
 CFLAG = 0;

adrfcnt = 0;
adr_data = 0;
// ad_poweron();
//ad7887_poweron();
}

///////////////////////////////////////////////////转速显示
void ad_show(uint  temp)
{
    show_data[0] = real2show(temp /1000);
         temp = temp % 1000;
         show_data[1] =  real2show(temp / 100);
         temp = temp % 100;
		show_data[2] = real2show(temp/10);
    	show_data[3] = real2show(temp%10);
		if(!set_input)
		{
		show_data[0] = show_data[0] | 2;
		}
		else
		{
		show_data[1] = show_data[1] | 2;
		}
} 
///////
void show_real(void)
{
  send164data(show_data[show_count]);
  selectcol(show_count);
  show_count = (show_count+1) %4;

}
uchar real2show(uchar areal)
{
return(segments[areal]); 
}
///////选择要显示的管	  
void selectcol(uchar col)
{
 ledcol1 = 1;
 ledcol2 = 1;
 ledcol3 = 1;
 ledcol4 = 1;
 switch (col+1)
  {
  case 1:
        ledcol1 = 0;break;
  case 2:
        ledcol2 = 0;break;
  case 3:
        ledcol3 = 0;break;
  case 4:
        ledcol4 = 0;break;
  }
}
///////////显示的数据
void send164data(uchar adata)
{
  uchar i;
   ledcol1 = 1;
 ledcol2 = 1;
 ledcol3 = 1;
 ledcol4 = 1;
  adata = ~adata;
  clk164 = 0;
  for(i=0;i<8;i++)
    {
	 if (((adata >> i)&1)> 0)
	   data164 = 1;
	   else
	   data164 = 0;
	   clk164 = 1;
	   clk164 = 0;
	}
}
/////////////////
//void ad_poweron(void)
//{
//  ADC_POWER = 1;
//  SPEED1 = 0;
//  SPEED0 = 0;
//  CHS2 = 0;
//  CHS1 = 0;
//  CHS0 = 0;
//  ADC_CONTR = AD_CONTR;
//}

//uchar ad_readdata(void)
//{
//char tmp;
//tmp=ADC_DATA;
//ADC_FLAG=0;
//ADC_CONTR = AD_CONTR;
//return(tmp);
//}
/////////////
 /////////
 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 + -