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

📄 oscilloscope.c

📁 单片机通过DA对信号采样
💻 C
📖 第 1 页 / 共 2 页
字号:
   lcd_write_sentence(3,1,"0.1V/div");
   break;
   case 2:
   lcd_write_sentence(3,1,"1V/div");
   break;
   default:
   break;
   }
 }
}
//***************************************************************************************
void Vertical_GainB()
{
  Led_On=0;
  Vertical_Gain_B_Grade++;
  if(Vertical_Gain_B_Grade>2)
  Vertical_Gain_B_Grade=0;
  else
 {
  Vertical_Gain_B=Vertical_Gain_B_Grade;
  lcd_clear();
  lcd_write_sentence(1,0,"当前垂直增益档位");
  lcd_write_sentence(2,3,"B 路");
  switch(Vertical_Gain_B_Grade)
  {
   case 0:
   lcd_write_sentence(3,1,"0.01V/div");
   break;
   case 1:
   lcd_write_sentence(3,1,"0.1V/div");
   break;
   case 2:
   lcd_write_sentence(3,1,"1V/div");
   break;
   default:
   break;
   }
  }
}
//***************************************************************************************
void Vertical_MoveA()
{
 Shift_Flag=1;
 ledcursor=2;
 Key_Flag=4;
 Led_On=1;
 Glint_Flag=1;
 lcd_clear();
 lcd_write_sentence(1,0,"按加减键上下移动");
 lcd_write_sentence(2,1,"A 路波形");
 distab[0]=0x00;
 distab[1]=0x00;
 distab[2]=0x00;
 distab[3]=0x10;
 distab[4]=0x10;
 distab[5]=0x10;
 distab[6]=0x10;
 distab[7]=0x04;
}
//***************************************************************************************
void Vertical_MoveB()
{
 Shift_Flag=1;
 ledcursor=2;
 Key_Flag=5;
 lcd_clear();
 Led_On=1;
 Glint_Flag=1;
 lcd_write_sentence(1,0,"按加减键上下移动");
 lcd_write_sentence(2,1,"B 路波形");
 distab[0]=0x00;
 distab[1]=0x00;
 distab[2]=0x00;
 distab[3]=0x10;
 distab[4]=0x10;
 distab[5]=0x10;
 distab[6]=0x10;
 distab[7]=0x05;
}
//***************************************************************************************
 void enter_down()
 {
  unint temp;
  Enter=!Enter;
  //Led_On=0;
  Glint_Flag=!Glint_Flag;
  Shift_Flag=0;
  switch(Key_Flag)
  {
   case 1:
      X_Frequence=distab[4]*10000+distab[3]*1000+distab[2]*100+distab[1]*10+distab[0];
	  //Frequence*=5;
      temp=_iror_(X_Frequence,8);
      X_Freq_High=temp;
      temp=X_Frequence%256;
      X_Freq_Low=temp;
      Enter=0;
      lcd_clear();
      lcd_write_sentence(1,0,"频率设置成功!");
      lcd_write_sentence(2,1,"当前频率:");
      lcd_write_command(0x89);
      lcd_write_data(0x30+distab[4]);
      lcd_write_data(0x30+distab[3]);
      lcd_write_data(0x30+distab[2]);
      lcd_write_data(0x30+distab[1]);
      lcd_write_data(0x30+distab[0]);
      lcd_write_sentence(3,4,"HZ");
   break;
   case 2:
     Enter=0;
	 lcd_clear();
     X_Pos=distab[2]*100+distab[1]*10+distab[0];
	 if(X_Pos>200)
	 {
	 X_Pos=0;
     lcd_write_sentence(2,0,"输入范围太大!");
	 }
	 else
	 {
     X_Move=X_Pos;
     lcd_write_sentence(1,0,"水平移相成功");
     lcd_write_sentence(2,1,"当前水平偏移:");
     lcd_write_command(0x8a);
     lcd_write_data(0x30+distab[2]);
	 lcd_write_data(0x30+distab[1]);
     lcd_write_data(0x30+distab[0]);
	 }
   break;
   case 3:
     Enter=0;
	 lcd_clear();
     Trigger_V=distab[2]*100+distab[1]*10+distab[0];
     if(Trigger_V>500)
     {
      lcd_write_sentence(1,0,"电平输入太大!");
      lcd_write_sentence(2,0,"请重新输入!");
      Trigger_V=0;
     }
     else
     { 
     Trigger_Voltage=Trigger_V/2;
     lcd_write_sentence(1,0,"触发电平设置成功");
     lcd_write_sentence(2,1,"当前触发电平:");
     lcd_write_command(0x89);
     lcd_write_data(0x30+distab[2]);
	 lcd_write_sentence(3,2,".");
     lcd_write_data(0x30+distab[1]);
     lcd_write_data(0x30+distab[0]);
     lcd_write_sentence(3,4,"V");
     }
   break;
   case 4:
     Vertical_Pos_A=distab[2]*100+distab[1]*10+distab[0];
	 Vertical_Move_A=Vertical_Pos_A;
	 lcd_clear();
	 lcd_write_sentence(1,1,"当前垂直偏移A:");
	 lcd_write_command(0x91);
     lcd_write_data(0x30+distab[2]);
	 lcd_write_data(0x30+distab[1]);
     lcd_write_data(0x30+distab[0]);
   break;
   case 5:
     Vertical_Pos_B=distab[2]*100+distab[1]*10+distab[0];
     Vertical_Move_B=Vertical_Pos_B;
	 lcd_clear();
     lcd_write_sentence(1,1,"当前垂直偏移B:");
	 lcd_write_command(0x91);
     lcd_write_data(0x30+distab[2]);
	 lcd_write_data(0x30+distab[1]);
     lcd_write_data(0x30+distab[0]);
   break;
   default:
   break;
   }
 
  
       
 } 


//***************************************************************************************
void keyprg(unchar key)  //键盘键值执行的程序
{  
  //unchar i;
  if((key<=9)&Shift_Flag)
   {   
      distab[ledcursor]=keynum;        //键值送入distab最低位保存
	   if(ledcursor>0)                //光标移位
           ledcursor--;
       else 
           ledcursor=0;
    display(0); //显示键值
   	}
  
  else 
   {
    switch(key)
	   {
	     case 0x00:             
		      Set_X_Freq();
	     break;
	 	 case 0x01:             
		      Set_X_Pos();
	     break;	 
		 case 0x02:             
		      Set_Trigger_Voltage();
	     break;	 
		 case 0x03:             
		      Lock_Current_Wave();
	     break;	 
		 case 0x04:             
		      Single_Select();
	     break;	 
		 case 0x05:             
		      Vertical_GainA();
	     break;	 
		 case 0x06:             
		      Vertical_GainB();
	     break;	 
		 case 0x07:             
		      Vertical_MoveA();
	     break;
	     case 0x08:             
		      Vertical_MoveB();
	     break;
		 case 0x09:             
		      Select_AB_Channel();
	     break;
		 case 0x0A:             
		       Reset();
	     break;	 
		 case 0x0B:                              //功能键F2
	           Shift_Flag=!Shift_Flag;
	     break;	 
		 case 0x0C:                              //KeyprgBack();
		          if(ledcursor<7)                //光标移位
                       ledcursor++;
                   else 
                       ledcursor=0;
                       display(0);               //显示键值
	     break;
	 	 case 0x0D:  //加
		           if(distab[ledcursor]<0x09)
		                distab[ledcursor]++;
                   else
                        distab[ledcursor]=0;
                        display(0); //显示键值
	     break;	
 		 case 0x0E:    //减
		           if(distab[ledcursor]>0)
		           distab[ledcursor]--;
              
		 else
               distab[ledcursor]=9;
			   display(0); //显示键值
		    
	     break;	 
		 case 0x0F:       
		          enter_down();        
	     break;	 
		 default:
	     break;	 
		}
	 }

}
//**************************************************************************************
void intt0() interrupt 0 
{ 
 
 EX0=0;               //关键盘中断,禁止相应其他按键
 keynum=P1;           //从p1口读入键盘值
 keynum=keynum&0x0f;  //取低四位;
 keyprg(keynum);
 //if(enter)         //不是enter键,屏蔽中断
 EX0=1;
}

//**************************************************************************************

void main()
{ 
  
  unchar j=0;
  EX0=1;
  EA=1;
  lcd_init();
  display(0);
  lcd_write_passage("南开大学信科院电信系:史永杰,余建伟,岳文赫--  简易示波器");
  //lcd_clear();
  //lcd_write_sentence(4,4,"南开大学");
  FpgaInitial();
  while(1)
    {
    if(Glint_Flag)
      glint();
    }
}

⌨️ 快捷键说明

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