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

📄 keypad.c

📁 一个arm7实例
💻 C
字号:
/*******************************Copyright (c)**********************************
***************************************By Z.Q.Yang****************************/

/******************************************************************************
*文件名:Keypad.c
*功能:键盘驱动c文件
*头文件:"config.h","keypad.h"
*作者:Z.Q.Yang
*******************************************************************************/

#include"config.h"
#include"keypad.h"


/******************************************************************************
*函数名:delay
*功能:短延时函数
*入口参数:z:延时长短控制
*出口参数:无
*作者:Z.Q.Yang
******************************************************************************/
void delay(uint8 z)
{
    uint16 i;
     for(;z>0;z--)
    for(i=0;i<10000;i++);
    
}

/******************************************************************************
*函数名:KeyPadInit
*作用:键盘初始化函数
*入口参数:无
*出口参数:无
*作者:Z.Q.Yang
******************************************************************************/
void    KeyPadInit(void)
{
    PINSEL1&=0x0000ffff;                /*设置管脚连接*/
    IODIR&=~KEYPADX;                    /*设置IO口方向*/
    IODIR|=KEYPADY;
    IOCLR=KEYPADY|KEYPADX;
}


/******************************************************************************
*函数名:KeyPadScan
*作用:键盘扫描函数
*入口参数:无
*出口参数:键码
*作者:Z.Q.Yang
******************************************************************************/
uint8    KeyPadScan(void)
{

   uint32    scode;
   uint8    i;
   uint8 code;

   IOCLR=KEYPADY; 
   
   if((IOPIN&KEYPADX)!=KEYPADX)                     /*扫描键盘*/
   {
        delay(10);
        if((IOPIN&KEYPADX)!=KEYPADX)
        {
            IOSET=KEYPADY;
            scode=0x10000000;
            for(i=0;i<4;i++)
            {
            IOCLR=scode;
            if((IOPIN&KEYPADX)!=KEYPADX)
            {
                code=(scode|(IOPIN&KEYPADX))>>24;
               // for(;((IOPIN&KEYPADX)!=KEYPADX););
               delay(200);
                return  code; 
            }
            scode=(scode<<1);
            }
        }
    }
    return  0;
}

/******************************************************************************
*函数名:GetKey
*作用:获取键值函数
*入口参数:无
*出口参数:键值
*作者:Z.Q.Yang
******************************************************************************/
uint8 GetKey(void)
{
    uint8 code;
    code=KeyPadScan();              /*读取键值*/
    switch(code)
    {
        case 0x1e:return 1;break;
        case 0x1d:return 2;break;
        case 0x1b:return 3;break;
        case 0x17:return 'a';break;
        case 0x2e:return 4;break;
        case 0x2d:return 5;break;
        case 0x2b:return 6;break;
        case 0x27:return 'b';break;
        case 0x4e:return 7;break;
        case 0x4d:return 8;break;
        case 0x4b:return 9;break;
        case 0x47:return 'c';break;
        case 0x8e:return 'd';break;
        case 0x8d:return 0;break;
        case 0x8b:return 'e';break;
        case 0x87:return 'f';break;
        default:return 'h';
    }
    
}

⌨️ 快捷键说明

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