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

📄 机械a型液晶显示.c

📁 使用8051单片机来实现电机的转速的调节和液晶显示
💻 C
📖 第 1 页 / 共 3 页
字号:
         connum=1;
         dismark(2);
		}
        else if(keychoose==5)
         {clearmark(1);
         bellnum=1;
         dismark(2);
         }
		  if(specur==0 && (keychoose==6 || keychoose==7))
		 { if(sdspeed>0)sdspeed--;
		   send(0xf4);
		   dispwy(0);
		   delay200();
		   SERCONTROL=1;
		   sendspeed();
		   SERCONTROL=0;
		   if(keychoose==6)dis_test();
		   else if(keychoose==7)disdt();
		 }
		 else if(specur==1 && (keychoose==6 || keychoose==7))
		 { if(sdlc>0)sdlc--;
		   send(0xf4);
		   dispwy(1);
		   delay200();
		   SERCONTROL=1;
		   sendlc();	
	   	   SERCONTROL=0;
		   if(keychoose==6)dis_test();
		   else if(keychoose==7)disdt();
		 }
		}break;
		case 51:
		{send(0xf4);
		 dispwy(0);
		 delay200();
		 delay200();
		 
		 delay200();
         if(keychoose==6)
		 {dis_test();
		 }
		 else if(keychoose==7)
		 { disdt();
		 }
		}break;
		case 52:
		{send(0xf4);
		 dispwy(1);
		delay200();
		delay200();
		
		 delay200();
         if(keychoose==6)
		 {dis_test();
		 }
		 else if(keychoose==7)
		 { disdt();
		 }
		}break;
	 }
	 EA=1;
	 }
	}

}


/*按键处理程序*/
void keydown(void) interrupt 0 using 1
 {   
  
  uchar keyvalue;

    delays();       //延时去抖
    delays();
    delays();  
  
  EA=0;
  DOG=~DOG;
  
if (IN1==1) goto outin1;
	SERCONTROL=1; 
	 
	  DOG=~DOG;
delay200(); 
DOG=~DOG;
delay(10000);	   
bell=bellvalue;
delay(2000);
DOG=~DOG;
delay(5000);
bell=0;
 keydd=1;

    switch (keychoose)
	{case 1:
      {if(menunum==0)
	     {keydownnum=1;
		 keychoose=2;
	     
		 }
		else if(menunum==1)
		{ keychoose=3;
		 keydownnum=2;
	    
		}
		else if(menunum==2)
		{keychoose=4;
		 keydownnum=3;
		
		}
		else if(menunum==3)
		{keychoose=5;
		keydownnum=4;

		}
	  }break;
	  case 2:
	  {
	    sdspeed=sw[0]*10+sw[1];
		if(sdspeed>80)sdspeed=80;
        sendspeed();//发速度指令
	    keychoose=1;
	   keydownnum=5;
	  }break;
	  case 3:
	  { sdlc=lc[0]*100+lc[1]*10+lc[2];
	    if(sdlc>100)sdlc=100;
	    sendlc();//发励磁指令
	    keychoose=1; //return to menu
	   keydownnum=5;
	  }break;
	  case 4:
	   {if(connum==0) {keychoose=6;keydownnum=6;controlstyle=0xe3;}
	    else{keychoose=7;keydownnum=7;controlstyle=0x2a;}
		consend(); //发实验项目指令
	   }break;
	  case 5:
	  {if(bellnum==0)bellvalue=1;
	   else bellvalue=0;
       keychoose=1;
	    keydownnum=5;
		
	  }break;
	}


 outin1: 
  keyvalue=keyscan();
  P1=0xf0;
  if(shake==1)goto outkey;
  SERCONTROL=1;  
   DOG=~DOG;
delay(10000);
DOG=~DOG;
delay(30000);	   
bell=bellvalue;
delay(2000);
DOG=~DOG;
delay(5000);
bell=0;

switch (keyvalue)
  {    case 0xe1:         //key1  数字1
	   { if(keychoose==2 || keychoose==3)
	     { keydownnum=8;
		    keydd=1;//digkey(1);
		 }
		 else if(keychoose==6 || keychoose==7)
		 {keydownnum=51;
		  specur=0;
		  keydd=1;        
		 }
	   }break;
  
	   case 0xd1://key2,数字2
	   { if(keychoose==2 || keychoose==3)
	     { keydownnum=9;
		  keydd=1;//digkey(2);
		 }
		 else if(keychoose==6 || keychoose==7)
		 {keydownnum=52;
		  specur=1;
		  keydd=1;       
		 }
	   }break;
	    case 0xb1://key3,数字3
	   {   if(keychoose==2 || keychoose==3)
	     { keydownnum=10;
		   keydd=1;//digkey(3);
		 }
		else if(keychoose==6 || keychoose==7)
		{sendzero();
		}
	   }break;
	   case 0x71://key4,符号∧
	   {keydownnum=21;
		   keydd=1;
	   	  
	   }break;
	   case 0xe2://key5  数字4
	   {if(keychoose==2 || keychoose==3)
	     { keydownnum=11;
		  keydd=1;//digkey(4);
		 }
		 else if(keychoose==6 || keychoose==7)
		{sendrnew();
		}
	   }break;
	   case 0xd2://key6,  数字5
	   {if(keychoose==2 || keychoose==3)
	     {keydownnum=12;
	       keydd=1;//digkey(5);
		 }
		 else if(keychoose==7)
		 {pause=~pause;
		 } 
	   }break;
	   case 0xb2://key7, 数字6
	   {if(keychoose==2 || keychoose==3)
	     { keydownnum=13;
		  keydd=1;//digkey(6);
		 }
		
	   }break;
	   case 0x72://key8,   符号∨
	   {keydownnum=22;
		   keydd=1;
	 
	   }break;
	   case 0xe8://key9, Menu 
	   {keychoose=1;
	    keydd=1;
        keydownnum=18;

	 
	   }break;
	   case 0xd8://key10, 数字0
	   {if(keychoose==2 || keychoose==3)
	     { keydownnum=17;
		  keydd=1;//digkey(0);
		 }
		 /* else if(keychoose==3)
		 {keydownnum=50;
		  keydd=1;       
		 }*/
		 else if(keychoose==6 || keychoose==7 || keychoose==1)
		 {sdlc=0;
		  lc[0]=0;
		  lc[1]=0;
		  lc[2]=0;
          sendlc();
		 }
	   }break;
	 
	    case 0xb8://key11,符号⊙
	   {sdspeed=0;
         sw[0]=0;
         sw[1]=0;
         
        sendspeed();
	   }break;
	   case 0x78://key12,符号>
	   {  keydd=1;
		keydownnum=20; 
	    
	   }break;
	   case 0xe4://key13,数字7
	   {if(keychoose==2 || keychoose==3)
	     { keydownnum=14;
		  keydd=1;//digkey(7);
		 }
		 
	   }break;
   
	    case 0xd4://key14,数字8
	   {if(keychoose==2 || keychoose==3)
	     { keydownnum=15;
		  keydd=1;//digkey(8);
		 }
		 
	   }break;
	   case 0xb4: //key15,数字9
	    {if(keychoose==2 || keychoose==3)
	     { keydownnum=16;
		  keydd=1;//digkey(9);
		 }
		 
		  }break;
	   case 0x74: //key16,符号<
	    {  keydd=1;
		keydownnum=19;
		 
	     }break;
  }
  

    DOG=~DOG;
  
 outkey:    
			 EA=1;
		
			 EX0=1;
			 SERCONTROL=0;//关串口发送功能,恢复为默认的接受状态
			 DOG=~DOG;
 }



/*----------------串口中断程序-----------------------*/
 void seria(void) interrupt 4 using 2
       {
	     uchar cnum;
		 float summi;
		 float summo;
		
		
	     uchar h;
         
         uchar i;
		 uchar k;
		 
		 
		 summi=0;
		 summo=0;
		 
		 h=0;
		 DOG=~DOG;
		 EX1=0;
         EX0=0;
         ES=0;
		 EA=0;
         RI=0;
         i=SBUF;
     
     if(i==0xfa)//端口采集数据
	   {  
	      while(RI==0 && h<80)
	      {h=h+1;}
	      if(h==80)
	      {goto out10;}
           RI=0;
		   h=0;
		   k=SBUF;
		   if(k==0xaf)
            {while(RI==0 && h<80)
		      {h=h+1;}
		      if(h==80)
		      {goto out10;}
               RI=0;
			   h=0;
			 
              ana1[num]=SBUF; 
               while(RI==0 && h<80)
		      {h=h+1;}
		      if(h==80)
		      {goto out10;}
               RI=0;
			   h=0;
              ana2[num]=SBUF; 
               
               while(RI==0 && h<80)
		      {h=h+1;}
		      if(h==80)
		      {goto out10;}
               RI=0;
			   h=0;
               digl1=SBUF;
               while(RI==0 && h<80)
		      {h=h+1;}
		      if(h==80)
		      {goto out10;}
               RI=0;
			   h=0;
               
               digh1=SBUF;
               while(RI==0 && h<80)
		      {h=h+1;}
		      if(h==80)
		      {goto out10;}
               RI=0;
			   h=0;
               
               digl2=SBUF;
               while(RI==0 && h<80)
		      {h=h+1;}
		      if(h==80)
		      {goto out10;}
               RI=0;
			   h=0;
			    
               digh2=SBUF;

               
			   dig1=digh1*256+digl1;
                dig1=dig1*3;//200;
		        dig1=dig1/25;
               
			   dig2=digh2*256+digl2;
                dig2=dig2*3;//200;
		        dig2=dig2/25;
               num=num+1;
               if(num==N)
			   num=0;
               for(cnum=0;cnum<N;cnum++)
			   {
                summi += ana1[cnum];
				summo += ana2[cnum];
               }
                analog1=summi/N;
                analog1=analog1/49;
                
                analog2=summo/N;
				analog2=analog2*1/10;         
		        
			   altra=1;
           }
		 }
		else if(i==0xfc)//
	   {  
	      while(RI==0 && h<80)
	      {h=h+1;}
	      if(h==80)
	      {goto out10;}
           RI=0;
		   h=0;
		   k=SBUF;
		   if(k==0xcf)
            {while(RI==0 && h<80)
		      {h=h+1;}
		      if(h==80)
		      {goto out10;}
               RI=0;
			   h=0;
              sdspeed=SBUF; 
             
		     }
		}
		else if(i==0xab)//
	   {  
	      while(RI==0 && h<80)
	      {h=h+1;}
	      if(h==80)
	      {goto out10;}
           RI=0;
		   h=0;
		   k=SBUF;
		   if(k==0xba)
            {while(RI==0 && h<80)
		      {h=h+1;}
		      if(h==80)
		      {goto out10;}
               RI=0;
			   h=0;
              sdlc=SBUF; 
             
		     }
		}
   out10:      ES=1;
            EX1=1;
             EX0=1;
			 EA=1;
       }
                                       


























 








⌨️ 快捷键说明

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