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和 ...
最新文章
- 《深入浅出Nodejs》—— 读后总结
- Delphi 与 DirectX 之 DelphiX(55): TDIB.DoMosaic();
- Mini 容器学习笔记6——组件的获取(应用)
- ./NISwGSP: error while loading shared libraries: libopencv_stitching.so.3.0: cannot open shared obje
- 页面url带参数_微信小程序云开发教程微信小程序的JS高级页面间数据传递
- 百度文库无需VIP和下载券直接下载
- java开发职业规划
- 二维空间:点到直线距离的计算
- matlab 字符查找函数,matlab字符函数
- 拯救懒癌患者,京东订单自动写评价脚本!
- PD,LGD,EAD
- 李兴平中国最牛的个人站长
- t.cn新浪短链接 生成
- vue3中的watch和watchEffect
- 物品冷启动问题解决办法
- 梅森旋转(Mersenne twister)及其他随机数生成算法
- 构造拉丁方阵和正交拉丁方阵组
- 操作系统高级课程-1
- python3爬取网易云歌单数据清洗_实例 | 使用网易云音乐数据演示数据整合与数据清洗...
- 全国职业技能计算机考试教案,内江职业技术学院2017年中职类—信息技术二类技能测试大纲...
热门文章
- hive建表报错JsonSerDe
- Windows核心编程_代码段共享_LocalAlloc/GlobalAlloc区别
- 3.字符串(string)
- FireEye:K3chang行动***欧洲外交部门
- 细说PHP:人人都能玩转PHP和MySQL Web开发
- 【源码阅读】Java集合之一 - ArrayList源码深度解读
- 《设计模式之禅》--设计模式大PK
- Uva 11054 - Wine trading in Gergovia(模拟)
- SpriteBuilderamp;Cocos2D使用CCEffect特效实现天黑天亮过度效果
- HTML5对表单的约束验证