矩阵键盘原理图如图

键盘原理图,通过跳线帽J5选择模式

J5的2,3相连的时候为独立键盘模式,1,2相连的时候为矩阵键盘模式

PS:上图为AIP15F2K61S2 为芯片,对于STC89C52 ,P42和P44变为P36和P37即可

键盘对应P3^0,P3^1,P3^2,P3^3,引脚,按键按下时,相应引脚会变为低电平。

按键状态检测及消除抖动代码如下:

#include "reg52.h"sbit S7 = P3^0;
sbit S6 = P3^1;
sbit S5 = P3^2;
sbit S4 = P3^3;sbit L1 = P0^0;
sbit L2 = P0^1;
sbit L3 = P0^2;
sbit L4 = P0^3;void delay(unsigned char t)
{while(t--);
}unsigned char pp = 0 ;
void key(unsigned char i)
{if (S7 == 0){delay(100);if(S7 == 0){if (pp == 0){L1 = 0;pp = 1;}   else if (pp == 1){L1 = 1;pp = 0;}while(S7 == 0);}}}

按键检测使用双if( )检测,使用delay(100)消抖,

使用while( )检测按键是否被松开

矩阵键盘通过挨个扫描来达到确认按键位置的目的

该代码可以使数码管显示对应矩阵键盘按键的位置,初始化为“00”,第一个按键可以使数码管上的数字-1,

#include "reg52.h"sbit R1 = P3^0;
sbit R2 = P3^1;
sbit R3 = P3^2;
sbit R4 = P3^3;sbit C1 = P4^4;
sbit C2 = P4^2;
sbit C3 = P3^5;
sbit C4 = P3^4;unsigned char pp;
unsigned char code io[10] =
{ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void HC573(unsigned char channel)
{switch(channel){case 4:P2 = (P2 & 0x1f) | 0x80;break;case 5:P2 = (P2 & 0x1f) | 0xa0;break;case 6:P2 = (P2 & 0x1f) | 0xc0;break;case 7:P2 = (P2 & 0x1f) | 0xe0;break;}
}void delay(unsigned int t)
{while(t--);
}void smg()
{HC573(6);P0 = 0x01;HC573(7);P0 = io[pp/10];delay(500);HC573(6);P0 = 0x01 << 1 ;HC573(7);P0 = io[pp%10];delay(500);
}void key()
{R1 = 0;R2 = R3 = R4 = 1;C1 = C2 = C3 = C4 = 1;if(C1 == 0){while(C1 == 0);pp = pp-1;}else if (C2 == 0){while(C2 == 0);pp = 2;}else if (C3 == 0){while(C3 == 0);pp = 3;}else if (C4 == 0){while(C4 == 0);pp = 4;}R2 = 0;R1 = R3 = R4 = 1;C1 = C2 = C3 = C4 = 1;if(C1 == 0){while(C1 == 0);pp = 5;}else if (C2 == 0){while(C2 == 0);pp = 6;}else if (C3 == 0){while(C3 == 0);pp = 7;}else if (C4 == 0){while(C4 == 0);pp = 8;}R3 = 0;R1 = R2 = R4 = 1;C1 = C2 = C3 = C4 = 1;if(C1 == 0){while(C1 == 0);pp = 9;}else if (C2 == 0){while(C2 == 0);pp = 10;}else if (C3 == 0){while(C3 == 0);pp = 11;}else if (C4 == 0){while(C4 == 0);pp = 12;}R4 = 0;R1 = R2 = R3 = 1;C1 = C2 = C3 = C4 = 1;if(C1 == 0){while(C1 == 0);pp = 13;}else if (C2 == 0){while(C2 == 0);pp = 14;}else if (C3 == 0){while(C3 == 0);pp = 15;}else if (C4 == 0){while(C4 == 0);pp = 16;}
}
void main()
{while(1){key();smg();}
}

蓝桥杯综合实训平台 使用AIP15F2K61S2/STC89C52 控制矩阵键盘相关推荐

  1. PLC 变频器、触摸屏综合实训平台

    ZN-PBC240型 PLC 变频器.触摸屏综合实训平台 一.概述: 1.模块化设计,主机模块中,所有输入输出端口都通过导线连接到实验板上,各实验模块都有独立的输入.输出.公共端.用户可方便扩展自己的 ...

  2. 物联网综合实训平台-物联网实训系统-物联网实训室设备

    物联网综合实训平台 产品型号和技术规格 产品特点: 1) 物联网实训工位:设备主体结构必须采用全钢结构,坚固耐用,实训台中央内留显示器安装位置,使整个实训台成为一个整体.外观尺寸1700X1800X3 ...

  3. 工业机器人综合实训平台

    ZNL-IR03工业机器人综合实训平台 一.概述 ZNL-IR03工业机器人不同于其他机电设备,是一种实现某种工艺过程的柔性平台,工艺种类完全由其所安装的末端执行器和配套的周边设备决定.对于基础教学, ...

  4. 分享个蓝桥杯的实训指导书,省赛国赛历年真题及解析

    刚上大一就参加了波校选,4个小时只做出了个按键翻转LCD屏的功能,确实很拉. 今年大二,校选又要开始了,于是乎开始准备,前段时间打电赛拿了个成功参赛,所以得弄弄这个蓝桥杯了.自己看了看一些赛题,感觉最 ...

  5. 蓝桥杯单片机 | 特训案例【进阶06】基于PCF8591的DAC模拟电压输出

    [1]题目要求 新建工程,以I/O模式编写代码,在CT107D单片机综合训练平台上,实现以下功能: 1.将IIC总线的底层驱动代码文件正确移植到工程中. 2.将J5配置BTN模式,把S4设置为独立按键 ...

  6. 蓝桥杯单片机 | 特训案例【进阶03】24C02的基本读写操作

    [1]题目要求 新建工程,以I/O模式编写代码,在CT107D单片机综合训练平台上,实现以下功能: 1.将IIC总线的底层驱动代码文件正确移植到工程中. 2.系统上电后,从24C04存储器的0x01. ...

  7. 工业机器人综合实训考核装置

    ZN-ROT01工业机器人综合实训考核装置 一.概述 ZN-ROT01工业机器人综合实训平台由机器人模块.模拟上下料和码垛模块.TCP基础模块.模拟压铸模块.写字绘图模块.工具快换模块(可选配机器视觉 ...

  8. ⑤【蓝桥杯】STM32G4嵌入式竞赛实训平台(CT117E-M4)学习——定时器中断

    写在前面-- 本文将介绍嵌入式竞赛实训平台(CT117E-M4)开发板上定时器中断的使用. 目录 一.硬件平台 三.STM32G4系列定时器简介 四.配置过程 五.编写函数 六.总结 一.硬件平台 嵌 ...

  9. 综合布线实训装置-网络综合布线模拟墙-综合布线实训平台

    综合布线实训装置网络综合布线教学模拟墙 产品型号和技术规格 产品特点: 1.实训装置为国家专利产品,模块化设计,可任意组合,体积庞大,美观漂亮,适合各种教室安装. 2.实训装置为全钢结构,全部为模块化 ...

最新文章

  1. 蓝桥杯 算法提高 日期计算
  2. Swift3 使用系统UIAlertView方法做吐司效果
  3. python上下文管理器ContextLib及with语句
  4. 原生JS实现旋转轮播图+文字内容切换
  5. 解决Chrome插件安装时出现的 “CRX_HEADER_INVALID” (程序包无效) 问题
  6. 我的Java学习历程03【Java8接口新特性-下】
  7. 【平面设计基础】03:绘制—图标到底有多重要
  8. Android 获取日历日程事件
  9. 【一点分享】Mysql高级特性:Event定时任务,用作定时调度ETL也很香。
  10. w10系统打不开服务器共享打印机,win10系统无法共享打印机的方案
  11. mui 屏蔽手机物理返回按键(安卓+苹果)
  12. MichiGAN:Multi-Input-Conditioned Hair Image Generation for Portrait Editing---论文阅读笔记
  13. 引流复盘:从知乎引流20万粉,我只用了1个月
  14. java-EasyExcel导出excel设置单元格为文本格式(含代码)
  15. 二年级计算机是学什么内容的,小学二年级上册信息技术教案【三篇】
  16. STM32 CubeMX 无法将 STM32H7 的最大 CPU 频率设置为 480 MHz
  17. springboot二手书籍线上回收网站java ssm-0401u
  18. ct扫描方式有哪些_Maptek?XR3-CT三维激光扫描仪在露天矿山边坡监测中的应用
  19. 普鸥知识产权|亚马逊商标专利版权侵权有遇到吗?
  20. 安全防护,IE浏览器主页被2345劫持的后续操作

热门文章

  1. Unity实用小工具或脚本——智能包住任意多个物体的碰撞体
  2. 20条最狠的潜规则!读完又爱又恨!
  3. 计算机网络谢希仁版(第七版)答案
  4. Oracle系统服务
  5. 高速缓冲存储器-cache
  6. 你只需画草稿,剩下都交给AI!哈佛『机器学习』最新课程;Evernote收费又难用?试试这款开源工具;提示工程资源整合笔记;前沿论文 | ShowMeAI资讯日报
  7. 喜提一份 ‘凡尔赛’ 式的搜广推面经!
  8. python爬虫 关键字_包含关键字 python 爬虫 的文章 - 科学空间|Scientific Spaces
  9. 银行提供了整存整取定期存储业务,其存取分为一年、二年、三年、五年,到期凭存单支取本息
  10. javascript日期对象