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

📄 main.c

📁 基于ARM的温度显示程序
💻 C
字号:
/************************************************************************************
* 文 件 名:Key_4_4.c
* 功    能:4*4行列式键盘驱动。
* 作    者:POWER  
* 日    期:2006年5月23号
* 斯凯科技主页:www.armsky.net
* 斯凯科技论坛:www.armsky.net/bbs       
*************************************************************************************/
#include "config.h"
/* 定义键盘连接引脚,用户可根据自己的连接修改 */
#define row1 ((uint32)1<<4)    //P1.16
#define row2 ((uint32)1<<5)    //P1.17
#define row3 ((uint32)1<<6)    //P1.18
#define row4 ((uint32)1<<7)    //P1.19

#define col1 ((uint32)1<<0)    //P1.20
#define col2 ((uint32)1<<1)    //P3.23
#define col3 ((uint32)1<<2)    //P1.24
#define col4 ((uint32)1<<3)    //P1.25

//#define SelectPinToGPIO 0x0d814914  //将连接键盘的引脚选择为GPIO,用户可根据自己的连接修改

/************************************************************************************
* 函数名称:Delay_N_76us()
* 功    能:软件延时
* 入口参数:dly  	延时参数,值越大,延时越长
* 出口参数:无
* 注    意:该函数根据用户具体的硬件及系统配置,延时时间并不一定是76us的整数倍
*************************************************************************************/
extern void Delay_N_76us(uint32 dly);

/************************************************************************************
* 函数名称:KeyInit()
* 功    能:键盘初始化
* 入口参数:无
* 出口参数:无
* 注    意:用户可根据自己的键盘连接引脚修改该函数
*************************************************************************************/
extern void KeyInit(void);

/************************************************************************************
* 函数名称:KeyDown()
* 功    能:检测键盘是否按下
* 入口参数:无
* 出口参数:返回1表示键盘按下,返回0表示键盘未按下
* 注    意:该函数有消抖功能
*************************************************************************************/
extern uint8 KeyDown(void);

/************************************************************************************
* 函数名称:KeyUp()
* 功    能:检测键盘是否弹起
* 入口参数:无
* 出口参数:返回1表示键盘弹起,返回0表示键盘未弹起
* 注    意:该函数有消抖功能
*************************************************************************************/
extern uint8 KeyUp(void);

/************************************************************************************
* 函数名称:KeyNum()
* 功    能:检测用户按下的键盘所对应的键盘号
* 入口参数:无
* 出口参数:返回0表示没有键盘被按动,返回1~16对应被按动的键盘
* 说    明:用户可根据自己的键盘编号修改该函数。
*************************************************************************************/
extern uint8 KeyNum(void);
/************************************************************************************
* 函数名称:Delay_N_76us()
* 功    能:软件延时
* 入口参数:dly  	延时参数,值越大,延时越长
* 出口参数:无
* 注    意:该函数根据用户具体的硬件及系统配置,延时时间并不一定是76us的整数倍
*************************************************************************************/
void Delay_N_76us(uint32 dly)
{
  uint8 i;
  
  for(;dly>0;dly--)
     for(i=0;i<10;i++);
}

/************************************************************************************
* 函数名称:KeyInit()
* 功    能:键盘初始化
* 入口参数:无
* 出口参数:无
* 注    意:用户可根据自己的键盘连接引脚修改该函数
*************************************************************************************/
void KeyInit(void)
{
  PINSEL0=0xFF;        // 选择4*4行列式键盘所需引脚为GPIO
  IO0DIR|=(row1|row2|row3|row4);  // P1.16~P1.19为输出
  IO0DIR&=~(col1|col2|col3|col4);      // P1.20,P1.24,P1.25为输入
 
}

/************************************************************************************
* 函数名称:KeyDown()
* 功    能:检测键盘是否按下
* 入口参数:无
* 出口参数:返回1表示键盘按下,返回0表示键盘未按下
* 注    意:该函数有消抖功能
*************************************************************************************/
uint8 KeyDown(void)
{
  IO0CLR|=row1;
  IO0CLR|=row2;
  IO0CLR|=row3;
  IO0CLR|=row4;
  if (((IO0PIN & col1) ==0 ) || ((IO0PIN & col2)==0) || ((IO0PIN & col3)==0) || ((IO0PIN & col4)==0))
     {
       Delay_N_76us(1000);
       if (((IO0PIN & col1) ==0 ) || ((IO0PIN & col2)==0) || ((IO0PIN & col3)==0) || ((IO0PIN & col4)==0))
          return 1;
       else
          return 0;       
     } 
  else 
      return 0;     
}

/************************************************************************************
* 函数名称:KeyUp()
* 功    能:
* 入口参数:检测键盘是否弹起

⌨️ 快捷键说明

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