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

📄 text1.c

📁 c8051f020键盘程序,是5X6键盘的好用原代码
💻 C
字号:
/*本程序为键盘扫描程序,各键值初定为0x00-0x09对应各个数字键,0x0A-确认,0x0B清除,0x0C编号
,0x0D加液,0x0E菜单,0x0F-走纸,0x10-打印,0x11-关机,0x12-左方向键,0x13右方向键,0x14上方
向键,0x15下方向键*/

#include <C8051F020.H>
#define uchar unsigned char
#define uint  unsigned int

void whatkey(void);
/*
void key_on(uchar ikey);
*/                                              /*函数声明*/

void main()                                     /*主函数*/
{
 while(1)
  whatkey();
}

/*
void key_on(uchar ikey)
{
 switch(ikey)
 {
  case 0x00: 按键0操作;
             break;
  case 0x01: .........
  ....................
 }
}
*/                                              /*具体执行函数*/
void whatkey(void)                              /*扫描函数,判断哪个按键按下*/
{
 uchar key;                                     /*定义形参,代表具体按键*/
 uchar i,j;                                     /*定义俩参数*/

 P4=0x01;              
 P5^0=0;
 P5^1=0;
 P5^2=0;                                        /*第一排键判断赋值*/

 if(P4==0x21&&P5^0==0&&P5^1==0&&P5^2==0)        /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x21&&P5^0==0&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x07;                                   /*7键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 
  else if(P4==0x41&&P5^0==0&&P5^1==0&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x41&&P5^0==0&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x08;                                   /*8键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 
  else if(P4==0x81&&P5^0==0&&P5^1==0&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x81&&P5^0==0&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x09;                                   /*9键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 
  else if(P4==0x01&&P5^0==1&&P5^1==0&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x01&&P5^0==1&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x0C;                                   /*编号键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  }
  else if(P4==0x01&&P5^0==0&&P5^1==1&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x01&&P5^0==0&&P5^1==1&&P5^2==0)      /*再次判断*/
    key=0x0D;                                   /*加液键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  }
  else if(P4==0x01&&P5^0==0&&P5^1==0&&P5^2==1)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x01&&P5^0==0&&P5^1==0&&P5^2==1)      /*再次判断*/
    key=0x0E;                                   /*菜单键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 



 P4=0x02;              
 P5^0=0;
 P5^1=0;
 P5^2=0;                                        /*第二排键判断赋值*/

 if(P4==0x22&&P5^0==0&&P5^1==0&&P5^2==0)        /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x22&&P5^0==0&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x04;                                   /*4键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 
  else if(P4==0x42&&P5^0==0&&P5^1==0&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x42&&P5^0==0&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x05;                                   /*5键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 
  else if(P4==0x82&&P5^0==0&&P5^1==0&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x82&&P5^0==0&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x06;                                   /*6键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 
  else if(P4==0x02&&P5^0==1&&P5^1==0&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x02&&P5^0==1&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x0F;                                   /*走纸键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  }
  else if(P4==0x02&&P5^0==0&&P5^1==1&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x02&&P5^0==0&&P5^1==1&&P5^2==0)      /*再次判断*/
    key=0x10;                                   /*打印键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 
  else if(P4==0x02&&P5^0==0&&P5^1==0&&P5^2==1)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x02&&P5^0==0&&P5^1==0&&P5^2==1)      /*再次判断*/
    key=0x11;                                   /*关机键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 


 P4=0x04;              
 P5^0=0;
 P5^1=0;
 P5^2=0;                                        /*第三排键判断赋值*/

 if(P4==0x24&&P5^0==0&&P5^1==0&&P5^2==0)        /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x24&&P5^0==0&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x01;                                   /*1键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 
  else if(P4==0x44&&P5^0==0&&P5^1==0&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x44&&P5^0==0&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x02;                                   /*2键*/
    /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 
  else if(P4==0x84&&P5^0==0&&P5^1==0&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x84&&P5^0==0&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x03;                                   /*3键*/
   /* 
   key_on(key);                                 
   */                                           /*执行程序*/
  }
  /*
  else if(P4==0x04&&P5^0==1&&P5^1==0&&P5^2==0)  
  {
   for(i=0;i<50;i++)                           
    for(j=0;j<20;j++);                            
   if(P4==0x04&&P5^0==1&&P5^1==0&&P5^2==0)   
    key=0x..;                              
  }
  */                                            /*预留键*/

  else if(P4==0x04&&P5^0==0&&P5^1==1&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x04&&P5^0==0&&P5^1==1&&P5^2==0)      /*再次判断*/
    key=0x14;                                   /*上方向键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  }
  /*
  else if(P4==0x04&&P5^0==0&&P5^1==0&&P5^2==1)  
  {
   for(i=0;i<50;i++)                            
    for(j=0;j<20;j++);                            
   if(P4==0x04&&P5^0==0&&P5^1==0&&P5^2==1)  
    key=0x..;                             
  }
  */                                            /*预留键*/

    
 P4=0x08;              
 P5^0=0;
 P5^1=0;
 P5^2=0;                                        /*第四排键判断赋值*/

 if(P4==0x28&&P5^0==0&&P5^1==0&&P5^2==0)        /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x28&&P5^0==0&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x0B;                                   /*清除键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 
  else if(P4==0x48&&P5^0==0&&P5^1==0&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x48&&P5^0==0&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x00;                                   /*0键*/
   /* 
   key_on(key);                                 
   */                                           /*执行程序*/
  } 
  else if(P4==0x88&&P5^0==0&&P5^1==0&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x88&&P5^0==0&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x0A;                                   /*确认键*/
    /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 
  else if(P4==0x08&&P5^0==1&&P5^1==0&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x08&&P5^0==1&&P5^1==0&&P5^2==0)      /*再次判断*/
    key=0x12;                                   /*左方向键*/
    /*
   key_on(key);                                 
   */                                           /*执行程序*/
  }
  else if(P4==0x08&&P5^0==0&&P5^1==1&&P5^2==0)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x08&&P5^0==0&&P5^1==1&&P5^2==0)      /*再次判断*/
    key=0x15;                                   /*下方向键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 
  else if(P4==0x08&&P5^0==0&&P5^1==0&&P5^2==1)  /*判断按键是否按下*/
  {
   for(i=0;i<50;i++)                            /*消抖动*/
    for(j=0;j<20;j++);                            
   if(P4==0x08&&P5^0==0&&P5^1==0&&P5^2==1)      /*再次判断*/
    key=0x13;                                   /*右方向键*/
   /*
   key_on(key);                                 
   */                                           /*执行程序*/
  } 
}





⌨️ 快捷键说明

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