0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机按键检测电路原理详解

CHANBAEK 来源:科创追梦者 作者:谢士金 2023-11-02 15:28 次阅读

在本次课程中,我将向大家介绍单片机的输入口的使用。

在这里,我以最简单的检测一个按键是否被按下为例来向大家介绍。

一、STC15W408AS按键检测电路

下面是本例中按键检测的电路原理图,K1是一个按键,它接在单片机的P3.3口上,R2是一个与按键连接的上拉电阻

图片

二、按键检测原理

在本例中,按键与单片机的第14脚(P3.3引脚)相连。当按键没有按下时,P3.3的电平是高电平;当按键被按下时,按键将P3.3与地短接,此时P3.3的电平为低电平。

从分析可知,根据P3.3电平的变化状态,我们可以知道按键是否被按下。因此,我们只要检测P3.3电平的状态,就可以判断出按键的状态。

三、STC15W408AS输入模式配置方法

为了让单片机能检测按键,我们必须将单片机的P3.3口设置为输入口,也就信号是从单片机外输入到单片机内。因此,必须将单片机的IO口模式设置为输入模式。

如果要将STC15W408AS的引脚配置成输入模式,只需修改PxM0和PxM1两个寄存器的值。下面是STC15的STC15W408AS引脚的配置说明:

图片

四、按键检测有关代码

下面是本例中,按键检测相关的代码:

#define Pin_KEY P33

#define Pin_KEY_M1 P3M1

#define Pin_KEY_M0 P3M0

#define Pin_KEY_BIT BIT3

#define GetKey_High() Pin_KEY==1

void PinKEY_DirIn(void)

{

    Pin_KEY_M1 &=~Pin_KEY_BIT;

    Pin_KEY_M0 &=~Pin_KEY_BIT;

}

五、本例中按键检测指示

为了显示按键的是否被按下,我们用上节课程中介绍的单片机点LED的亮灭状态来表示按键的状态。当按键没被按下时,LED不亮;当按键被按下时,LED灯点亮。

请看下面代码:

PinKEY_DirIn();   //将按键所在的口设置为输入模式

while(TRUE)

{

  if(GetKey_High())  //如果检测到按键口是高电平

  {

    PinLed_High(); //则将LED所在口置高,LED不亮。

  }else{

    PinLed_Low(); //否则,将LED所在口置低,LED点亮

  }  

}

六、按键检测完整源程序

#define BIT0 0x01

#define BIT1 0x02

#define BIT2 0x04

#define BIT3 0x08

#define BIT4 0x10

#define BIT5 0x20

#define BIT6 0x40

#define BIT7 0x80

#define TRUE 1

#define FALSE 0

#define BEEP_ON    1

#define BEEP_OFF    0

#define Pin_LED P32

#define Pin_LED_M1 P3M1

#define Pin_LED_M0 P3M0

#define Pin_LED_BIT BIT2

#define PinLed_High() Pin_LED=1

#define PinLed_Low() Pin_LED=0

#define Pin_KEY P33

#define Pin_KEY_M1 P3M1

#define Pin_KEY_M0 P3M0

#define Pin_KEY_BIT BIT3

#define GetKey_High() Pin_KEY==1

void PinKEY_DirIn(void);

void PinLED_DirOut(void);

void main(void)

{

  PinLED_DirOut();

  PinKEY_DirIn();

  PinLed_Low();



  while(TRUE)

  {

    if(GetKey_High())

    {

       PinLed_High();

    }else{

       PinLed_Low();

    }

   }

}

void PinKEY_DirIn(void)

{

    Pin_KEY_M1 &=~Pin_KEY_BIT;

    Pin_KEY_M0 &=~Pin_KEY_BIT; 

}

void PinLED_DirOut(void)

{

    Pin_LED_M1 &=~Pin_LED_BIT;

    Pin_LED_M0 |=Pin_LED_BIT;  

}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44554

    浏览量

    634631
  • 上拉电阻
    +关注

    关注

    5

    文章

    359

    浏览量

    30606
  • 电路原理图
    +关注

    关注

    40

    文章

    347

    浏览量

    38316
  • 按键检测
    +关注

    关注

    0

    文章

    23

    浏览量

    4834
  • STC15W408AS
    +关注

    关注

    10

    文章

    27

    浏览量

    10244
收藏 人收藏

    评论

    相关推荐

    单片机按键设计的方法,这几个方案不错

    单片机按键设计的四个方案详解单片机系统里,按键是常见的输入设备,在本文江介绍几种按键硬件、软件
    的头像 发表于 01-06 07:05 1w次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>按键</b>设计的方法,这几个方案不错

    如何实现基于单片机的键盘检测

    键盘是单片机与用户交互设备之一,用户通过键盘输入数据或命令到单片机。最简单的键盘仅有一个按键,复杂一些的键盘有多个按键。在单片机的外围
    的头像 发表于 10-31 14:39 1905次阅读
    如何实现基于<b class='flag-5'>单片机</b>的键盘<b class='flag-5'>检测</b>

    单片机按键检测

    Atmega16单片机按键电路如下,按键另一端一般都是直接接地的,这个比较另类。尝试了不少方法还是没写出检测
    发表于 05-25 01:31

    单片机按键详解

    单片机按键详解
    发表于 07-28 14:51

    单片机按键处理总结——含程序详解

    讲述几种常用的按键的应用及程序处理方法,帮助大家掌握单片机处理按键的方法。
    发表于 11-10 10:55 11次下载

    简谈单片机检测按键原理和中断按键检测的办法

    首先说一下独立键盘检测,在单片机外围电路中 ,通常用到的按键都是机械弹性开关,当开关闭合时,线路导通,开关断开时,线路断开。单片机
    发表于 06-27 10:44 2w次阅读
    简谈<b class='flag-5'>单片机</b><b class='flag-5'>检测</b><b class='flag-5'>按键</b>原理和中断<b class='flag-5'>按键</b><b class='flag-5'>检测</b>的办法

    51单片机按键检测和信号函数仿真的详细资料说明

    本文档的主要内容详细介绍的是51单片机按键检测和信号函数仿真的详细资料说明,在单片机中会遇到识别按键的问题,常用的独立
    发表于 04-11 18:22 4次下载
    51<b class='flag-5'>单片机</b><b class='flag-5'>按键</b><b class='flag-5'>检测</b>和信号函数仿真的详细资料说明

    51单片机的独立按键按键消抖及矩阵按键电路与程序免费下载

    本文档的主要内容详细介绍的是51单片机的独立按键按键消抖及矩阵按键电路与程序免费下载。
    发表于 07-26 17:36 28次下载
    51<b class='flag-5'>单片机</b>的独立<b class='flag-5'>按键</b>和<b class='flag-5'>按键</b>消抖及矩阵<b class='flag-5'>按键</b>的<b class='flag-5'>电路</b>与程序免费下载

    单片机实现按键电路和程序设计资料说明

    单片机应用系统中,按键主要有两种形式:1、直接按键; 2、矩阵编码键盘。直接按键的每个按键都单独接到
    的头像 发表于 10-06 18:14 9720次阅读

    单片机按键使用程序 (51单片机

    单片机独立按键使用程序 (51单片机)独立按键单片机中很重要的一个器件,在这篇文章里,通过这个用独立
    发表于 11-11 18:36 108次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>按键</b>使用程序 (51<b class='flag-5'>单片机</b>)

    51单片机按键检测--独立按键与矩阵键盘

    按键,每个按键对应一个IO口,通过循环或者中断去检测,这种方法常用于按键个数较少得时候。如果按键的个数较多,每个
    发表于 11-12 11:06 15次下载
    51<b class='flag-5'>单片机</b><b class='flag-5'>按键</b><b class='flag-5'>检测</b>--独立<b class='flag-5'>按键</b>与矩阵键盘

    PIC单片机 按键检测识别

    目录按键和PIC单片机一、按键二、按键的物理连接与检测三、PIC16F18854单片机
    发表于 11-16 12:36 12次下载
    PIC<b class='flag-5'>单片机</b> <b class='flag-5'>按键</b><b class='flag-5'>检测</b>识别

    单片机按键检测

    独立按键电路:独立按键编程:一个独立按键单片机的一个I/O口连接,当按键按下时,对应I/O口由
    发表于 11-17 09:21 3次下载
    <b class='flag-5'>单片机</b>之<b class='flag-5'>按键</b><b class='flag-5'>检测</b>

    单片机学习-矩阵按键

    目录矩阵按键介绍检测方法C51例程欢迎加QQ及邮件交流矩阵按键介绍 独立键盘与单片机连接时,每一个按键都需要
    发表于 12-31 19:37 15次下载
    <b class='flag-5'>单片机</b>学习-矩阵<b class='flag-5'>按键</b>

    单片机按键切换模式怎么设置

    单片机:选择一款合适的单片机型号,例如常见的8051、STM32等。 按键模块:用于实现按键输入,通常由一个或多个按键组成。
    的头像 发表于 12-13 11:07 4085次阅读