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

📄 menu_func.c

📁 proteus实例集锦
💻 C
📖 第 1 页 / 共 2 页
字号:
/*---------------------------文本输入------------------------------*/
void Menu_TextInput()
{
	 uchar x,y,j;
	 bit cs3=1;	 
	 clrscr();	 	 
	 KeyInputTemp=0;
	 	 
	 while (NowKey!=KEY_ESC)	   			       //   按ESC键退出
	 {
	    EX0=1;						 
		GetTextInput();
		if (KeyInputTemp==1)					   //    输出数字
		 { 
		       num_disp(cs3,x,y,TextInputTemp);			   
			   y+=8;
			   if(y==64)						   //     输出8个数字时换右屏
			   {
			     cs3=!cs3;
				 y=0;
				 j++;								  
			   }
			   if(j==2)							   //      输出16个数字时换行
			   {
			     x+=2;
				 j=0;
			   }
			   if(x==8)
			   { 
			      x=0;
				  clrscr();
			   }
			   KeyInputTemp=0;			   
		 }
	  	 
	 }
	 
   Menu_Back();

}

/*------------温度监测--------------*/
void Menu_DispTmp()
{
   
  clrscr();
  config_18b20();
  chn_disp(0,0,2,16,1,2,hz_view_1);  
  while(NowKey!=KEY_ESC)
  {	  
      EX0=1;    
      get_tmp();
	  if(tmp>99)
	  {   
		 num_disp(0,0,0,tmp/100);				   //显示百位
	     num_disp(0,0,8,tmp/10%10);				   //显示十位
		 num_disp(0,0,16,tmp%100%10);			   //显示个位
		 chn_disp(0,24,2,8,1,1,hz_dot);
		 num_disp(0,0,32,tmpd);			   //小数点后一位 		 
		 chn_disp(0,40,2,8,1,1,hz_oc);
	  }
	  else  
	    {
	     
		 num_disp(0,0,8,tmp/10);
		 num_disp(0,0,16,tmp%10);
		 if(tmp_f)
		  {
		   chn_disp(0,0,2,8,1,1,hz_s_);			  //显示负号
		  }
		 else chn_disp(0,0,2,8,1,1,hz_null);	  // 不显示负号
		 chn_disp(0,24,2,8,1,1,hz_dot);
		 num_disp(0,0,32,tmpd);
		// con_disp(0,0,40,tmpd%10);			  //小数点后两位
		 chn_disp(0,40,2,8,1,1,hz_oc);
	    }

  }
 Menu_Back();
}
/*--------------步进电机--------------------*/
void Menu_Motor_s()
{
  uchar P_motor[]={0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03};
  uchar i=0;
  clrscr();
  EX0=1;
  COM8255=0x82;
  while(NowKey!=KEY_ESC)
  {
   EX0=1;
   if (NowKey==KEY_1)
   {
     PC8255=P_motor[i];
	 delay(254);
	 i++;
	 NowKey=0xff;	 
	 if(i==8)
	 {
	   i=0;
	 } 
   }
   if(NowKey==KEY_2)
   {
     i--;
	 if(i>7)
	 {
	   i=7;
	 }
	 NowKey=0xff;
	 PC8255=P_motor[i];
	 delay(254);
   }
  }
}
void Menu_MemoryData()
{
    //uchar idata temp1[]={0x02,0x04,0x99,0x76,0x47};
	uchar idata *temp2,addr=0x02;
//	uchar i,j,x,y;
//	bit cs3;
//	cs3=1;
	clrscr();
	Ipt9555(temp2);
	temp2++;	
	num_disp(1,0,0,(*temp2)>>4);
	num_disp(1,0,8,(*temp2) & 0x0f);
/*	W24C32(addr,temp1,5);
	R24C32(addr,temp2,5);	
	for (i=0;i<5;i++)
	{
	    
        con_disp(cs3,x,y,*temp2>>4);
	    y+=8;
		con_disp(cs3,x,y,*temp2&0x0f);
		y+=8;
        if(y==64)						   //     输出8个数字时换右屏
	    {
		  cs3=!cs3;
		  y=0;
		  j++;								  
	    }
	   if(j==2)							   //      输出16个数字时换行
	   {
	      x+=2;
	      j=0;
	   }
	   if(x==8)
	   { 
	      x=0;
	      clrscr();
	   }
	}*/
   while(1);
   Menu_Back();
}
/*-------------模数转换--------*/
void Menu_ADC0832()
{  
    uchar adtemp;
	clrscr();
	EX0=1;
	chn_disp(0,0,2,8,1,2,hz_in);		   //IN
	chn_disp(0,24,2,8,1,1,hz_mh);		   //:
	chn_disp(2,0,2,8,1,2,hz_in);           //in
	chn_disp(2,24,2,8,1,1,hz_mh);
	chn_disp(4,0,2,8,1,2,hz_in);
	chn_disp(4,24,2,8,1,1,hz_mh);
	chn_disp(6,0,2,8,1,2,hz_in);
	chn_disp(6,24,2,8,1,1,hz_mh);
	num_disp(1,0,16,0);
	num_disp(1,2,16,1);
	num_disp(1,4,16,2);
	num_disp(1,6,16,3);
	num_disp(0,0,16,4);
	num_disp(0,2,16,5);
	num_disp(0,4,16,6);
	num_disp(0,6,16,7);
	while(NowKey!=KEY_ESC) 
    {	
      AD0809_IN0=0X00;
	  delay(200);
	  adtemp=AD0809_IN0;
	  num_disp(1,0,32,(adtemp&0xf0)>>4);
	  num_disp(1,0,40,(adtemp&0x0f));
    }				
   Menu_Back();
}
/*--------------数模转换-------------------*/
void Menu_DAC0808()
{
   uchar cs3,x,y,j,ADCtemp;
   cs3=1;
   clrscr();
   NowKey=0xff;
   while (NowKey!=KEY_OK)
   {
      EX0=1;
	  GetTextInput();
	  if(KeyInputTemp==1)
	  {
	    ADCtemp<<=4;
	    ADCtemp+=TextInputTemp;
	    num_disp(cs3,x,y,TextInputTemp);
	    y+=8;
        if(y==64)						   //     输出8个数字时换右屏
	    {
		  cs3=!cs3;
		  y=0;
		  j++;								  
	    }
	   if(j==2)							   //      输出16个数字时换行
	   {
	      x+=2;
	      j=0;
	   }
	   if(x==8)
	   { 
	      x=0;
	      clrscr();
	   }
	   KeyInputTemp=0; 
	  }
   }
  Opt9555(Cmd_op0,ADCtemp);  
  while(NowKey!=KEY_ESC);
  Menu_Back();   
}
/*---------------- 与PC通信--串口接收--------------*/
void Menu_SerialReceive_PC()
{
   uchar cs3,x,y,j;
   uchar PSerial;
   clrscr();
   cs1=1;
   cs2=0;
   chn_disp(0,0,2,16,1,2,hz_test_1);			  //显示起始行
   chn_disp(0,32,2,16,1,2,hz_test_2);   
   cs1=0;
   cs2=1;
   chn_disp(0,32,2,16,1,2,hz_test);
   chn_disp(0,0,2,16,1,2,hz_jishi);
   x=2;   
   y=0;
   cs3=1;   
   TMOD=0x20;
   TH1=0xfd;
   TL1=0xfd;
   TR1=1;
   SCON=0x50;      
   while (1)
   {          		   	
	    EX0=1;
		while(!RI)
		 if (NowKey==KEY_ESC) goto Exit_SerialReceive;
	    RI=0;
		PSerial=SBUF;	   
		num_disp(cs3,x,y,PSerial&0x0f);
		y+=8;
        if(y==64)						   //     输出8个数字时换右屏
	    {
		  cs3=!cs3;
		  y=0;
		  j++;								  
	    }
	   if(j==2)							   //      输出16个数字时换行
	   {
	      x+=2;
	      j=0;
	   }
	   if(x==8)
	   { 
	      x=2;
	      clrscr();
	   }

   }  
   Exit_SerialReceive:
   NowKeyReg=0; 
   Menu_Back();    
}
/*------------------与PC通信--串口发送-----------------*/
void Menu_SerialSend_PC()
{
   uchar cs3,x,y,k,j;
   uchar PSerial;
   clrscr();
   cs1=1;
   cs2=0;
   chn_disp(0,0,2,16,1,2,hz_test_1);				 //显示起始行
   chn_disp(0,32,2,16,1,2,hz_test_3);   
   cs1=0;
   cs2=1;
   chn_disp(0,32,2,16,1,2,hz_test);
   chn_disp(0,0,2,16,1,2,hz_jishi);
   x=2;   
   y=0;   
   cs3=1;   
   TMOD=0x20;
   TH1=0xfd;
   TL1=0xfd;
   TR1=1;
   SCON=0x40;     
   while (NowKey!=KEY_ESC)
   {
      EX0=1;
	  GetTextInput();
	  if(KeyInputTemp==1)
	  {
	    PSerial<<=4;
	    PSerial+=TextInputTemp;
	    num_disp(cs3,x,y,TextInputTemp);
		k++;
		if(k==2)
		{ 	  
		 k=0;
		 SBUF=PSerial;    	
	     while(!TI);
	     TI=0;
		}		
	    y+=8;
        if(y==64)						   //     输出8个数字时换右屏
	    {
		  cs3=!cs3;
		  y=0;
		  j++;								  
	    }
	   if(j==2)							   //      输出16个数字时换行
	   {
	      x+=2;
	      j=0;
	   }
	   if(x==8)
	   { 
	      x=2;
	      clrscr();
	   }
	   KeyInputTemp=0; 
	  }
   }
  Menu_Back();   
}
void Menu_SerialReceive_MCU()
{
}
void Menu_SerialSend_MCU()
{
}
/*----------------返回菜单--------*/
void Menu_Back()
{
   NowKey=0xff;
   clrscr();
   JudgeHLight();
}
/*----------------版本说明------------*/
void MenuFunction_Help_2()
{
  DispFaceBmp();
  NowKey=0xff;
  EX0=1;   
  while(NowKey==0xff);					  // 按任意键退出  
  Menu_Back();
}


⌨️ 快捷键说明

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