C51单片机 【基础1】 您所在的位置:网站首页 单片机按键实验流程图片 C51单片机 【基础1】

C51单片机 【基础1】

2024-07-15 11:30| 来源: 网络整理| 查看: 265

前言

通过C51单片机操控键盘在很多设计中都会用到,如如果要设计一个密码锁。如果没有掌握按键的使用,那么就真的没有办法实现了。今天这篇文章就系统的说一下,按键程序的原理和实现。

文章目录 前言 按键工作原理 按键消抖 1)独立按键 2)矩阵键盘 扫描方式 矩阵键盘完整程序

按键工作原理

目前我们在开发板上使用的按键有两种接线方式:

1、独立按键 2、矩阵键盘

轻触开关 轻触开关是一种电子开关,使用时,轻轻按开关就可使开关接通,当松手时,开关断开。如图: 在这里插入图片描述 在这里插入图片描述

按键消抖

在实际写程序的时候还要考虑另一个问题就是抖动。当我们按下按键开关的时候其实会产生电平上下抖动。如下图这种情况: 在这里插入图片描述 如果我们不考虑抖动,就会检测到多次开关按下,但实际上我们就按下一次,那么我们当然不想这种事情的发生。因此我们需要考虑如何消除抖动。 消除抖动的方法也分为两种,一种是采用高精度的按键,这样可以有效的减少抖动。但是我们一般采取的是第二种,通过软件的方式来消除抖动。通过上面的图上我们可以看到,波形只有在两端的时候会产生抖动,那么我们就利用这个特点添加一个延时,去除前面那一段时间,也就是当按键按下那一刻延时一段时间后再去检测电平变化。这样就可以完美的解决这个问题了。

1)独立按键

独立按键相对来说是比较简单的,使用的就是上面介绍的轻触开关,我们通过原理图进行讲解: 在这里插入图片描述 我们可以看到图上有四个开关,分别为K1、K2、K3、K4,它们的一端连接的都是GND,另一端分别连接在了RXD(P3.1)、TXD(P3.0)、P32、P33,几个引脚上。 当我们按下开关后,对应的引脚就会显示低电平。我们通过主程序中的循环,来检测对应的引脚电平的变化,来判断开关是否按下,从而完成对应的操作。 程序流程: 在这里插入图片描述 下面我们通过一个独立按键程序来看一下:(完整程序可独立运行)

/******************************************************************************* * 实验名 : 左右流水灯实验 * 使用的IO : LED使用P2,键盘使用P3.1 * 实验效果 : 按下K1键, * 注意 : *******************************************************************************/ #include #include #define GPIO_LED P2 sbit K1=P0^0; void Delay10ms( ); //延时10ms /******************************************************************************* * 函数名 : main * 函数功能 : 主函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void main(void) { unsigned int i,j; j=0x01; while(1) { GPIO_LED=j; if(K1==0) //检测按键K1是否按下 { Delay10ms(); //消除抖动 if(K1==0) { j=_cror_(j,1);//1000 0000 while((i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有