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

📄 projcect.c

📁 宽带放大器
💻 C
字号:
 #include "SPCE061V004.H"
 #include "IO_bit.h"
 #define  dout  IOB3
 #define  dclk IOB2
 #define  din  IOB1
 #define  load   IOB0


unsigned int a=10;                  //分贝值
unsigned int b=0x25a0;                  //DAC的值     
unsigned int key,x1;
//////////////////////////////////按地址向CH452送数据.
void shjz_ch452(unsigned int ldata,unsigned int hdata)

 { unsigned int i;
  
   for(i=0;i<8;i++)
   {  dclk=0;
    if(ldata&0x0001) din=1;
      else  din=0;
      dclk=1;
      ldata=ldata>>1;
      }
    for(i=0;i<4;i++)
    {dclk=0;
    if(hdata&0x0001) din=1;
     else din=0;
     dclk=1;
     hdata=hdata>>1;
     } 
     load=0;
     load=1;
    }      

////////////////////////////////////////CH452初始化
 ch452_init()
{ shjz_ch452(0x0001,0x0002);
  shjz_ch452(0x0023,0x0004);
  shjz_ch452(0x0080,0x0005); 
} 

/////////////////////////////////////////读键值并返回.
 unsigned int readkey(void)
 {unsigned int key=0,i,com=0x0700;
    for(i=0;i<6;i++)
    { if(com&0x01) din=1;
      else din=0;
      dclk=0;
      dclk=1;
      com>>=1;
     }
    load=0;
     load=1;
   key=key|dout;
   dclk=1;
   dclk=0;
  for(i=0;i<6;i++)
    { key<<=1;
     
     key=key|dout;
    dclk=1;
     dclk=0;
     }
     key=key&0x007f;
     return(key);
     }

/////////////////////////////////////////数据显示
void disp1(unsigned int data )
{unsigned int  i,a[8]={0x8,0x9,0xa,0xb,0xc,0xd,0xe,0xf};
 unsigned int data1;   
 ch452_init();
   
   for(i=2;i<4;i++)
    {   
      data1=data%10;
      shjz_ch452(data1,a[i]);
      data=data/10;
      if(data==0) break;  
     }
  shjz_ch452(0x0d,0x09);
  shjz_ch452(0x0b,0x08);
 
 }


void disp2(unsigned int data)
{unsigned int i,data1;
 unsigned int a[8]={0x8,0x9,0xa,0xb,0xc,0xd,0xe,0xf};
               //b[8]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89};
               //显示0.,1.,2.,3.,4.      9.
  ch452_init();
 for(i=4;i<7;i++)
  {data1=data%10;
  shjz_ch452(data1,a[i]);
  data=data/10;
         
  }
  shjz_ch452((0x80|data),0xf);//在第1个数码管上显示0.
  }

////////////////////////////////////////////AD转换

void   AD(void)
 { unsigned int i,buff;
   float tem;
   
   *P_ADC_MUX_Ctrl=	C_ADC_CH1;
   *P_ADC_Ctrl= C_ADCE;
 
   buff=*P_ADC_LINEIN_Data;//开始转换
   while(!(*P_ADC_MUX_Ctrl&0x8000));
   buff=*P_ADC_LINEIN_Data;
   *P_ADC_Ctrl=0x0002;//关AD转换
   tem=buff*3.3/0xffc0;
   x1=(unsigned int)(tem*1000);
   disp2(x1);
  }

////////////////////////////////////////////////
 
 void key1(void)
 { unsigned int i;
   disp1(10);
   *P_DAC1=0x25a0;
 for(i=0;i<1000;i++);
 for(i=0;i<1000;i++);
 }
 
 
 
 
 
 void key2(void)
  { unsigned int i;
    a=a+6;
    b=b+0x0bc0;
   if(a>58)  a=10	,b=0x25a0;

   disp1(a);
   *P_DAC1=b;
 for(i=0;i<1000;i++);
 for(i=0;i<1000;i++);
  }

 void key3(void)
  { unsigned int i;
    a=a-6;
    b=b-0x0bc0;
    if(a<10) a=58,b=0x7fa;
   
    disp1(a);
    *P_DAC1=b;
  for(i=0;i<1000;i++);
  for(i=0;i<1000;i++);
}


void key4(void)
 {unsigned int i;
 AD();
 for(i=0;i<1000;i++);
 for(i=0;i<1000;i++);
 
 
 }


////////////////////////////////////////////////
 void IRQ3(void)__attribute__((ISR));
 void IRQ3(void)
 {
 if(*P_INT_Ctrl&C_IRQ3_EXT2)
  { 
     shjz_ch452(0x0,0x7);
     key = readkey();
     switch(key)
      {case 0x0040:key1();break;
      
       case 0x0041:key2();break;
       
       case 0x0042:key3();break;
       
       case 0x0043:key4();break;
       
       /*   case 0x0044:key5();break;
       case 0x0045:key6();break;
       case 0x0046:key7();break;
       case 0x0047:key8();break;
       case 0x0048:key9();break;
       case 0x0049:key10();break;
       case 0x004a:key11();break;
       case 0x004b:key12();break;
       case 0x004c:key13();break;
       case 0x004d:key14();break;
       case 0x004e:key15();break;
       case 0x004f:key16();break;*/
       default:break;
    }
 *P_INT_Clear=C_IRQ3_EXT2;
 }
 else if(*P_INT_Ctrl&C_IRQ3_EXT1)
    *P_INT_Clear=C_IRQ3_EXT1;
    
    else
    *P_INT_Clear=C_IRQ3_KEY;
    }
    

main()

{ hardware();
  
  ch452_init();
  shjz_ch452(0x0d,0x09);
  shjz_ch452(0x0b,0x08);
  shjz_ch452(0x00,0x0a);
  shjz_ch452(0x00,0x0b);
  
  *P_DAC1=0x0bc0;
  *P_DAC_Ctrl=C_DA1_Direct	;
  
  while(1)
   *P_Watchdog_Clear=1;
}

⌨️ 快捷键说明

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