我是靠谱客的博主 怕黑黑裤,最近开发中收集的这篇文章主要介绍51单片机入门——独立按键的基本操作独立按键与矩阵键盘的原理图例题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

独立按键的基本操作

  • 独立按键与矩阵键盘的原理图
  • 例题

独立按键与矩阵键盘的原理图

使用独立按键时,J5跳帽应该接到2~3引脚
在这里插入图片描述
基本原理
一般情况下,独立按键有两个引脚,其中一个通过上拉电阻接到单片机的I/O端口,另外一端接地。也就是说,平时按键没有动作的时候,输出的是高电平,如果有按下动作发生,则输出的是低电平。
按键抖动
我们一般只要扫描跟按键引脚相连的I/O端口,如果发现有低电平产生,则判定该按键处于按下状态。有些时候,电路或者外围有电磁干扰,也会使单片机的I/O端口产生低电平,这种干扰信号会让单片机误认为是按键动作。所以,在扫描按键的时候应该做去抖动处理,把干扰信号过滤掉,从而获得准确的按键状态信号。
每次我们按下的时候,会输出低电平,但有可能是外界干扰;需要延时一段时间,之后再判断是不是低电平,如果是,则是按下;如果不是,则是外干扰。

例题

在这里插入图片描述
代码如下:

#include "reg52.h"  

sbit HC138_A = P2^5;        
sbit HC138_B = P2^6;        
sbit HC138_C = P2^7;        

sbit S7 = P3^0;        
sbit S6 = P3^1;        
sbit S5 = P3^2;        
sbit S4 = P3^3;        

unsigned char code SMG_NoDot[18] = 
    {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
     0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,
     0xbf,0x7f};

void Delay(unsigned char t)
{
        while(t--);
}

void Init74HC138(unsigned char n)
{
        switch(n)
        {
                case 4:
                        HC138_A = 0;
                        HC138_B = 0;
                        HC138_C = 1;
                        break;
                case 5:
                        HC138_A = 1;
                        HC138_B = 0;
                        HC138_C = 1;
                        break;
                case 6:
                        HC138_A = 0;
                        HC138_B = 1;
                        HC138_C = 1;
                        break;
                case 7:
                        HC138_A = 1;
                        HC138_B = 1;
                        HC138_C = 1;
                        break;
                case 8:
                        HC138_A = 0;
                        HC138_B = 0;
                        HC138_C = 0;
                        break;
        }
}

void ShowKeyNum(unsigned char value)//根据按键在数码管上显示数字
{
        Init74HC138(6);
        P0 = 0x01;
        Init74HC138(7);
        P0 = value;
}

void ScanKeys()
{
        if(S7 == 0)//判断是低电平还是高电平
        {
                Delay(200);// 通过延时函数  按键抖动 
                if(S7 == 0)
                {
                        while(S7 == 0);
                        ShowKeyNum(SMG_NoDot[1]);
                }
        }
        if(S6 == 0)
        {
                Delay(200);
                if(S6 == 0)
                {
                        while(S6 == 0);
                        ShowKeyNum(SMG_NoDot[2]);
                }
        }
        if(S5 == 0)
        {
                Delay(200);
                if(S5 == 0)
                {
                        while(S5 == 0);
                        ShowKeyNum(SMG_NoDot[3]);
                }
        }
        if(S4 == 0)
        {
                Delay(200);
                if(S4 == 0)
                {
                        while(S4 == 0);
                        ShowKeyNum(SMG_NoDot[4]);
                }
        }
}
                          
void main()
{
        while(1)
        {
                ScanKeys();
        }
}

代码看不懂的,可以看我之前的博客。博客链接

最后

以上就是怕黑黑裤为你收集整理的51单片机入门——独立按键的基本操作独立按键与矩阵键盘的原理图例题的全部内容,希望文章能够帮你解决51单片机入门——独立按键的基本操作独立按键与矩阵键盘的原理图例题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部