arm7 键盘扫描程序
/****************************************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 键盘扫描程序相关推荐
- c语言键盘驱动程序,c语言键盘扫描程序
描述 c语言键盘扫描程序 4*4键盘扫描C语言程序 /* 4x4矩阵键盘的扫描程序 测试通过*/ #includesbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2= ...
- 基于FPGA的键盘扫描程序的设计
在现代电子「业的控制电路中,键盘扫描和显示电路时系统的调试和设置有着重要 的作用.随着EDA技术的发展,基于FPGA的扫描键盘因其结构简单,能有效防止机 械键盘按键抖动带来的数据错误等优点在许多电子设 ...
- 一个51单片机的键盘扫描程序,算法简单有效
一个51单片机的键盘扫描程序,算法简单有效 发一个51单片机的键盘扫描程序,算法简单有效 再给大家分享一个不错按键程序(来 ...
- 4x3矩阵键盘扫描法c语言,4X4矩阵键盘扫描程序
4X4矩阵键盘扫描程序 4X4矩阵键盘扫描: 1. 4根行线的GIO均设为Output,根列线的GIO均设为Input: 2. 4根行线的GIO分别置为0111.1011.1101.1110,读逐一读 ...
- 4*4按键扫描程序c语言,【资料】单片机4*4矩阵键盘扫描程序(c语言+汇编语言2个版本)...
;4X4矩阵键盘程序.主要原理为扫描键盘矩阵时,每次只有一行电平拉低.在逐次扫描拉低的这些行的同时,去读那些列的电平. ;被拉低的行上,按下的键对应的列的电平为0 ,其它为1. 用左移位的指令,在进位 ...
- 单片机矩阵式键盘扫描程序
单片机矩阵键盘判断某个按键按下 这是我第一次发表文章,关于51单片机矩阵式键盘逐行逐列扫描是否有按键按下,以及把键号显示用七段数码管显示出来的程序,分享如下. 矩阵键盘 51单片机 数码管显示 程序代 ...
- 4x4矩阵键盘扫描c语言程序,单片机4*4矩阵键盘扫描程序(c语言+汇编语言2个版本)...
;4X4矩阵键盘程序.主要原理为扫描键盘矩阵时,每次只有一行电平拉低.在逐次扫描拉低的这些行的同时,去读那些列的电平. ;被拉低的行上,按下的键对应的列的电平为0 ,其它为1. 用左移位的指令,在进位 ...
- 单片机4x4矩阵键盘c语言,求一个单片机4X4矩阵键盘扫描程序,C语言的。
满意答案 lfm630228 2013.05.08 采纳率:50% 等级:12 已帮助:8260人 uchar code KeyCodeTable[]= { 0x11,0x12,0x14,0x1 ...
- c语言主程序子程序流程图,c语言超经典矩阵式键盘的接法,流程图和扫描程序
标签:单片机(2591)程序(73)C语言(456) 列线输入端P1.0~P1.3通过电阻接正电源,行线P1.4~P1.7所接的单片机的I/O口作为输出端.将输入端置为高电平,输出端置为低电平.这样, ...
- 4x4矩阵键盘工作原理及扫描程序_4X4矩形键盘
介绍 什么是矩阵键盘 矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组,由于电路设计时需要更多的外部输入,单独的控制一个按键需要浪费很多的IO资源,所以就有了矩阵键盘,常用的矩阵键盘有4X4和 ...
最新文章
- 对第三方 SDK 依赖冲突,重新打个包试试
- Linux文字分段裁剪命令cut(转)
- 在线即时通讯工具的网页即时聊天的html代码
- 团队项目开发编码规范之一:概述
- php 获取301 302的真实地址
- POJ2186-Popular Cows(流行的奶牛)【tarjan,强连通分量,图论】
- js--window关闭事件
- java 执行oracle 存储过程_oracle--在java中调用存储过程和存储函数
- java script 调用c_用vs2008调试Javacscript
- Understanding Linux CPU Load - when should you be worried?
- CodeForces - 808B Average Sleep Time
- php中面向对象静态调用,php面向对象中static静态属性和静态方法的调用_PHP
- ajax爬取微博,自动滚屏抓取新浪微博
- gpgga格式读取MATLAB,GPGGA格式解析
- Windows系统常用网络命令详解及命令示例(全)
- Qt 利用海康摄像头的ISAPI协议进行抓图等操作
- 用isprime判断是否为素数(函数法)
- N-Tiers设计系列(一):传统Asp运作方式
- 史上最通俗易懂的理解云计算
- 文件删除终结者 v1.2 免费
热门文章
- hdfs合并小文件测试
- java.io.NotSerializableException: org.apache.kafka.clients.consumer.ConsumerRecord
- Spark 理论简答
- java Iterator源码
- HTTP 传输内容的压缩
- 算法32---图片平滑器
- [转] 为什么用原型,为什么用闭包
- Visual Studio 要求导入 pfx 密钥以及导入后依然要求导入的解决办法
- Trafodion的介绍
- bzoj4869: [Shoi2017]相逢是问候(欧拉函数+线段树)