当前位置: 首页 > news >正文

线反转法实现矩形键盘按键识别

由于行、列线为多键共用,各按键彼此将相互发 生影响,必须将行、列线信号配合起来并作适当的处 理,才能确定闭合键的位置。

线反转法

第1步:列线输出为全低电平,则行线中电平由高变低 的所在行为按键所在行。

第2步:行线输出为全低电平,则列线中电平由高变低 所在列为按键所在列。

综合上述两步,可确定闭合按键所在行和列。

程序代码

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

/*共阴极数码管0至F的段码*/
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
                      0x7d,0x07,0x7f,0x6f,0x77,0x7c,
                      0x39,0x5e,0x79,0x71};

/*0至F的键值*/
uchar code key_value[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,
                          0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,
                          0xe7,0xd7,0xb7,0x77};

void delay();

void delay()
{
    uint i;
    for(i=0;i<1000;i++);
}

uchar key_dis() 
{
  uchar key_buf;
  uchar key_state;
  P2=0xf0;
  key_buf=P2;
  if(key_buf!=0xf0)
    {
        delay();
        if(P2==key_buf)
        {
            key_state=key_buf&0xf0;
            P2=0x0f;
            key_buf=P2;

            key_buf&=0x0f;
            key_state=key_state|key_buf;
            return key_state;
        }
        else 
            return 0;
     }
    else 
        return 0;
}

    
void main(void)
{
  uchar j,key_num;  
    P0=0x00;                      // 开机黑屏
    while(1)
        {
          key_num=key_dis();
            if(key_num!=0)
            {
              for(j=0;j<16;j++)
              {
                if(key_num==key_value[j])      //获得按键的键号
                   break;
              }
            P0=table[j];    
            }
        }
    }
        

原理图

仿真结果

相关文章:

  • QT播放视频保持视频宽高比消除黑边
  • 基于javaweb的SSM+Maven幼儿园管理系统设计和实现(源码+文档+部署讲解)
  • brew search报错,xcrun:error:invalid active developer path CommandLineTools
  • 通俗易懂的分类算法之决策树详解
  • 使用Simulink中的IsUpdated获取Rport的更新状态
  • 当我删除word文件时无法删除,提示:操作无法完成,因为已在Microsoft Word中打开
  • 一、舵机模块的分析与使用
  • flowable使用
  • 问题修复-后端返给前端的时间展示错误
  • 7.1 - 定时器之中断控制LED实验
  • SpringBoot原理-02.自动配置-概述
  • 微服务即时通信系统---(七)文件管理子服务
  • 飞书考勤Excel导入到自己系统
  • 网络原理--TCP/IP(2)
  • 神经网络|(十一)|神经元和神经网络。
  • 深入了解 K-Means 聚类算法:原理与应用
  • C++22——哈希(上)
  • GD32F303 系统时钟
  • 例子 DQN + CartPole: 深入思考一下,强化学习确实是一场智能冒险之旅!
  • 《今日AI-人工智能-编程日报》
  • 厦门专业网站制作/网络营销的八大职能
  • 网站安全检测百度/百度站内搜索提升关键词排名
  • 门户网站建设评标办法/seo排名优化软件有用
  • 高校学风建设网站/网络公司推广公司
  • 网站做有偿广告需要什么有序/百度网站官网入口
  • 专业做网站费用/郑州网络营销推广公司