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

📄 22.c

📁 这是基于4*4键盘
💻 C
📖 第 1 页 / 共 2 页
字号:
   
    case 0x12:kb=8;break;
    case 0x22:kb=7;break;
    case 0x42:kb=6;break;
    case 0x82:kb=5;break;
    
	case 0x14:kb=12;break;
    case 0x24:kb=11;break;
    case 0x44:kb=10;break;
    case 0x84:kb=9;break;
    
	case 0x18:kb=16;break;
    case 0x28:kb=15;break;
    case 0x48:kb=14;break;
    case 0x88:kb=13;break;

    default:  kb=0x00;break;
     }
	 return(kb);
}

void KeyDisplay(void)
{
 int  keydata;
 keydata=getkey(keycode);
 delay(250);
 switch(keydata)
     {
      case 1:
      case 2:  
      case 3:
      case 4:
      case 5:
      case 6:
      case 7:
      case 8:
      case 9:
      case 10:
	  case 12:if(numbit<5)
	    {
		  if(keydata==12)
		     keydata=11;
	      if(trace==2) 
		  {
		    for(i=0;i<16;i++)
			{
			 peak_digit[4][i]=peak_digit[3][i];
			 peak_digit[3][i]=peak_digit[2][i];
			 peak_digit[2][i]=peak_digit[1][i];
			 peak_digit[1][i]=peak_digit[0][i];
			 peak_digit[0][i]=number[keydata-1][i]; 
			}
			LCD_write_picture();
			LCD_write_instruction(0x96);
		   }
		  if(trace==4)
		  {
		    for(i=0;i<16;i++)
			{
		     frequency_digit[4][i]=frequency_digit[3][i];
			 frequency_digit[3][i]=frequency_digit[2][i];
			 frequency_digit[2][i]=frequency_digit[1][i];
			 frequency_digit[1][i]=frequency_digit[0][i];
			 frequency_digit[0][i]=number[keydata-1][i]; 
			}
			LCD_write_picture();
			LCD_write_instruction(0x8E);
		   }
		   ++numbit;
		 }
	     break;
	  case 11:switch(trace)
	  {
	     case 1:trace=5;LCD_write_picture();LCD_write_instruction(0x8F);break;
		 case 2:trace=1;LCD_write_picture();LCD_write_instruction(0x87);break;
		 case 3:trace=2;LCD_write_picture();LCD_write_instruction(0x96);break;
		 case 4:trace=3;LCD_write_picture();LCD_write_instruction(0x97);break;
		 case 5:trace=4;LCD_write_picture();LCD_write_instruction(0x8E);break;
		 default:break;
	  }
	  numbit=0;
	  break;
	  case 13:break;
	  case 14:switch(trace)
	  {
	     case 1:switch(picture_data)
		        {
				   case 1:
				     picture_data=3;
				     LCD_write_picture();
				   break;
				   case 2:
				     picture_data=1;
				     LCD_write_picture();
				   break;
		       	   case 3:
				     picture_data=2;
				     LCD_write_picture();
				   break;
				   default:break;
				}
				  LCD_write_instruction(0x87);
				   
				break;
		 case 3:if(peak_data==1)
		        {
				   peak_data=2;
				   LCD_write_picture();
				}
				else
				{ 
				   peak_data=1;
				   LCD_write_picture();
				}
				
				LCD_write_instruction(0x97);
				break;
		 case 5:if(frequency_data==1)
		        {
				   frequency_data=3;
				   LCD_write_picture();
				}
				else if(frequency_data==2)
				{
				   frequency_data=1;
				   LCD_write_picture();
				}
				else if(frequency_data==3)
				{
				   frequency_data=2;
				   LCD_write_picture();
				}
				
				LCD_write_instruction(0x8F);
				break;
		 default:break;
	  }
	  break;
	  case 15:switch(trace)
	  {
	     case 1:trace=2;LCD_write_picture();LCD_write_instruction(0x96);break;
		 case 2:trace=3;LCD_write_picture();LCD_write_instruction(0x97);break;
		 case 3:trace=4;LCD_write_picture();LCD_write_instruction(0x8E);break;
		 case 4:trace=5;LCD_write_picture();LCD_write_instruction(0x8F);break;
		 case 5:trace=1;LCD_write_picture();LCD_write_instruction(0x87);break;
		 default:break;
	  }
	  numbit=0;
	  break;
	  case 16:switch(trace)
	  {
	     case 1:switch(picture_data)
		        {
				   case 1:
				     picture_data=2;
				     LCD_write_picture();
				   break;
				   case 2:
				     picture_data=3;
				     LCD_write_picture();
				   break;
		       	   case 3:
				     picture_data=1;
				     LCD_write_picture();
				   break;
				   default:break;
				}
				LCD_write_instruction(0x87);
				trace=1; 
				break;
		 case 3:if(peak_data==1)
		        {
				   peak_data=2;
				   LCD_write_picture();
				}
				else
				{ 
				   peak_data=1;
				   LCD_write_picture();
				}
				trace=3;
				LCD_write_instruction(0x97);
				break;
		 case 5:if(frequency_data==1)
		        {
				   frequency_data=2;
				   LCD_write_picture();
				}
				else if(frequency_data==2)
				{
				   frequency_data=3;
				   LCD_write_picture();
				}
				else if(frequency_data==3)
				{
				   frequency_data=1;
				   LCD_write_picture();
				}
				trace=5;
				LCD_write_instruction(0x8F);
				break;
		 default:break;
	  }
	  break;
    }
  
  }	
  

void LCD_write_picture(void)	     //绘图子程序
{
  int k;
  LCD_write_instruction(0x01);  
   delay_155us();     
  LCD_write_instruction(0x34);  
   delay_155us();     
  LCD_write_instruction(0x36);  
   delay_155us();  
   switch(picture_data) 
   {
      case 1:ip1=picture1;break;
	  case 2:ip1=picture2;break;
	  case 3:ip1=picture3;break;
	  default:break;
   } 
   switch(peak_data)
   {
      case 1:ip2=unit6;ip3=unit5;break;
	  case 2:ip2=unit5;ip3=blank;break;
	  default:break;
   }
   switch(frequency_data)
   {
      case 1:ip4=blank;break;
	  case 2:ip4=unit1;break;
	  case 3:ip4=unit4;break;
	  default:break;
   }
   
   for(i=0;i<16;i++)	    //第一行图形
   {
      LCD_write_instruction(0x80+i);   //显示地址  
      LCD_write_instruction(0x80);   //显示X地址   
      for(j=0;j<16;j++)
        {
        LCD_write_data(*ip1);
          ++ip1; 	       
        }
  }
   delay_155us();
   k=0;
  for(i=0;i<16;i++)		    //第二行图形
  {
      LCD_write_instruction(0x80+16+i);   //显示地址  
      LCD_write_instruction(0x80);   //显示X地址
	  for(j=0;j<8;j++) 
        LCD_write_data(peak[j+k*8]);
	  
      for(j=0;j<5;j++)
	    LCD_write_data(peak_digit[5-j-1][k]);
		
  		++k;

	    LCD_write_data(0x00);
	    LCD_write_data(*ip2);
		LCD_write_data(*ip3);
		++ip2;
		++ip3;	  	   	            
  }
   delay_155us();
   k=0;
  for(i=0;i<16;i++)			 //第三行图形
  {
      LCD_write_instruction(0x80+i);   //显示地址  
      LCD_write_instruction(0x88);   //显示X地址 
	  for(j=0;j<8;j++) 
	  {
        LCD_write_data(frequency[j+k*8]);
	  }
      for(j=0;j<5;j++)
	    LCD_write_data(frequency_digit[5-j-1][k]);
  		++k;
	 
	     LCD_write_data(*ip4);
	     LCD_write_data(unit2[i]);
		 LCD_write_data(unit3[i]);
		 ++ip4;	   	             
  }
   delay_155us();
  for(i=0;i<16;i++)			 //第四行图形
  {
      LCD_write_instruction(0x80+16+i);   //显示地址  
      LCD_write_instruction(0x88);   //显示X地址 
	  for(j=0;j<16;j++)
        LCD_write_data(blank[j]);      
  }	 	 
} 	


/* 主函数 */
void main(void)
{	  
 LCD_initial();
 picture_data=2;
 peak_data=2;
 frequency_data=2;
          
LCD_write_picture();
LCD_write_instruction(0x96);   //显示地址 
trace=2; 
while(1)
 {
 keyscan( );
  }
   	
}

⌨️ 快捷键说明

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