热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

51单片机—矩阵键盘代码

#include#include..delaydelay.h#includematrix.h*按键扫描函

#include #include "../delay/delay.h"
#include "matrix.h"
/*=====================================================
按键扫描函数,返回扫描键值
======================================================*/
unsigned char key_scan(void)
{
unsigned char keyvalue; KEYPORT = 0xf0; //高四位置高,低四位拉低
if(0xf0 != keyvalue)
{
delay_ms(10); //去抖
if(0xf0 != keyvalue) //有按键按下
{
KEYPORT = 0xfe; //检测第一行
if(0xfe != KEYPORT)
{
keyvalue = KEYPORT;
keyvalue &= 0xf0; //过滤干扰
keyvalue += 0x0e; //过滤干扰
while(0xfe != KEYPORT);
delay_ms(10); //去抖
while(0xfe != KEYPORT);
return keyvalue;
}
KEYPORT = 0xfd; //检测第二行
if(0xfd != KEYPORT)
{
keyvalue = KEYPORT;
keyvalue &= 0xf0; //过滤干扰
keyvalue += 0x0d; //过滤干扰
while(0xfd != KEYPORT);
delay_ms(10); //去抖
while(0xfd != KEYPORT);
return keyvalue;
}

KEYPORT = 0xfb; //检测第三行
if(0xfb != KEYPORT)
{
keyvalue = KEYPORT;
keyvalue &= 0xf0; //过滤干扰
keyvalue += 0x0b; //过滤干扰
while(0xfb != KEYPORT);
delay_ms(10); //去抖
while(0xfb != KEYPORT);
return keyvalue;
}
KEYPORT = 0xf7; //检测第四行
if(0xf7 != KEYPORT)
{
keyvalue = KEYPORT;
keyvalue &= 0xf0; //过滤干扰
keyvalue += 0x07; //过滤干扰
while(0xf7 != KEYPORT);
delay_ms(10); //去抖
while(0xf7 != KEYPORT);
return keyvalue;
}
}
}
return 0xff;
}
/*=====================================================
按键值处理函数,返回扫描键值
======================================================*/
unsigned char key_pro(void)
{
unsigned char keynum;
keynum = key_scan();

/*按下相应的键显示相对应的码值*/
switch(keynum)
{
case 0x7e:
{
return 0; //0
break;
}
case 0xbe:
{
return 1; //1
break;
}
case 0xde:
{
return 2; //2
break;
}
case 0xee:
{
return 3; //3
break;
}
case 0x7d:
{
return 4; //4
break;
}
case 0xbd:
{
return 5; //5
break;
}
case 0xdd:
{
return 6; //6
break;
}
case 0xed:
{
return 7; //7
break;
}
case 0x7b:
{
return 8; //8
break;
}
case 0xbb:
{
return 9; //9
break;
}
case 0xdb:
{
return 10; //10
break;
}
case 0xeb:
{
return 11; //11
break;
}
case 0x77:
{
return 12; //12
break;
}
case 0xb7:
{
return 13; //13
break;
}

case 0xd7:
{
return 14; //14
break;
}

case 0xe7:
{
return 15; //15
break;
}
default:
{
return 0xff;
break;
}
}
}

推荐阅读
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 本文详细探讨了KMP算法中next数组的构建及其应用,重点分析了未改良和改良后的next数组在字符串匹配中的作用。通过具体实例和代码实现,帮助读者更好地理解KMP算法的核心原理。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • This document outlines the recommended naming conventions for HTML attributes in Fast Components, focusing on readability and consistency with existing standards. ... [详细]
  • Splay Tree 区间操作优化
    本文详细介绍了使用Splay Tree进行区间操作的实现方法,包括插入、删除、修改、翻转和求和等操作。通过这些操作,可以高效地处理动态序列问题,并且代码实现具有一定的挑战性,有助于编程能力的提升。 ... [详细]
  • 本文详细介绍了如何在BackTrack 5中配置和启动SSH服务,确保其正常运行,并通过Windows系统成功连接。涵盖了必要的密钥生成步骤及常见问题解决方法。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文探讨如何设计一个安全的加密和验证算法,确保生成的密码具有高随机性和低重复率,并提供相应的验证机制。 ... [详细]
author-avatar
人对方啥地位
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有