首页 > 其他分享 >【51单片机】【STC89C52(A2版)】6-1矩阵键盘

【51单片机】【STC89C52(A2版)】6-1矩阵键盘

时间:2023-02-02 21:00:36浏览次数:45  
标签:20 KeyNumber 51 Delay 单片机 while A2 P17 include

其他模块化编码参考前面,这里不再赘述。相关头文件的代码及其定义方式。在这里我只提供相关源码,不做教学,如果复制过去的代码运行起来之后,单片机做出的相关反应与预期的不一样,可以检查一下相关引脚定义。

【main.c】

#include <STC89C5xRC.H>  


#include "Delay.h"


#include "LCD1602.h"


#include "MatrixKey.h"


unsigned char KeyNum;


void main()

{

 LCD_Init();

 LCD_ShowString(1,1,"MatrixKey:");

 while(1)

 {

  KeyNum=MatrixKey();

  if(KeyNum)

  {

   LCD_ShowNum(2,1,KeyNum,2);

  }

 }

}

【MatrixKey.c】

#include <STC89C5xRC.H>


#include "Delay.h"

/**

 * @brie 矩阵键盘读取按键键码

 * @param 无  

 * @retval KeyNumber 按下案件的键码值

   如果按键按下不放,程序会停留在此函数,松手的一瞬间,返回按键键码,返回0;

 */

unsigned char MatrixKey()

{

unsigned char KeyNumber=0;

 

P1=0XFF;

P13=0;

if(P17==0){Delay(20);while(P17==0);Delay(20);KeyNumber=1;}

if(P16==0){Delay(20);while(P17==0);Delay(20);KeyNumber=5;}

if(P15==0){Delay(20);while(P17==0);Delay(20);KeyNumber=9;}

if(P14==0){Delay(20);while(P17==0);Delay(20);KeyNumber=13;}

 

P1=0XFF;

P12=0;

if(P17==0){Delay(20);while(P17==0);Delay(20);KeyNumber=2;}

if(P16==0){Delay(20);while(P17==0);Delay(20);KeyNumber=6;}

if(P15==0){Delay(20);while(P17==0);Delay(20);KeyNumber=10;}

if(P14==0){Delay(20);while(P17==0);Delay(20);KeyNumber=14;}

 

P1=0XFF;

P11=0;

if(P17==0){Delay(20);while(P17==0);Delay(20);KeyNumber=3;}

if(P16==0){Delay(20);while(P17==0);Delay(20);KeyNumber=7;}

if(P15==0){Delay(20);while(P17==0);Delay(20);KeyNumber=11;}

if(P14==0){Delay(20);while(P17==0);Delay(20);KeyNumber=15;}

 

P1=0XFF;

P10=0;

if(P17==0){Delay(20);while(P17==0);Delay(20);KeyNumber=4;}

if(P16==0){Delay(20);while(P17==0);Delay(20);KeyNumber=8;}

if(P15==0){Delay(20);while(P17==0);Delay(20);KeyNumber=12;}

if(P14==0){Delay(20);while(P17==0);Delay(20);KeyNumber=16;}

 

 

return KeyNumber;

}

标签:20,KeyNumber,51,Delay,单片机,while,A2,P17,include
From: https://blog.51cto.com/u_15865347/6033867

相关文章

  • 【51单片机】【STC89C52(A2版)】6-2矩阵键盘-密码锁
    本代码需要配合前面的LCD1602DelayMatrixKey使用,在前面的源码复制即可【main.c】#include<STC89C5xRC.H> #include"Delay.h"#include"LCD1602.h"#include"MatrixK......
  • 151道B端产品经理面试问题合集(全部有答案)文末送B端简历模板
    我会一直长期给你分享B端产品经理面试问题大全及答案大全,助你斩获心仪offer!请你去工忠号【B端产品经理面试问题及答案】,以免错失后续更多实用的B端产品经理面试技巧!你好,我是......
  • HDU-1251-统计难题(未完待续 还有两种方法还没整理)
    统计难题统计难题TimeLimit:4000/2000MS(Java/Others)MemoryLimit:131070/65535K(Java/Others)TotalSubmission(s):22667AcceptedSubmission(s):9545Proble......
  • MATH1851 Calculus and ordinary differential equations
    课程内容笔记,自用,不涉及任何assignment,exam答案Notesforselfuse,notincludedanyassignmentsorexams由于提前预习了微积分(见微积分\(I\),微积分\(II\))......
  • Node.js+Koa2+TypeScript技术概览
    最近几年一直使用Node.js作为后端服务平台,通过Koa2框架中间件快速搭建Web服务,但是使用JavaScript开发大型后端服务时会使程序变得难以维护,继而使用TypeScript语言开发,使编......
  • 2351
    给你一个由小写英文字母组成的字符串 s ,请你找出并返回第一个出现 两次 的字母。注意:如果 a 的 第二次 出现比 b 的 第二次 出现在字符串中的位置更靠前,则......
  • 这是我在51CTO博客的第一篇博文
    一、自我介绍我目前是一名在读大学生,专业是数字媒体技术,有意向未来向计算机类发展。目前在学习Java和编程开发。在这里,我希望通过这个平台来进行多方涉猎和广泛的学习,提高自......
  • jinja2
    pipinstalljinja2在setting.py的文件中修改TEMPLATES中的代码将'BACKEND':'django.template.backends.django.DjangoTemplates',#默认引擎修改为'BACKEND':......
  • plugin caching_sha2_password could not be loaded
    参考连接:https://blog.csdn.net/qq_54202620/article/details/122729704https://blog.csdn.net/qq_45214414/article/details/115284609 navicate可以连接,但是SQLyog不......
  • 力扣513 找树左下角的值
    题目:给定一个二叉树的根节点root,请找出该二叉树的最底层最左边节点的值。假设二叉树中至少有一个节点。示例:输入:[1,2,3,4,null,5,6,null,null,7]输出:7......