仿真电路图如下:

程序代码如下:

#include <reg52.h>
#include <intrins.h>  
#include <math.h>   
#include <stdio.h>

#define uchar unsigned char
#define uint unsigned int

uchar temp;
/*------------------------------------------
                按键扫描
--------------------------------------------*/
void KeyScan(void)
{
    P1=0xfe;
   temp=P1;
   temp=temp&0xf0;
   if(temp!=0xf0)
   {
        //delay(1);
      if(temp!=0xf0)
      {    
            temp=P1;
            switch(temp)
            {
                case 0xee:
                    P2=~0x01;
                    break;
                case 0xde:
                    P2=~0x02;
                    break;
                case 0xbe:
                    P2=~0x03;
                    break;
                case 0x7e:
                    P2=~0x04;            
                    break;
         }
            
         while(temp!=0xf0) 
            {
                temp=P1;
                temp=temp&0xf0;                
         }        
        }
    }
    P1=0xfd;
    temp=P1;
    temp=temp&0xf0;
    if(temp!=0xf0)
    {
        //delay(1);
        if(temp!=0xf0)
      {
            temp=P1;
            switch(temp)
            {
                case 0xed: 
                    P2=~0x05;
                break;
                case 0xdd:
                    P2=~0x06;
                    break;
                case 0xbd:    
                    P2=~0x07;
                    break;
                case 0x7d:    
                    P2=~0x08;
                    break;
         }
            
         while(temp!=0xf0)
         {
           temp=P1;
           temp=temp&0xf0;
         }
      }
    }
    P1=0xfb;
    temp=P1;
    temp=temp&0xf0;
    if(temp!=0xf0)
    {
        //delay(1);
      if(temp!=0xf0)
      {
            temp=P1;
            switch(temp)
            {
                case 0xeb:
                    P2=~0x09;
                break;
                case 0xdb:
                    P2=~0x0a;
                break;
                case 0xbb:
                    P2=~0x0b;
                break;
                case 0x7b:
                    P2=~0x0c;            
                break;
         }
        
            while(temp!=0xf0)
         {
                temp=P1;
                temp=temp&0xf0;
         }
      }
   }
    P1=0xf7;
   temp=P1;
   temp=temp&0xf0;
   if(temp!=0xf0)
   {
      //delay(1);
      if(temp!=0xf0)
      {
            temp=P1;
            switch(temp)
            {
                case 0xe7:    
                    P2=~0x0d;
                break;
                case 0xd7:    
                    P2=~0x0e;
                break;
                case 0xb7:    
                P2=~0x0f;
                break;
                case 0x77:
                    P2=~0x00;
                break;
         }
            
            while(temp!=0xf0)
         {
                temp=P1;
                temp=temp&0xf0;
         }
      }
    }
}

/*-------------------------------------
                主函数
---------------------------------------*/    
void main(void)
{
    while(1)
    {
        KeyScan(); //按键扫描
    }
}

4*4矩阵键盘及逐行扫描法相关推荐

  1. 《蓝桥杯CT107D单片机竞赛板》:矩阵键盘模块

    矩阵键盘模块 实验简介 实验原理图 实验原理 实验程序 显示对应的按键值 2 * 2变式矩阵按键实现独立按键 2 * 2变式矩阵键盘控制蜂鸣器 2 * 2变式矩阵按键控制数码管做加减操作 另一种易理解 ...

  2. 【51单片机】矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤

    [51单片机]矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤 一.环境 二.硬件部分 1. Proteus新建工程 2. 添加元件 3.连接线路 4.硬件效果 三.软件部分 1 ...

  3. 矩阵键盘逐行扫描C语言,(原创)51单片机C语言程序设计--速学教程实例(入门篇)之矩阵键盘(逐行扫描法).pdf...

    (原创)51单片机C语言程序设计--速学教程实例(入门篇)之矩阵键盘(逐行扫描法).pdf /***************************************************** ...

  4. 4*4矩阵键盘扫描c语言,用扫描法读出4×4矩阵键盘,在数码管显示按键值

    原标题:用扫描法读出4×4矩阵键盘,在数码管显示按键值 //电路说明如下. //:使用51系列兼容的即可: //4×4:接在P1口: //两位数码显示器: P0口输出七段码,P2口输出位选码. //= ...

  5. 4x3矩阵键盘扫描法c语言,4X4矩阵键盘扫描程序

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

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

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

  7. 蓝桥杯CT107D:关于矩阵键盘工作原理及其应用

    目录 简介 原理图及工作原理 程序实现 简介 矩阵键盘是CT107D上左下角由16个按键组成的.排列顺序类似矩阵的按键组. 原理图及工作原理 工作原理: 在矩阵键盘中,在每条水平线和垂直线交叉处不直接 ...

  8. 单片机——C51实验含Proteus仿真(独立键盘,矩阵键盘)

    文章仅为本人学习记录,如有引用部分会另加说明引用出处 矩阵键盘检测原理:(独立键盘的原理在代码注释中很详细) 线反法的原理为:首先使P1口的高四位输出高电平,P1口低四位输出低电平,这时键盘的行线被拉 ...

  9. 两种方式实现矩阵键盘扫描(含程序)

    1 矩阵键盘的结构 下图是一个4*3的矩阵键盘示意图,三条列线连接P1.4-P1.6引脚.四条行线连接P1.0-P1.3引脚 2 逐行逐列扫描法 首先使三条列线所连接的I/O引脚P14-P16输出低电 ...

最新文章

  1. R语言使用forestplot包绘制森林图:编码创建森林图仿真数据、汇总线修改、元素位置调整、垂直线、字体、风格、置信区间、线型、图例、刻度、标签等
  2. linux查看节点使用进程后退出,Linux通过端口号查看使用进程-结束进程
  3. 折叠式菜单 html,JQuery实现折叠式菜单的详细代码
  4. 关于C++中二维vector使用
  5. 拯救万千学子于水深火热之中!Facebook开源无梯度优化工具
  6. PHP程序员必须收藏的资源大全
  7. 函数型计算机有储存功能吗,无存储功能的计算器指的是什么
  8. Soul网关源码阅读06-使用zookeeper同步数据(01)
  9. 计算机中现代操作系统两个基本特征是什么,现代操作系统的两个基本特征是资源共享和...
  10. 软件开发、设计、架构的五大原则
  11. 几种重要的排序算法——交换排序
  12. 半导体器件物理【20】PN结 —— 费米能级与电流关系、接触电势差
  13. 垂直整合正在塑造 Power SiC 生态系统
  14. python-语音识别+语音合成
  15. 单点登录CAS-03:cas配置02-开启/status
  16. CreateFileMapping MapViewOfFile UnmapViewOfFile函数用法及示例
  17. swing版电力系统故障录波comtrade文件离线分析软件
  18. npm run dev时报错code ELIFECYCLE npm ERR! errno 1 npm ERR!
  19. python可以写什么视觉特效_星球大战视觉特效背后的功臣—Python语言
  20. MySql函数, 实现Oracle中的to_data和to_char函数

热门文章

  1. WGCNA包安装问题汇总
  2. Python数据分析之武林秘籍
  3. 国内TeamViewer正版授权的代理商有哪些?如何查询?
  4. 作为技术团队TL,如何运用OKR提高团队产出
  5. SAP中采购订单交货己完成相关逻辑和控制原理分析
  6. 如何编辑 删除 修改 pdf文件中的文字
  7. python编程新手常犯的错误_Python程序员常犯的10个错误
  8. 揭秘《超能陆战队》诞生记
  9. c语言上机实验作业答案,C语言上机实验-答案
  10. i.MX6ULL驱动开发 | 02-字符设备驱动框架