一:不排除第四位异常处理

uchar JuzhenkeyScan()
{
// P3=0xfe;
// temp=P3;
// while(temp!=0xfe)
// {
// temp=P3;
// switch(temp)
// {
// case 0xee:num=10;
// break;
// case 0xde:num=3;
// break;
// case 0xbe:num=2;
// break;
// case 0x7e:num=1;
// break;
// }
// delayms(10);
// } P3=0xfd;//1111 1110
temp=P3;
while(temp!=0xfd)
{
temp=P3;
switch(temp)
{
case 0xed:num=;
break;
case 0xdd:num=;
break;
case 0xbd:num=;
break;
case 0x7d:num=;
break;
}
delayms();
} P3=0xfb;
temp=P3;
while(temp!=0xfb)
{
temp=P3;
switch(temp)
{
case 0xeb:num=;
break;
case 0xdb:num=;
break;
case 0xbb:num=;
break;
case 0x7b:num=;
break;
}
delayms();
} P3=0xf7;
temp=P3;
while(temp!=0xf7)
{
temp=P3;
switch(temp)
{
case 0xe7:num=;
break;
case 0xd7:num=;
break;
case 0xb7:num=;
break;
case 0x77:num=;
break;
}
delayms();
}
return num;
}

二:排除第四位异常处理

 uchar keyscan()
{
P3=0xfe;
tempkey=P3;
tempkey=tempkey&0xf0;
while(tempkey!=0xf0)
{
delayms();
tempkey=P3;
tempkey=tempkey&0xf0;
while(tempkey!=0xf0)
{
tempkey=P3;
switch(tempkey)
{
case 0xee:num=; //A
break;
case 0xde:num=;
break;
case 0xbe:num=;
break;
case 0x7e:num=;
break;
}
while(tempkey!=0xf0)
{
tempkey=P3;
tempkey=tempkey&0xf0;
} }
} P3=0xfd;
tempkey=P3;
tempkey=tempkey&0xf0;
while(tempkey!=0xf0)
{
delayms();
tempkey=P3;
tempkey=tempkey&0xf0;
while(tempkey!=0xf0)
{
tempkey=P3;
switch(tempkey)
{
case 0xed:num=;//B
break;
case 0xdd:num=;
break;
case 0xbd:num=;
break;
case 0x7d:num=;
break;
}
while(tempkey!=0xf0)
{
tempkey=P3;
tempkey=tempkey&0xf0;
} }
} P3=0xfb;
tempkey=P3;
tempkey=tempkey&0xf0;
while(tempkey!=0xf0)
{
delayms();
tempkey=P3;
tempkey=tempkey&0xf0;
while(tempkey!=0xf0)
{
tempkey=P3;
switch(tempkey)
{
case 0xeb:num=; //C
break;
case 0xdb:num=;
break;
case 0xbb:num=;
break;
case 0x7b:num=;
break;
}
while(tempkey!=0xf0)
{
tempkey=P3;
tempkey=tempkey&0xf0;
} }
} P3=0xf7;
tempkey=P3;
tempkey=tempkey&0xf0;
while(tempkey!=0xf0)
{
delayms();
tempkey=P3;
tempkey=tempkey&0xf0;
while(tempkey!=0xf0)
{
tempkey=P3;
switch(tempkey)
{
case 0xe7:num=;
break;
case 0xd7:num=;
break;
case 0xb7:num=;
break;
case 0x77:num=;
break;
}
while(tempkey!=0xf0)
{
tempkey=P3;
tempkey=tempkey&0xf0;
}
}
} }

4x4矩阵键盘 扫描程序的更多相关文章

  1. 4X4矩阵键盘扫描程序

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

  2. 4x4矩阵键盘扫描

    4x4矩阵键盘扫描 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架 ...

  3. Win10 IoT C#开发 6 - 4x4矩阵键盘扫描

    Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一章我 ...

  4. 「雕爷学编程」Arduino动手做(26)——4X4矩阵键盘模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  5. 基于FPGA的4x4矩阵键盘驱动调试

    好久不见,因为博主最近两个月有点事情,加上接着考试,考完试也有点事情要处理,最近才稍微闲了一些,这才赶紧记录分享一篇博文.FPGA驱动4x4矩阵键盘.这个其实原理是十分简单,但是由于博主做的时候遇到了 ...

  6. STM32 实现 4*4 矩阵键盘扫描(HAL库、标准库 都适用)

    本文实现的代码是基于STM32HAL库的基础上的,不过标准库也可以用,只是调用的库函数不同,逻辑跟配置是一样的,按我这里的逻辑来配置即可. 1.键盘原理图: 原理举例:先把 F0-F7 内部拉高,这样 ...

  7. stm32矩阵键盘扫描数据通过USB发送

                   Keyboard.c #include "keyboard.h"#include "my_usb.h"#include " ...

  8. MCU软件最佳实践——矩阵键盘驱动

    1.矩阵键盘vs独立按键 在mcu应用开发过程中,独立按键比较常见,但是在需要的按键数比较多时,使用矩阵键盘则可以减少io占用,提高系统资源利用率.例如,某mcu项目要求有16个按钮,如果采用独立按键 ...

  9. 【STM32学习笔记】STM32f407 使用4*4矩阵键盘

    作者:李剀 出处:https://www.cnblogs.com/kevin-nancy/ 欢迎转载,但也请保留上面这段声明.谢谢! 写在前面: 这是本人第一次开始写博客,可能写的不是很好,也请大家谅 ...

随机推荐

  1. php的yii框架开发总结8

    EMailer是一个简单的封装PHPMailer类.利用这个扩展可以实现发邮件的功能. 下载地址:http://www.yiiframework.com/extension/mailer/ 下载解压把 ...

  2. API:access_token

    access_token存在意义:   1.身份验证(一个channel_id一般有0个或1个有效的access_token) 2.限制用户访问服务器数据的有效期 3.限制用户访问权限 access_ ...

  3. 显示、更改ubuntu linux主机名(计算机名)

    在bash中输入hostname可以显示计算机名.Linux和windows都可以使用这条指令. 主机名保存在/etc/hostname文件中 需要进入Root权限才可以修改该文件. sudo ged ...

  4. IOS 设置ipone状态栏的样式

    /** 控制状态栏的样式 */ -(UIStatusBarStyle)preferredStatusBarStyle { //白色 return UIStatusBarStyleLightConten ...

  5. DFS+BFS(POJ3083)

    题目链接:http://poj.org/problem?id=3083 解题报告:这个题目,搜最短路,没有什么问题.优先走左边,走右边,有很多说法,思路大概都相同,都是记录当前朝向,根据数学公式(i+ ...

  6. Drupal 新建Modules

    最简单的模块包含了2个文件夹,它们放置于同一个文件夹下:包含模块信息的文件以.info为后缀名,而实现功能的文件则以.module结尾. 可以给模块一个友好的(human-readable)名字,但是 ...

  7. override与重载的区别

    override与重载的区别override 与重载的区别,重载是方法的名称相同.参数或参数类型不同,进行多次重载以适应不同的需要 Override 是进行基类中函数的重写.

  8. CSS-DOM

    在所有的产品设计中,选择最适用的工具去解决问题是最基本的原则. ①使用(X)HTML去搭建文档的结构. ②使用CSS 去设置文档的呈现效果. ③使用DOM脚本去实现文档的行为. 文档中的每个元素都是一 ...

  9. node-inspector调试工具使用方法

    开发node.js程序使用的是javascript语言,其中最麻烦的还是调试,这里介绍一下node-inspector使用方法.具体资料可以看参考资料中的GITHUB文档. 工具/原料   node. ...

  10. C编程经验总结5(剧终)

    Prolog是AI编程语言 Git(分布式)  svn(集中式)   commit(委托,犯罪) patch补丁)  merge(融入) repository(仓库) Ctrl+s(保存)     r ...