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

📄 menu_func.h

📁 自己花了很长时间编写的单片机开发板程序
💻 H
📖 第 1 页 / 共 2 页
字号:
   }
   if(NowKey==KEY_2)
   {
     TR1=0;
	 i--;
	 if(i>7)
	 {
	   i=7;
	 }
	 NowKey=0xff;
	 temp1=(temp1&0xf0)|P_motor1[i];
	 PC8255=temp1;	 
	 delay(10);
	 TR1=1;
   }
   if(NowKey==KEY_3)
   {
     Motor_speed++;	 
	 if(Motor_speed>200)
	     Motor_speed=200;
	 NowKey=0xff;
	 TR1=0;
	 num_disp(1,0,0,Motor_speed/100);
     num_disp(1,0,8,Motor_speed/10%10);
     num_disp(1,0,16,Motor_speed%10);
	 TR1=1;
   }
   if(NowKey==KEY_4)
   {
     Motor_speed--;
	 if(Motor_speed<20)
	    Motor_speed=20;
	 NowKey=0xff;
	 TR1=0;
	 num_disp(1,0,0,Motor_speed/100);
     num_disp(1,0,8,Motor_speed/10%10);
     num_disp(1,0,16,Motor_speed%10);
	 TR1=1;
   }
  }
  ET1=0;
  TR1=0;
  Menu_Back();
}
/*------------24CXX 按输入的起始地址读取16个字节--------*/
void Menu_Memory_ReData()
{
    uchar idata temp1[16];
	uint  idata  addr;
	uchar i,j,x,y;
	bit cs3;
	cs3=1;
	clrscr();
	x=0;
	y=0;
	NowKey=0xff;
	while (NowKey!=KEY_OK)
   {
      //EX0=1;
	  GetTextInput();
	  if(KeyInputTemp==1)
	  {
	    addr<<=4;
	    addr+=TextInputTemp;
	    num_disp(cs3,x,y,TextInputTemp);
	    y+=8;
        if(y==64)						   //     输出8个数字时换右屏
	    {
		  cs3=!cs3;
		  y=0;
		  j++;								  
	    }	  
	   KeyInputTemp=0; 
	  }
    }	
	R24C32(addr,temp1,16);
	x=2;
	y=0;		
	for (i=0;i<16;i++)
	{      
        num_disp(cs3,x,y,temp1[i]>>4);
	    y+=8;
		num_disp(cs3,x,y,temp1[i]&0x0f);
		y+=8;
		
        if(y==64)						   //     输出8个数字时换右屏
	    {
		  cs3=!cs3;
		  y=0;
		  j++;								  
	    }
		if(j==2)
		{
		  j=0;
		  x+=2;
		}	 
	}
   while(NowKey!=KEY_ESC);
   Menu_Back();
}
void Menu_Memory_WrData()
{
    uchar idata temp1[16];
	uint  idata  addr;
	uchar i,j,x,y;
	bit cs3;
	cs3=1;
	clrscr();
	x=0;
	y=0;
	NowKey=0xff;
	while (NowKey!=KEY_OK)
   {
      //EX0=1;
	  GetTextInput();
	  if(KeyInputTemp==1)
	  {
	    addr<<=4;
	    addr+=TextInputTemp;
	    num_disp(cs3,x,y,TextInputTemp);
	    y+=8;
        if(y==64)						   //     输出8个数字时换右屏
	    {
		  cs3=!cs3;
		  y=0;
		  j++;								  
	    }	  
	   KeyInputTemp=0; 
	  }
    }
	NowKey=0xff;
	i=0;
	j=0;
	x=2;
	y=0;
	while (NowKey!=KEY_OK)
   {
      //EX0=1;
	  GetTextInput();
	  if(KeyInputTemp==1)
	  {
	    temp1[i]<<=4;
	    temp1[i]+=TextInputTemp;		
	    num_disp(cs3,x,y,TextInputTemp);
		j++;
		if(!(j%2))
		  i++;
	    y+=8;
        if(y==64)						   //     输出8个数字时换右屏
	    {
		  cs3=!cs3;		  
		  y=0;		  								  
	    }	  
	   KeyInputTemp=0; 
	  }
    }	
	W24C32(addr,temp1,i);	
   while(NowKey!=KEY_ESC);
   Menu_Back();
}
/*-------------模数转换--------*/
void Menu_ADC0832()
{  
    uchar adtemp1;
	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) 
    {	
      //EX0=1;
	  AD0809_IN0=0x00;						 //启动AD
	  delay(80);
	  adtemp1=AD0809_IN0;  
	  num_disp(1,0,32,adtemp1>>4);
	  num_disp(1,0,40,(adtemp1&0x0f));
	  AD0809_IN1=0x00;						 //启动AD
	  delay(80);
	  adtemp1=AD0809_IN1;  
	  num_disp(1,2,32,adtemp1>>4);
	  num_disp(1,2,40,(adtemp1&0x0f));
	  AD0809_IN2=0x00;						 //启动AD
	  delay(80);
	  adtemp1=AD0809_IN2;  
	  num_disp(1,4,32,adtemp1>>4);
	  num_disp(1,4,40,(adtemp1&0x0f));
	  AD0809_IN3=0x00;						 //启动AD
	  delay(80);
	  adtemp1=AD0809_IN3;  
	  num_disp(1,6,32,adtemp1>>4);
	  num_disp(1,6,40,(adtemp1&0x0f));
	  AD0809_IN4=0x00;						 //启动AD
	  delay(80);
	  adtemp1=AD0809_IN4;  
	  num_disp(0,0,32,adtemp1>>4);
	  num_disp(0,0,40,(adtemp1&0x0f));
	  AD0809_IN5=0x00;						 //启动AD
	  delay(80);
	  adtemp1=AD0809_IN5;  
	  num_disp(0,2,32,adtemp1>>4);
	  num_disp(0,2,40,(adtemp1&0x0f));
	  AD0809_IN6=0x00;						 //启动AD
	  delay(80);
	  adtemp1=AD0809_IN6;  
	  num_disp(0,4,32,adtemp1>>4);
	  num_disp(0,4,40,(adtemp1&0x0f));
	  AD0809_IN7=0x00;						 //启动AD
	  delay(80);
	  adtemp1=AD0809_IN7;  
	  num_disp(0,6,32,adtemp1>>4);
	  num_disp(0,6,40,(adtemp1&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); 
  //EX0=1; 
  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;									 //波特率9600
   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;										//波特率9600
   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()			  
{
  uchar name,y,i=0;
  uchar  led_buff[3]={0x00,0x00,0x00};
  clrscr();
  NowKey=0xff;
  name=0;
  cs1=1;
  cs2=0;
  chn_disp(0,32,2,16,1,2,hz_test_4);
  chn_disp(2,0,2,16,1,3,hz_please);
  chn_disp(4,0,2,16,1,2,hz_test);
  chn_disp(4,32,2,16,1,1,hz_test_4+32);
  chn_disp(4,48,2,16,1,1,hz_hao);
  cs1=0;
  cs2=1;  
  chn_disp(0,0,2,16,1,2,hz_test);
  num_disp(0,4,16,1);
  num_disp(0,4,48,2);
  TMOD=0x20;
  TH1=0xfd;
  TL1=0xfd;    
  while (NowKey!=KEY_OK)
  {
     //EX0=1;
	 GetTextInput();
	 if(KeyInputTemp==1)
	 {
	    name=TextInputTemp;			
	 }
     num_disp(0,2,16,name);	  
  }
  TR1=1;
  SCON=0xf8;
  SBUF=0x10|name;
  while (!TI);
  TI=0;
  SM2=0;  
  while (NowKey!=KEY_ESC)
  {
     //EX0=1;    
     if(name==0x01)
     {
	    for(i=0;i<3;i++)
	    {
	       while (!RI);
	       RI=0;
	       led_buff[i]=SBUF;		
	    } 	  
     }
     if(name==0x02)
     {
	  
	    while (!RI);
	    RI=0;
	    led_buff[0]=SBUF;	   
     }
	 y=0;
	 for(i=0;i<3;i++)
	 { 
          
        num_disp(0,6,y,led_buff[i]>>4);		  		
        y+=8;
	    num_disp(0,6,y,led_buff[i]&0xf);
		y+=8;        
	 }
  }
  cs1=0;
  cs2=1;  
  chn_disp(0,0,2,16,1,2,hz_test);  
  Menu_Back();
}
/*----------------多机发送----------------*/
void Menu_SerialSend_MCU()				  
{
  uchar name,y,i=0,j=0;
  uchar  led_buff[3];
  clrscr();
  NowKey=0xff;
  name=0;
  cs1=1;
  cs2=0;
  chn_disp(0,32,2,16,1,2,hz_test_4);
  chn_disp(2,0,2,16,1,3,hz_please);
  chn_disp(4,0,2,16,1,2,hz_test);  
  chn_disp(4,32,2,16,1,1,hz_test_4+32);
  chn_disp(4,48,2,16,1,1,hz_hao);
  cs1=0;
  cs2=1;  
  chn_disp(0,0,2,16,1,2,hz_test);
  num_disp(0,4,16,1);
  num_disp(0,4,48,2);
  TMOD=0x20;
  TH1=0xfd;
  TL1=0xfd;      
  while (NowKey!=KEY_OK)
  {
    // EX0=1;
	 GetTextInput();
	 if(KeyInputTemp==1)
	 {
	    name=TextInputTemp;
		KeyInputTemp=0;			
	 }
     num_disp(0,2,16,name);	  
  }
  NowKey=0xff;
  cs1=1;
  cs2=0;
  chn_disp(4,0,2,16,1,4,hz_chuanshu);
  y=0;
  while (NowKey!=KEY_OK)
  {
     //EX0=1;
	 GetTextInput();
	 if(KeyInputTemp==1)
	 {
	    led_buff[i]<<=4;
		led_buff[i]+=TextInputTemp;
		num_disp(0,6,y,TextInputTemp);
		j++;
		if(!(j%2))
		   i++;		  		
		y+=8;
		if(y==48)
		  y=8;
		KeyInputTemp=0;
	 }
  }
  TR1=1;
  SCON=0xf8;
  SBUF=name;
  while (!TI);
  TI=0;
  TB8=0;    
  if(name==0x01)
  {
	 for(i=0;i<3;i++)	  
	 {
	    SBUF=led_buff[i];
	    while(!TI);
	    TI=0;
	 }
  }
  if(name==0x02)
  {
	  i=0;
	  SBUF=led_buff[i];
	  while (!TI);
	  TI=0; 	   
  }
  clrscr();
  cs1=1;
  cs2=0;
  chn_disp(0,32,2,16,1,2,hz_test_4);  
  cs1=0;
  cs2=1;  
  chn_disp(0,0,2,16,1,2,hz_test);
  //EX0=1;
  while (NowKey!=KEY_ESC);
  Menu_Back(); 
}
/*----------------返回菜单--------*/
void Menu_Back()
{
   NowKey=0xff;
   clrscr();
   JudgeHLight();
}
/*----------------版本说明------------*/
void MenuFunction_Help_2()
{
  DispFaceBmp();
  NowKey=0xff;
  EX0=1;   
  while(NowKey==0xff);					  // 按任意键退出  
  Menu_Back();
}


#endif

⌨️ 快捷键说明

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