/****************************************Copyright (c)**************************************************
**                                 driver program for lpc2100
**
**--------------文件信息--------------------------------------------------------------------------------
** 文件名: key.c
** 创建人: 林傅荣
** 日  期: 2011.8.4
** 描  述: 按键相关函数的实现
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/#include "config.h"//Key_GPIO
#define     K1  8
#define     K2  9
#define     K3  10
#define     K4  11
#define     K5  12
#define     K7  13
#define     K6  14
#define     K8  15
int8u KeyScanLine(int8u column); //按键初始化
void KeyInit(int8u stat)
{if(0 == stat){IO0DIR = IO0DIR & (~((1 << K1) | (1 << K2) | (1 << K3) | (1 << K4) | (1 << K5) | (1 << K6) | (1 << K7) | (1 << K8)));}else{IO0DIR = IO0DIR & (~((1 << K5) | (1 << K6) | (1 << K7) | (1 << K8)));IO0DIR = IO0DIR | (1 << K1) | (1 << K2) | (1 << K3) | (1 << K4);}
}//按键扫描
int8u KeyScan(int8u stat)
{int32u KeyGPIO;int8u key = 0;if(0 == stat){KeyGPIO = ((1 << K1) | (1 << K2) | (1 << K3) | (1 << K4) | (1 << K5) | (1 << K6) | (1 << K7) | (1 << K8));if((KeyGPIO & IO0PIN) != KeyGPIO){OSTimeDly(50);if((KeyGPIO & IO0PIN) != KeyGPIO){if(0 == (IO0PIN & (1 << K1)))key = 1;else if(0 == (IO0PIN & (1 << K2)))key = 2;else if(0 == (IO0PIN & (1 << K3)))key = 3;else if(0 == (IO0PIN & (1 << K4)))key = 4;else if(0 == (IO0PIN & (1 << K5)))key = 5;else if(0 == (IO0PIN & (1 << K6)))key = 6;else if(0 == (IO0PIN & (1 << K7)))key = 7;else if(0 == (IO0PIN & (1 << K8)))key = 8;       while((KeyGPIO & IO0PIN) != KeyGPIO);}}}else{IO0CLR = (1 << K1);IO0SET = (1 << K2) | (1 << K3) | (1 << K4);key = KeyScanLine(1);if(key != 0)return key;IO0CLR = (1 << K2);IO0SET = (1 << K1) | (1 << K3) | (1 << K4);key = KeyScanLine(2);if(key != 0)return key;IO0CLR = (1 << K3);IO0SET = (1 << K1) | (1 << K2) | (1 << K4);key = KeyScanLine(3);if(key != 0)return key;IO0CLR = (1 << K4);IO0SET = (1 << K1) | (1 << K2) | (1 << K3);key = KeyScanLine(4);if(key != 0)return key;}return key;
}//扫描每行
int8u KeyScanLine(int8u column)
{int8u key = 0;if(0 == (IO0PIN & (1 << K5))){key = (column-1)*4 + 1;while(0 == (IO0PIN & (1 << K5)));}else if(0 == (IO0PIN & (1 << K6))){key = (column-1)*4 + 2;while(0 == (IO0PIN & (1 << K6)));}else if(0 == (IO0PIN & (1 << K7))){key = (column-1)*4 + 3;while(0 == (IO0PIN & (1 << K7)));}else if(0 == (IO0PIN & (1 << K8))){key = (column-1)*4 + 4;while(0 == (IO0PIN & (1 << K8)));}return key;
}/***************************************************************************************
**              End File
***************************************************************************************/

  

转载于:https://www.cnblogs.com/flonlen/archive/2011/08/17/arm7_KeyScan.html

arm7 键盘扫描程序相关推荐

  1. c语言键盘驱动程序,c语言键盘扫描程序

    描述 c语言键盘扫描程序 4*4键盘扫描C语言程序 /*  4x4矩阵键盘的扫描程序 测试通过*/ #includesbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2= ...

  2. 基于FPGA的键盘扫描程序的设计

    在现代电子「业的控制电路中,键盘扫描和显示电路时系统的调试和设置有着重要 的作用.随着EDA技术的发展,基于FPGA的扫描键盘因其结构简单,能有效防止机 械键盘按键抖动带来的数据错误等优点在许多电子设 ...

  3. 一个51单片机的键盘扫描程序,算法简单有效

    一个51单片机的键盘扫描程序,算法简单有效 发一个51单片机的键盘扫描程序,算法简单有效                                        再给大家分享一个不错按键程序(来 ...

  4. 4x3矩阵键盘扫描法c语言,4X4矩阵键盘扫描程序

    4X4矩阵键盘扫描程序 4X4矩阵键盘扫描: 1. 4根行线的GIO均设为Output,根列线的GIO均设为Input: 2. 4根行线的GIO分别置为0111.1011.1101.1110,读逐一读 ...

  5. 4*4按键扫描程序c语言,【资料】单片机4*4矩阵键盘扫描程序(c语言+汇编语言2个版本)...

    ;4X4矩阵键盘程序.主要原理为扫描键盘矩阵时,每次只有一行电平拉低.在逐次扫描拉低的这些行的同时,去读那些列的电平. ;被拉低的行上,按下的键对应的列的电平为0 ,其它为1. 用左移位的指令,在进位 ...

  6. 单片机矩阵式键盘扫描程序

    单片机矩阵键盘判断某个按键按下 这是我第一次发表文章,关于51单片机矩阵式键盘逐行逐列扫描是否有按键按下,以及把键号显示用七段数码管显示出来的程序,分享如下. 矩阵键盘 51单片机 数码管显示 程序代 ...

  7. 4x4矩阵键盘扫描c语言程序,单片机4*4矩阵键盘扫描程序(c语言+汇编语言2个版本)...

    ;4X4矩阵键盘程序.主要原理为扫描键盘矩阵时,每次只有一行电平拉低.在逐次扫描拉低的这些行的同时,去读那些列的电平. ;被拉低的行上,按下的键对应的列的电平为0 ,其它为1. 用左移位的指令,在进位 ...

  8. 单片机4x4矩阵键盘c语言,求一个单片机4X4矩阵键盘扫描程序,C语言的。

    满意答案 lfm630228 2013.05.08 采纳率:50%    等级:12 已帮助:8260人 uchar code KeyCodeTable[]= { 0x11,0x12,0x14,0x1 ...

  9. c语言主程序子程序流程图,c语言超经典矩阵式键盘的接法,流程图和扫描程序

    标签:单片机(2591)程序(73)C语言(456) 列线输入端P1.0~P1.3通过电阻接正电源,行线P1.4~P1.7所接的单片机的I/O口作为输出端.将输入端置为高电平,输出端置为低电平.这样, ...

  10. 4x4矩阵键盘工作原理及扫描程序_4X4矩形键盘

    介绍 什么是矩阵键盘 矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组,由于电路设计时需要更多的外部输入,单独的控制一个按键需要浪费很多的IO资源,所以就有了矩阵键盘,常用的矩阵键盘有4X4和 ...

最新文章

  1. 对第三方 SDK 依赖冲突,重新打个包试试
  2. Linux文字分段裁剪命令cut(转)
  3. 在线即时通讯工具的网页即时聊天的html代码
  4. 团队项目开发编码规范之一:概述
  5. php 获取301 302的真实地址
  6. POJ2186-Popular Cows(流行的奶牛)【tarjan,强连通分量,图论】
  7. js--window关闭事件
  8. java 执行oracle 存储过程_oracle--在java中调用存储过程和存储函数
  9. java script 调用c_用vs2008调试Javacscript
  10. Understanding Linux CPU Load - when should you be worried?
  11. CodeForces - 808B Average Sleep Time
  12. php中面向对象静态调用,php面向对象中static静态属性和静态方法的调用_PHP
  13. ajax爬取微博,自动滚屏抓取新浪微博
  14. gpgga格式读取MATLAB,GPGGA格式解析
  15. Windows系统常用网络命令详解及命令示例(全)
  16. Qt 利用海康摄像头的ISAPI协议进行抓图等操作
  17. 用isprime判断是否为素数(函数法)
  18. N-Tiers设计系列(一):传统Asp运作方式
  19. 史上最通俗易懂的理解云计算
  20. 文件删除终结者 v1.2 免费

热门文章

  1. hdfs合并小文件测试
  2. java.io.NotSerializableException: org.apache.kafka.clients.consumer.ConsumerRecord
  3. Spark 理论简答
  4. java Iterator源码
  5. HTTP 传输内容的压缩
  6. 算法32---图片平滑器
  7. [转] 为什么用原型,为什么用闭包
  8. Visual Studio 要求导入 pfx 密钥以及导入后依然要求导入的解决办法
  9. Trafodion的介绍
  10. bzoj4869: [Shoi2017]相逢是问候(欧拉函数+线段树)