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

📄 key.c

📁 MSP430单片机的液晶与键盘的应用
💻 C
字号:
#include "SysDef.h"
#include "key.h"
#include "glcd.h"

unsigned char   Keybuff;            //

void delay(int v)
    {
        while(v!=0)v--;
    }




void InitKey(void)
{
  KeyDIR=0Xf0;
  KeyOUT=0Xf0;
  Keybuff=0xff;
  
}  


 
unsigned char key(void)
  {
    unsigned char x=0xff;
    KeyDIR=0Xf0;
    KeyOUT=0X10;                 //扫描第一行
    if((KeyIN&0X0f)==0X01)         x=1;             
    else  if((KeyIN&0X0f)==0X02)   x=3;                     
    else   if((KeyIN&0X0f)==0x04)  x=5;  
    else   if((KeyIN&0X0f)==0x08)  x=11;
    else 
    {
       KeyOUT=0X20;            //扫描第二行
       if((KeyIN&0X0f)==0X01)          x=2;             
       else  if((KeyIN&0X0f)==0X02)    x=4;                                
       else  if((KeyIN&0X0f)==0x04)    x=10; 
        else   if((KeyIN&0X0f)==0x08)  x=12;
       else
       {
             KeyOUT=0X40;           //扫描第三行
             if((KeyIN&0X0f)==0X01)        x=6;            
             else  if((KeyIN&0X0f)==0X02)  x=8;                                
             else   if((KeyIN&0X0f)==0x04) x=0; 
              else   if((KeyIN&0X0f)==0x08)  x=14;
             else 
              {
                KeyOUT=0x80;           //扫描第四行
                if((KeyIN&0X0f)==0X01  )       x=7;         
                else  if((KeyIN&0X0f)==0X02)   x=9;                     
                else if((KeyIN&0X0f)==0x04)    x=13;
                 else   if((KeyIN&0X0f)==0x08)  x=15;
              }
         }      
     }    
  return(x);
  }
  
  
unsigned char keyjudge(void) 
{
    unsigned char x;
    KeyDIR=0xff;
    KeyOUT=0x0;
    KeyDIR=0xf0;
    KeyOUT=0xf0;        //键盘硬件:P10--P13为行线,最上面一根为P10
    x=(KeyIN&0X0f);      // P14--P16为列线,最左边一根为P14,列线下拉
    return(x);  
}  


void GetKey()
{
  unsigned char ReleaseKey;
          if(keyjudge()!=0X00)
           {
           delay(1000)  ;   //消抖动
               if(keyjudge()!=0X0)
                 {
                    Keybuff=key();    //按键见键值保存到队列
                    GLCD_LcdInit();
                    GLCD_Locate (0, 2);
                    GLCD_DisplayINT(Keybuff);                                                                   
                  }
            }
         //ReleaseKey= keyjudge(); 
        //while(ReleaseKey!=0X00)    ReleaseKey= keyjudge();    //等待键释放           
         KeyOUT=0X0f;         
}         
   
void TaskKey(void)
{
    GetKey();                                            //get key number  						
   /* if(( Keybuff>=0) && ( Keybuff<10))   DealNum();       
    else if( Keybuff==11)      Rest();						
    else if(Keybuff==12 )      DealDel();               
    else if( Keybuff==13)      Dealpschange();          
    else if( Keybuff==14)      DealENl();		                             
    else if( Keybuff==15)      Doorbell();   */         
   
    
}


  
  




⌨️ 快捷键说明

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