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

📄 shiyan.c

📁 电阻调试程序
💻 C
字号:
#define __dsPIC30F4013__
#include <p30f4013.h>
#include <math.h>
#include <uart.h>
//#include <timer.h>
//#include <spi.h>
//#include <ports.h>
//定义配置位

#define  nop()  asm("nop");
#define	 CLRWDT() asm("clrwdt");
#define  DASCLK  PORTDbits.RD9  
#define  DADIN   PORTDbits.RD3
#define  DACS    PORTBbits.RB11  
#define  IO1     PORTDbits.RD8       //采样电阻控制信号
#define  IO2     PORTDbits.RD2       //变压器串电阻的控制信号
#define  IO3     PORTBbits.RB12      //小电流接入控制信号
#define  IO4     PORTBbits.RB8       //大电流接入控制信号
#define  DL0     PORTCbits.RC13       //电流采样放大倍数控制信号
#define  DL1     PORTDbits.RD1       //电流采样放大倍数控制信号
#define  DY0     PORTBbits.RB9       //电压采样放大倍数控制信号
#define  DY1     PORTFbits.RF2       //电压采样放大倍数控制信号
#define  DY2     PORTDbits.RD0       //电压采样放大倍数控制信号
#define  ZEN     PORTBbits.RB10      //AD7501的选择使能
//定义变量
unsigned int DIANYA,DIANLIU;
float  DIANZU;


//函数声明

int delay(unsigned int delay);
void inital(void);
void ADDY(void);
void ADDL(void);
void DAWrite(unsigned int AA);


int main (void)
  {
   int i;
   float j,k,p;
   long b;
   inital();
   DAWrite(0X000);

/*
//基于OP-07测000放大倍数
   DY0=0;
   DY1=0;
   DY2=0;
   ZEN=1;
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   DIANZU=0;
for(i=0;i<100;i++)
  {
   delayms(50000);
   delayms(50000);
   ADDL();
   ADDY();
   ACCBL=DIANLIU;
   ACCBH=DIANYA;
   j=DIANLIU;
   k=DIANYA;
   DIANZU=DIANZU+k/j;
   }
    DIANZU=DIANZU/100;
    b=DIANZU*1000000;
    ACCAL=0;
    ACCAH=0;
    ACCAL=ACCAL+b%10000/1000;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%1000/100;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%100/10;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%10;   
    ACCAH=ACCAH+b%10000000/1000000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%1000000/100000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%100000/10000; 


*/


/*

//基于OP-07测001放大倍数
   DY0=1;
   DY1=0;
   DY2=0;
   ZEN=1;
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   DIANZU=0;
for(i=0;i<100;i++)
  {
   delayms(50000);
   delayms(50000);
   ADDL();
   ADDY();
   ACCBL=DIANLIU;
   ACCBH=DIANYA;
   j=DIANLIU;
   k=DIANYA;
   DIANZU=DIANZU+k/j;
   }
    DIANZU=DIANZU/100;
    b=DIANZU*1000000;
    ACCAL=0;
    ACCAH=0;
    ACCAL=ACCAL+b%10000/1000;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%1000/100;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%100/10;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%10;   
    ACCAH=ACCAH+b%10000000/1000000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%1000000/100000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%100000/10000; 



*/

/*


//基于OP-07测010放大倍数
   DY0=0;
   DY1=1;
   DY2=0;
   ZEN=1;
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   DIANZU=0;
for(i=0;i<100;i++)
  {
   delayms(50000);
   delayms(50000);
   ADDL();
   ADDY();
   ACCBL=DIANLIU;
   ACCBH=DIANYA;
   j=DIANLIU;
   k=DIANYA;
   DIANZU=DIANZU+k/j;
   }
    DIANZU=DIANZU/100;
    b=DIANZU*1000000;
    ACCAL=0;
    ACCAH=0;
    ACCAL=ACCAL+b%10000/1000;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%1000/100;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%100/10;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%10;   
    ACCAH=ACCAH+b%10000000/1000000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%1000000/100000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%100000/10000; 


*/

/*
//基于010测011放大倍数
 DIANZU=0;
for(i=0;i<100;i++)
  {
   DY0=0;
   DY1=1;
   DY2=0;
   ZEN=1;
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   ADDY();
   ACCBL=DIANYA;
   j=DIANYA;
   DY0=1;
   DY1=1;
   DY2=0;
   ZEN=1;
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   ADDY();
   ACCBH=DIANYA;
   k=DIANYA;
   DIANZU=DIANZU+k/j;
   }
    DIANZU=DIANZU/100;
    b=DIANZU*1000000;
    ACCAL=0;
    ACCAH=0;
    ACCAL=ACCAL+b%10000/1000;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%1000/100;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%100/10;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%10;   
    ACCAH=ACCAH+b%10000000/1000000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%1000000/100000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%100000/10000; 

*/






/*

//基于011测100放大倍数
 DIANZU=0;
for(i=0;i<100;i++)
  {
   DY0=0;
   DY1=1;
   DY2=1;
   ZEN=1;
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   ADDY();
   ACCBL=DIANYA;
   j=DIANYA;
   DY0=0;
   DY1=0;
   DY2=1;
   ZEN=1;
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   ADDY();
   ACCBH=DIANYA;
   k=DIANYA;
   DIANZU=DIANZU+k/j;
   }
    DIANZU=DIANZU/100;
    b=DIANZU*1000000;
    ACCAL=0;
    ACCAH=0;
    ACCAL=ACCAL+b%10000/1000;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%1000/100;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%100/10;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%10;   
    ACCAH=ACCAH+b%10000000/1000000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%1000000/100000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%100000/10000; 

*/







/*

//基于100测DL1放大倍数
   DY0=0;
   DY1=0;
   DY2=1;
   ZEN=1;
   DL1=1;
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   DIANZU=0;
for(i=0;i<100;i++)
  {
   delayms(50000);
   delayms(50000);
   ADDL();
   ADDY();
   ACCBL=DIANLIU;
   ACCBH=DIANYA;
  // DIANYA=2;
  // DIANLIU=3;
   j=DIANLIU;
   k=DIANYA;
   DIANZU=DIANZU+j/k;
   }
    DIANZU=DIANZU/100;
    b=DIANZU*1000000;
    ACCAL=0;
    ACCAH=0;
    ACCAL=ACCAL+b%10000/1000;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%1000/100;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%100/10;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%10;   
    ACCAH=ACCAH+b%10000000/1000000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%1000000/100000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%100000/10000; 

*/

/*

  
//基于DL1测101放大倍数
   DY0=1;
   DY1=0;
   DY2=1;
   ZEN=1;
   DL1=1;
   WWW=0;
   MMM=0;
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   DIANZU=0;
for(i=0;i<100;i++)
  {
   delayms(50000);
   delayms(50000);
   ADDL();
   ADDY();
   ACCBL=DIANLIU;
   ACCBH=DIANYA;
   j=DIANLIU;
   k=DIANYA;
   DIANZU=DIANZU+k/j;
   }
    DIANZU=DIANZU/100;
    b=DIANZU*1000000;
    ACCAL=0;
    ACCAH=0;
    ACCAL=ACCAL+b%10000/1000;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%1000/100;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%100/10;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%10;   
    ACCAH=ACCAH+b%10000000/1000000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%1000000/100000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%100000/10000; 

*/
/*


//基于101测110放大倍数
 DIANZU=0;
for(i=0;i<100;i++)
  {
   DY0=1;
   DY1=0;
   DY2=1;
   ZEN=1;
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   ADDY();
   ACCBL=DIANYA;
   j=DIANYA;
   DY0=0;
   DY1=1;
   DY2=1;
   ZEN=1;
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   ADDY();
   ACCBH=DIANYA;
   k=DIANYA;
   DIANZU=DIANZU+k/j;
   }
    DIANZU=DIANZU/100;
    b=DIANZU*1000000;
    ACCAL=0;
    ACCAH=0;
    ACCAL=ACCAL+b%10000/1000;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%1000/100;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%100/10;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%10;   
    ACCAH=ACCAH+b%10000000/1000000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%1000000/100000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%100000/10000; 

*/
/*

//基于110测111放大倍数
 DIANZU=0;
for(i=0;i<100;i++)
  {
   DY0=0;
   DY1=1;
   DY2=1;
   ZEN=1;
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   ADDY();
   ACCBL=DIANYA;
   j=DIANYA;
   DY0=1;
   DY1=1;
   DY2=1;
   ZEN=1;
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   ADDY();
   ACCBH=DIANYA;
   k=DIANYA;
   DIANZU=DIANZU+k/j;
   }
    DIANZU=DIANZU/100;

    b=DIANZU*1000000;
    ACCAL=0;
    ACCAH=0;

    ACCAL=ACCAL+b%10000/1000;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%1000/100;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%100/10;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%10;   



    ACCAH=ACCAH+b%10000000/1000000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%1000000/100000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%100000/10000; 
*/


/*

//基于111测DL0放大倍数
   DY0=1;
   DY1=1;
   DY2=1;
   ZEN=1;
   DL0=1;
   delayms(50000);
   delayms(50000);
   delayms(50000);
   delayms(50000);
   DIANZU=0;
for(i=0;i<100;i++)
  {
   delayms(50000);
   delayms(50000);
   ADDL();
   ADDY();
   ACCBL=DIANLIU;
   ACCBH=DIANYA;
  // DIANYA=2;
  // DIANLIU=3;
   j=DIANLIU;
   k=DIANYA;
   DIANZU=DIANZU+j/k;
   }
    DIANZU=DIANZU/100;
    b=DIANZU*1000000;
    ACCAL=0;
    ACCAH=0;
    ACCAL=ACCAL+b%10000/1000;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%1000/100;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%100/10;
    ACCAL=ACCAL<<4;
    ACCAL=ACCAL+b%10;   
    ACCAH=ACCAH+b%10000000/1000000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%1000000/100000;
    ACCAH=ACCAH<<4;
    ACCAH=ACCAH+b%100000/10000; 

*/


/*
//由于变压器电压的变动,产生电流的驱动电压也应该随之变动。改变驱动电压就可以改变电流输出的大小实验
IO4=1;
DAWrite(0XC10);        //各电压的经典值如下:1A为0X830,1.2A为0X870,5A为0X92A,6A为0X970,10A为0XA09,12A为0XA80,19A为0XBC0,21A为0XC10;

*/

     return 0;
  }

  //电流采样
void ADDL(void)
{  
   IEC0bits.ADIE=0;
   ADPCFG=0XFFFE;
   ADCON1=0X0000;
   ADCHS=0X0000;
   ADCSSL=0;
   ADCON3=0X0002;
   ADCON2=0;
   ADCON1bits.ADON=1;
   ADCON1bits.DONE=0;
   ADCON1bits.SAMP=1;
   delayms(50000);
   ADCON1bits.SAMP=0;
   while(!ADCON1bits.DONE);
   DIANLIU=ADCBUF0;
}
   

    //电压采样
void ADDY(void)
{  
   IEC0bits.ADIE=0;
   ADPCFG=0XFFFD;
   ADCON1=0X0000;
   ADCHS=0X0001;
   ADCSSL=0X0000;
   ADCON3=0X0002;
   ADCON2=0X0000;
   ADCON1bits.ADON=1;
   ADCON1bits.SAMP=1;
   delayms(50000);
   ADCON1bits.SAMP=0;
   while(!ADCON1bits.DONE);
   DIANYA=ADCBUF0;
}


//D/A数据输入子程序
void DAWrite(unsigned int AA)
  {  
     int i;
     DACS=1;
     DASCLK=1;
     delayms(100);
     DASCLK=0;
     delayms(500);
     DACS=0;
     delayms(100);
     DASCLK=0;
     delayms(100); 
     for(i=4;i<16;i++)
      { 
       if ((AA<<i)&0x8000)
          {
            DADIN=1;
          }
        else 
          {
            DADIN=0;
          }
       delayms(100);
       DASCLK=1;
       delayms(100);
       DASCLK=0; 
       delayms(100);     
      } 
     delayms(100);
     DACS=1;
     delayms(100);
     DASCLK=1;
     delayms(100);
     DASCLK=0;
     DACS=0;

  }



 //系统初始化
void inital(void)
{
  TRISFbits.TRISF2 =0;
  TRISFbits.TRISF3 =0; 
  TRISBbits.TRISB3=1;        
  TRISBbits.TRISB4=1;         
  TRISBbits.TRISB5=1;             
  TRISBbits.TRISB9=0;        
  TRISBbits.TRISB10=0;       
  TRISDbits.TRISD0=0;         
  TRISDbits.TRISD1=0;        
  TRISDbits.TRISD8=0;         
  TRISDbits.TRISD2=0;         
  TRISBbits.TRISB8=0;         
  TRISBbits.TRISB12=0;        
  TRISCbits.TRISC14=0;
  TRISBbits.TRISB11=0;
  TRISDbits.TRISD3=0; 
  TRISDbits.TRISD9=0;
  TRISFbits.TRISF2=0;    
  TRISFbits.TRISF1=0;    
  TRISFbits.TRISF6=0;    
  TRISBbits.TRISB2=1;    
  TRISFbits.TRISF0=0;
  TRISFbits.TRISF2=0;
  TRISCbits.TRISC13=0;
}




  //延时子程序
int delayms(unsigned int aa)
  {
    while (--aa);
  }








 




















 


  


  
   





⌨️ 快捷键说明

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