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

📄 keyedit.c

📁 基于ARM[LPC2148]SPI的串口液晶显示器6059B的显示程序
💻 C
字号:
#include <head.c>
extern 	ulong 	PARAM[8];
/***************************/
extern void saveee(void);
extern void sendpj(ulong w[]);
extern void watchdog();
//extern unsigned char valaddr;
extern void usdelay(uchar k);
extern void msdelay(uchar k);
extern uchar INTKEY,KEYCHAR;
//void  openlamp(uchar k);
/**************************/
char	numeric(uchar i);
void save()
{
	
    saveee();	
	usdelay(1);
	readee();
	usdelay(5);
   	INTKEY=0;
	ES=1;
	EA=1;
	DE0=0;
	DE =0;
}
void keyedit()
{	
	watchdog();	
	readee();
	switch(KEYCHAR)
	{
	  case FUNKEY:{ watchdog();
					if(numeric(NUMSET)==(NUMSET+1)){;}
					if(numeric(NUMDIF)==(NUMDIF+1)){save();}
					return;
				  }
	  case (MOVKEY & ADDKEY):	  	
				  {	if(numeric(NUMPID)==(NUMPID+1)){save();}
				  	return;
				  }//PID
	  case (MOVKEY & FUNKEY):
				  { watchdog();
	  				if(numeric(NUMCON)==(NUMCON+1)){;}
					if(numeric(NUMCAR)==(NUMCAR+1)){save();}
					return;
				  }//常数
/*	  case (ADDKEY & FUNKEY):
	  			  {
				    if(numeric(8)==9){save();}
					changnum(PARAM[7]);
					valaddr=(uchar)bytebuf[2]*100+(uchar)bytebuf[3]*10+(uchar)bytebuf[4];
				    return;
				  }*///地址可调
	  case 0x55:  { watchdog();
	  				if(numeric(NUMCNT)==(NUMCNT+1)){save();}					
					return;
				  }//采样数
	  case 0x60:  { watchdog();				
					if(numeric(NUMSIG)==(NUMSIG+1)){save();}
					return;
				  }//信号幅度
/*	  case PIDKEY:{
			 		watchdog();
					if((PIDSTAT==0xff)||(PIDSTAT==0x7f))
						{PIDSTAT=pidlamp;S8155A=S8155A & pidlamp;}
					else{PIDSTAT=0xff;S8155A=S8155A |(~pidlamp);}
					ES=1;
					DE0=0;
					EA=1;
					return;
				  }*/
	  default:	  {	ES=1;
					DE0=0;
					EA=1;
					return;
				  }
	}
    watchdog();
	ES=1;
	DE0=0;
	EA=1;
	return;
}
/*void  openlamp(uchar k)
{
    switch(k)
	 {
	  case NUMCON:S8155A=conlamp;break;
	  case NUMPID:S8155A=0xff;	break;
	  case NUMSET:S8155A=setlamp;break;
	  case NUMDIF:S8155A=diflamp;break;
	  default:break;
	 }
//	COM8155A=S8155A;
	return;
}*/

char numeric(uchar n)
{ 
	 char flabit,st,bytebuf;//flabit == flashbit
	 ulong temp;  
     n=n-1;
	 temp=PARAM[n];	 
	 watchdog(); 
 	 st=0;
	 st=0;
     INTKEY=0;
     flabit=st;
	 temp=temp+5000000;//灭LED
	 sendpj(&temp);
	 temp=temp-5000000;
     for(;;)
	  {
	       watchdog();    
           for(;INTKEY==0;)// flabit位一直闪烁,直到keydown==1;
			{
           		EA=1;
				watchdog(); 
  				// openlamp(n); 
				EA=0;
				temp=temp+(flabit*10+6)*100000;//灭LED
				sendpj(&temp);
				temp=temp-(flabit*10+6)*100000;
				EA=1;				
				watchdog();
				if(INTKEY!=0)  break;      
                msdelay(200);  	
				EA=0;
				sendpj(&temp);				//开显示,开灯 ,延时      			  				
				watchdog();
				EA=1;
				if(INTKEY!=0)  break;
			 	msdelay(200);	//关灯,关显示,延时  
			}//end loop;	
			watchdog(); 					
     		if(KEYCHAR==MOVKEY) 
				{
			      if(flabit>=4){flabit=st;}
			 	  else flabit++;
				  INTKEY=0;
			 	}
     		else if(KEYCHAR==ADDKEY) 
				{
				 if(flabit==4)bytebuf=temp%10;
				 else if(flabit==3)bytebuf=(temp%100)/10;
				 else if(flabit==2)bytebuf=(temp%1000)/100;
				 else if(flabit==1)bytebuf=(temp%10000)/1000;
				 else if(flabit==0)bytebuf=(temp%100000)/10000;

				 if(bytebuf==9){bytebuf=-9;}
              	 else if((bytebuf<9)&&(bytebuf>=0))bytebuf=1;
				 else bytebuf=0;

				 if(flabit==4)temp+=bytebuf;
				 else if(flabit==3)temp+=bytebuf*10;
				 else if(flabit==2)temp+=bytebuf*100;
				 else if(flabit==1)temp+=bytebuf*1000;
				 else if((flabit==0)&&(bytebuf== 1)){temp+=10000;}
				 else if((flabit==0)&&(bytebuf==-9)){temp=temp%10000;}
				 INTKEY=0;		//1+2=3+4=7+8=15		 
             	}
			sendpj(&temp);	
			if(KEYCHAR==FUNKEY)
				{
				 if(((n==NUMSIG)||(n==NUMCAR))&&(temp>255))
					{
					PARAM[n]=255;
					}
				 else
				 	PARAM[n]=temp;
				 INTKEY=0;	
		     	 return (n+2);
			 	}	
			else INTKEY=0;
	  }                              
} 

⌨️ 快捷键说明

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