c51--矩阵键盘

这篇具有很好参考价值的文章主要介绍了c51--矩阵键盘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

此后由于代码量增加,需要进行模块化

模块化就是C语言的多文件编译,通过把一个或者几个功能函数写在其他c文件里,在main.c里面通过应用相应的h文件就可以直接调用功能函数,这样main.c文件不至于复杂冗长。如果没学过可以去B站找一下相关视频(推荐翁恺C语言),或者就地找相关文章,例如这位老哥写得比较完善http://t.csdn.cn/z3pV7。

矩阵键盘显示键码值

矩阵键盘为了减少I/O口采用的是将按键排列成矩阵形式,按逐行或者逐列扫描就能读出任意按键的按下(同一时间只能按下一个)。下面是矩阵按键的原理图:
c51矩阵键盘,c51入门,c++,c语言,单片机
matrixkey.h文件

#ifndef __MATRIXKEY_H__
#define __MATRIXKEY_H__
unsigned char MatrixKey();

#endif

delay.h文件

#ifndef __DELAY_H__
#define __DELAY_H__
void Delay(unsigned int xms);

#endif

delay.c文件

void Delay(unsigned int xms)		//@11.0592MHz
{
	unsigned char i, j;
	while(xms)
	{
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
}

matrixkey.c文件(函数写一个就行)

#include "delay.h"
#include <REGX52.H>


unsigned char MatrixKey()//按行扫描
{
	unsigned char KeyNumber = 0;
	P1 = 0xFF;
	P1_7 = 0;
	if(P1_3 == 0){Delay(20);while(P1_3 == 0);Delay(20);KeyNumber = 1;}
	if(P1_2 == 0){Delay(20);while(P1_2 == 0);Delay(20);KeyNumber = 2;}
	if(P1_1 == 0){Delay(20);while(P1_1 == 0);Delay(20);KeyNumber = 3;}
	if(P1_0 == 0){Delay(20);while(P1_0 == 0);Delay(20);KeyNumber = 4;}
	
	P1 = 0xFF;
	P1_6 = 0;
	if(P1_3 == 0){Delay(20);while(P1_3 == 0);Delay(20);KeyNumber = 5;}
	if(P1_2 == 0){Delay(20);while(P1_2 == 0);Delay(20);KeyNumber = 6;}
	if(P1_1 == 0){Delay(20);while(P1_1 == 0);Delay(20);KeyNumber = 7;}
	if(P1_0 == 0){Delay(20);while(P1_0 == 0);Delay(20);KeyNumber = 8;}
	
	P1 = 0xFF;
	P1_5 = 0;
	if(P1_3 == 0){Delay(20);while(P1_3 == 0);Delay(20);KeyNumber = 9;}
	if(P1_2 == 0){Delay(20);while(P1_2 == 0);Delay(20);KeyNumber = 10;}
	if(P1_1 == 0){Delay(20);while(P1_1 == 0);Delay(20);KeyNumber = 11;}
	if(P1_0 == 0){Delay(20);while(P1_0 == 0);Delay(20);KeyNumber = 12;}
	
	P1 = 0xFF;
	P1_4 = 0;
	if(P1_3 == 0){Delay(20);while(P1_3 == 0);Delay(20);KeyNumber = 13;}
	if(P1_2 == 0){Delay(20);while(P1_2 == 0);Delay(20);KeyNumber = 14;}
	if(P1_1 == 0){Delay(20);while(P1_1 == 0);Delay(20);KeyNumber = 15;}
	if(P1_0 == 0){Delay(20);while(P1_0 == 0);Delay(20);KeyNumber = 16;}
	return KeyNumber;
}


unsigned char MatrixKey()//按列扫描
{
    unsigned char KeyNum = 0;
    P1 = 0xFF;
    P1_3 = 0;
    if(P1_7==0)
    {
        Delay(20);while(P1_7==0);Delay(20);KeyNum = 1;
    }
    if(P1_6==0)
    {
        Delay(20);while(P1_6==0);Delay(20);KeyNum = 5;
    }
    if(P1_5==0)
    {
        Delay(20);while(P1_5==0);Delay(20);KeyNum = 9;
    }
    if(P1_4==0)
    {
        Delay(20);while(P1_4==0);Delay(20);KeyNum = 13;
    }
    
    P1 = 0xFF;
    P1_2 = 0;
    if(P1_7==0)
    {
        Delay(20);while(P1_7==0);Delay(20);KeyNum = 2;
    }
    if(P1_6==0)
    {
        Delay(20);while(P1_6==0);Delay(20);KeyNum = 6;
    }
    if(P1_5==0)
    {
        Delay(20);while(P1_5==0);Delay(20);KeyNum = 10;
    }
    if(P1_4==0)
    {
        Delay(20);while(P1_4==0);Delay(20);KeyNum = 14;
    }
    
    P1 = 0xFF;
    P1_1 = 0;
    if(P1_7==0)
    {
        Delay(20);while(P1_7==0);Delay(20);KeyNum = 3;
    }
    if(P1_6==0)
    {
        Delay(20);while(P1_6==0);Delay(20);KeyNum = 7;
    }
    if(P1_5==0)
    {
        Delay(20);while(P1_5==0);Delay(20);KeyNum = 11;
    }
    if(P1_4==0)
    {
        Delay(20);while(P1_4==0);Delay(20);KeyNum = 15;
    }
    
    P1 = 0xFF;
    P1_0 = 0;
    if(P1_7==0)
    {
        Delay(20);while(P1_7==0);Delay(20);KeyNum = 4;
    }
    if(P1_6==0)
    {
        Delay(20);while(P1_6==0);Delay(20);KeyNum = 8;
    }
    if(P1_5==0)
    {
        Delay(20);while(P1_5==0);Delay(20);KeyNum = 12;
    }
    if(P1_4==0)
    {
        Delay(20);while(P1_4==0);Delay(20);KeyNum = 16;
    }
    return KeyNum;
}

主函数:
main.c文章来源地址https://www.toymoban.com/news/detail-571122.html

#include <REGX52.H>
#include "matrixket.h"
#include "delay.h"


unsigned KeyNum;
void main()
{
    while(1)
    {
        KeyNum = MatrixKey();
        if(KeyNum)
        {
            //显示操作等等
        }
    }
}

到了这里,关于c51--矩阵键盘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机--矩阵键盘

    一、接线(4×4) 将16个键盘排成4行4列,第一行将每个按键的一端连接在一起构成行线,第一列将每个按键的另一端连接在一起构成列线,所以共有4行4列8根线,连接到单片机的GPIO口。 二、原理 总体来说检测该键对应IO口是否为低电平。 1、检测时,先将一行设为低电平,其

    2024年02月11日
    浏览(28)
  • 51单片机矩阵键盘

    目录 前言 一、矩阵键盘扫描 二、LCD1602显示矩阵键盘键值 三、趣味小项目——密码锁 总结          矩阵键盘的原理很浅显易懂,不涉及任何寄存器,就是纯线路连接。         矩阵键盘的内部接线图如下:         不难看出其组成就是多个独立按键彼此相连形成,在

    2024年02月08日
    浏览(50)
  • 51单片机(六)矩阵键盘和矩阵键盘密码锁

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月04日
    浏览(39)
  • 6.51单片机之矩阵键盘

    👻 1.矩阵键盘的介绍 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。 采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态。 结构:在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条

    2024年02月07日
    浏览(32)
  • 51单片机学习笔记-4矩阵键盘

    [toc] 注:笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 注:工程及代码文件放在了本人的Github仓库。 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。采用逐行或逐列的“扫描”,就可以读

    2024年02月06日
    浏览(38)
  • 汇编语言实现C51单片机点亮流水灯

    P0作输出口,接8只发光二极管,编写程序实现二极管循环点亮 二极管为共阳极连接时,即二极管正极已接通电源,单片机输出接阴极,所以单片机输出为低电平有效。 所以为实现二极管轮流点亮,单片机的输出应为:0FEH,0FDH,0FBH,....0FEH,每输出一种状态,需要延时0.1us. 最后在

    2024年02月06日
    浏览(42)
  • 单片机语言--C51语言数据类型与存储类型以及C51的基本运算

    C51的基本语法与标准C相同,C51在标准C的基础上进行了适合于51系列单片机硬件的扩展。 深入理解Keil C51对标准C的扩展部分以及不同之处,是掌握C51语言的关键之一。 C51与标准C的主要区别如下: (1)库函数的不同。 (2)数据类型有一定的区别。 (3)C51的变量存储模式与标

    2024年04月10日
    浏览(33)
  • 51单片机矩阵键盘——LCD1602显示

    本次的实验需要用到LCD1602液晶屏,需要用到LCD1602.c 与LCD1602.h文件链接: https://download.csdn.net/download/YLG_lin/86404949 使用矩阵键盘随意按下按键,LCD1602第二行前两位就会显示对应按键按下的数字。 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式 采用

    2023年04月09日
    浏览(30)
  • 51单片机实现矩阵键盘密码锁

    使用51单片机的矩阵键盘模块以及led1602显示屏,实现模拟密码锁。 当程序烧录到单片机中后,led1602屏幕会显示文字。 第一行会显示单词“PASSWORD”,第二行显示4个0,表示我们要写入的四位密码,每位默认为0。 矩阵键盘前两行与第三行的前两个分别代表输入1-9与0,第三行第

    2024年02月03日
    浏览(37)
  • 51单片机矩阵键盘——数码管显示

    当我们熟悉了数码管的位选与段选,并了解的矩阵键盘的扫描之后就可以编写程序了。 按下矩阵键盘S1并松开,数码管第一位(LED8)显示0;按下矩阵键盘S2并松开,数码管第一位显示1;...按下矩阵键盘S16并松开,数码管第一位显示F; 矩阵键盘扫描(输入扫描)     原理:

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包