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

📄 config.c

📁 240128液晶底层驱动以及键盘操作编写菜单
💻 C
📖 第 1 页 / 共 4 页
字号:
#include <reg52.h>
#include <intrins.h>

#define   EXTERN_LCD
#include  "lcd.h"

#include  "config.h"

 uchar k2=0,k4=0,k16=0;//,k5=0,k6=0,k7=0,k8=0,k1=0,k3=0;//,k9=0;
 uchar  k18=0,k19=0,k20=0,k21=0;//,k10=0,k11=0,k12=0,k13=0,k15=0,k17=0;
// uint   k14=0,k9=0;
 uchar a1=0,b1=0,c1=0;//kk

 bit g1=0,g2=0,flag_start=0,gg=0,gf=0;//,g3=0;
 bit flag1=0,flag2=0,flag3=0,flag4=0;//,flag5=0,flag6=0,flag7=0,flag8=0,flag9=0;
 //bit flag10=0,flag11=0,flag12=0,flag13=0,flag14=0,flag15=0,flag16=0;//,flag6=0;
 //bit flag17=0,flag18=0,flag19=0,flag20=0,flag21=0;

uint data array1[8]= {4,122,1,0,1,40,1,4};
uint xdata array2[32]={20,5,0,0,3,2,20,40,
		               25,0,0,0,3,2,20,40,
					   20,5,0,0,3,2,20,40,
					   27,0,0,0,3,2,20,40};
uint xdata array3[32]={0,0,0,0,0,0,0,0,
		               0,0,0,0,0,0,0,0,
					   0,0,0,0,0,0,0,0,
					   0,0,0,0,0,0,0,0};
//uchar xdata array4[8]={'x',' ',' ',' ','x',' ',' ',' '};
//uchar xdata array5[10]={' ',' ',' ',' ','n','o','n','e',' ',' '};
//uchar xdata array6[6] ={' ',' ',' ',' ',' ',' '};

void Keyboard_Process(void)//被调用的前提是: 有键按下/////
{
  P0=0xf0; /////键盘的正常工作赋值//////////////////////
  key_xd_delay();////键消抖延时/////
  if((P07&P06&P05&P04)==0)////确定有真正的键按下////
   {
     if(flag_start==0)///////上电后有任意键按下时进入开机画面//////
	  {
       	flag_start=1;////当再有键按下时保证不会重复进入开机画面////
	    LCD_Clear_Text();//////清除文本层显示数据/////////////////////// 
	    LCD_Disp_Graphics(picture2);//显示图片2////开机片花/////
	    Delay(500);
	    LCD_Clear_Graphics();//清除图形层显示数据/
	    Disp_Start();/////////////显示开机界面///
	    Delay(50);
      }
     else  { Kb_Process_1();}///flag_start=1;的情况///  
   }/////////if((P07&P06&P05&P04)==0)结束///////////////////////////
}//////Keyboard_Process(void)结束///////

/////////////////////////////////////////////////////////////////////////////////
void  Kb_Process_1(void)//被调用的前提是: 有键按下并且flag_start=1;/////
{////////已经处于开机界面状态//////////////////////////////////////////
  if(flag1==0)///////此时有键按下//而之前又没有按下确定键进入第一层主菜单//////
   {
    k16=Operate_Model();
    if(k16==88)//按下确定键//
      {
        LCD_Clear_Text();//////清除文本层显示数据////
        Disp_interface_1();////按下确定键才进入第一层主菜单界面//
   	    flag1=1;////当再有确定键按下时保证不会进入第一层主菜单界面/////
      }
    else {;}////只有按下确定键才进入第一层主菜单界面//按其它键无效////
   }
 else   {Kb_Process_2();}///flag1=1;的情况//
}

//////////////////////////////////////////////////////////////////////////////////
void  Kb_Process_2(void)//被调用的前提是: 有键按下并且flag_start=1;flag1=1;///
{/////////////现在已经处于第一层主菜单界面中///////////////////////////
 if(flag2==0)/////此时有键按下//而之前又没有按下任意键来操作第一层主菜单///////
   {
	  //Disp_interface_1();////显示主功能的菜单界面///
      k16=Operate_Model();
      if(k16==88)//按下确定键//
      {
        LCD_Clear_Text();//////清除文本层显示数据////
        Disp_interface_2();//显示按确定键后的界面//
   	    flag2=1;/////已经有有效的键来操作第一层主菜单/////
        k2=88;		   			          
      }
     if(k16==33)//按下箭头标向下移动的键//
      {
        //Disp_interface_1();////显示主功能的菜单界面///
        LCD_Write_word(2,16,"    %",0);//清除原来箭头标的显示//
        LCD_Write_word(2,32,"==> 2)  基  本  资  料%",0);//在新地方显示箭头标//
        LCD_Disp_Frame_S();        ///////外框维护///////////
        flag2=1;//////////已经有有效的键来操作第一层主菜单///////////////
   	    k2=33;  
      }	
     ///////注意按其它的键无效///////
	}
  else  {Kb_Process_3();}//////flag2=1;的情况//////			
}

///////////////////////////////////////////////////////////////////////////////////////////////
void  Kb_Process_3(void)//被调用的前提是: 有键按下并且flag_start=1;flag1=1;flag2=1;/////
{ ///////此时可能处于2种界面状态///k2=88的界面和k2=33的界面///////////////////////////////////////////////////////// 
  if(flag3==0)/////此时有键按下//而之前又没有按下任意键来操作k2=88的界面和k2=33的界面///////
  {
     if(k2==88)//////如果是对k2=88的界面进行操作/////
       {////////////已经处于Disp_interface_2();的界面状态//
		   k16=Operate_Model();
	       if(k16==88)///如果按下确定键//
		    {
		     LCD_Clear_Text();//////清除文本层显示数据////
		     Disp_interface_4(array1);//显示按确定键后的界面//
	         Cursor_configure(11,32,0x20,0x20,0x6f);//光标配置//
			 flag3=1;
	         k4=22;     
		    }
	       if(k16==33)/////如果按下箭头标向下移动的键//
		    {
		     LCD_Write_word(2,16,"   %",0);////清除原来箭头标的显示//
	         LCD_Write_word(2,32,"==>%",0);//光标向下移动到//现行控制方案状况////
	         LCD_Disp_Frame_S();           //////////外框维护///////////
			 flag3=1;
			 k4=55;             
		    }
            if(k16==11)//向上//返回到前一界面//
		     {
		      LCD_Clear_Text();//////清除文本层显示数据////
		      Disp_interface_1();////
		   	  flag2=0;////仍然有flag_start=1;flag1=1;////
		     }
         ///////////注意按其它的键无效//////////////
       }
     else/// k2=33的情况//如果是对k2=33的界面进行操作//
       {////已经处于k2=33的界面状态//LCD_Write_word(2,32,"==> 2)  基  本  资  料%",0);///////
           k16=Operate_Model();
	       if(k16==88)///如果按下确定键//
		    {
		    // LCD_Clear_Text();//////清除文本层显示数据////
		    // Disp_interface_4(array1);//显示按确定键后的界面//
	        // Cursor_configure(11,32,0x20,0x20,0x6f);//光标配置//
			// flag3=1;
	        // k4=33;     
		    }
	       if(k16==33)/////如果按下箭头标向下移动的键//
		    {
		    // LCD_Write_word(2,16,"   %",0);////清除原来箭头标的显示//
	        // LCD_Write_word(2,32,"==>%",0);//光标向下移动到//现行控制方案状况////
	        // LCD_Disp_Frame_S();           //////////外框维护///////////
			// flag3=1;
			// k4=66;             
		    }
            if(k16==11)//向上//返回到前一界面//
		     {
		     // LCD_Clear_Text();//////清除文本层显示数据////
		     // Disp_interface_1();////
		   	 // flag2=0;////仍然有flag_start=1;flag1=1;////
		     }
         ///////////注意按其它的键无效//////////////				 
       }
   }
  else  {Kb_Process_4();}////////flag3=1;的情况/////////
}

/////////////////////////////////////////////////////////////////////////////////////////////////
void  Kb_Process_4(void)//被调用的前提是: 有键按下并且flag_start=1;flag1=1;flag2=1;flag3=1/////
{
   if(flag4==0)
	{
      if(k4==22)
	    {
        ///////进行3个界面相互切换//72个数据的输入、显示并保存处理///////////////
        process_1();
        }
	  if(k4==55)//// k4=55的情况////////
		{
        //process_2();
	    //////////////////////
		}
	  if(k4==33)//// k4=33的情况////////
		{
        //process_3();
	    //////////////////////
		}
	  if(k4==66)//// k4=66的情况////////
		{
        //process_4();
	    //////////////////////
		}
	}
  else/////// flag4=1////////
    {
     ;	  		
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
				        
/*
///////////////////////////////////////////////////////////////////////////////////////////////////////////
void process_2(void)
{
//////////////if(k19==0)结构////处理向上和向下翻滚的功能//////////////////////////////////////////////////////////////// 
  if(k22==0)
  { 
   k16=Operate_Model();
   if(k16==33)///向下翻//
	{
       LCD_Write_word(2,32,"   %",0);////清除原来箭头标的显示//
	   LCD_Write_word(2,48,"==>%",0);//光标向下移动到//现行控制方案状况////
	   LCD_Disp_Frame_S();           //////////外框维护///////////
       flag3=1;
	   k4=55;             
      // g1=1; k18=0; k19++;
	  // LCD_Clear_Text();//////清除文本层显示数据////
      // Disp_interface_5(array2);//确定//
      // Cursor_configure(5,64,0x20,0x20,0x6f);//光标配置//

	   return;
	} 
   else 
    {
		if(k16==11)///向上翻//
		  {
		     //LCD_Clear_Text();//////清除文本层显示数据////
		     //Disp_interface_2();//确定//
		     //flag_start=1;flag1=1;flag2=1;
			 //flag3=0;k19=0;
			 //k2=88;
	         //Cursor_configure(5,64,0x20,0x20,0x69);//光标不显示//
	   	     return;
		  }
	    else
		  {
             if(k16==88)//////
	          {

                 LCD_Clear_Text();//////清除文本层显示数据////
				 Disp_interface_7(array4);//显示按确定键后的界面//
				 Cursor_configure(14,48,0x20,0x20,0x6f);//光标配置//
								 //flag4=1;
								 //k4=22; 
		         //flag_start=1;flag1=1;flag2=1;

⌨️ 快捷键说明

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