51单片机按键·

51单片机第7章-- 按键试验

Hugh

Hugh

1307 0

概述

前面几章讲解的都是 I/O 口当成输出管脚使用,本章将通过按键实验学习 I/O 口的输入功能。按键作为一种输入设备,在实际应用中非常的广泛。本章将详细介绍按键的使用。

7.1 按键原理

独立按键的原理非常简单,如下图所示:

如图所示,K17-K20 共 4 个按键分别与单片机的 P3.0-P3.3 管脚连接。例如当按下按键 K17 后,P3.0 管脚为低电平,在单片机中通过检测 P3.0 管脚是否为低电平,便可知道 K17 是否按下。

7.2 按键电路软件设计

下面我们学习独立按键的编写,这里要实现的功能为按键 K17 按下,点亮 led0,按键 K20 按下打开蜂鸣器,程序代码如下所示:

#include<reg52.h>

sbit led0 = P1^0;//LED小灯管脚定义
sbit FM = P2^4;//蜂鸣器管脚位定义

sbit Key17 = P3^0;//独立按键管脚定义
sbit Key20 = P3^3;

void main()
{
    while(1)
    {
        led0 = Key17;//按键17按下时,点亮led0
        FM = Key20;//  按键20按下时,打开蜂鸣器
    }
}

蜂鸣器打开、点亮 led0 小灯以及按键 K17、K20 按下均为低电平,因此赋值代码如上循环语句中所示。将程序下载到单片机中,当按下 K17,K20 时,led0 小灯点亮,蜂鸣器想起,弹起按键后,led0 小灯熄灭,蜂鸣器关闭。

在实际使用中,我们并不是经常一直按着按键,最常见的方式为先按下按键然后弹起,这个过程表示按键按下一次的完整过程。因此,在程序中首先检测按键是否按下,然后再检测按键是否弹起,代码如下图所示:

#include<reg52.h>

sbit led0 = P1^0;//LED小灯管脚定义
sbit FM = P2^4;//蜂鸣器管脚位定义

sbit Key17 = P3^0;//独立按键管脚定义
sbit Key20 = P3^3;

  bit flag=1;
void main()
{
    while(1)
    {
        if(Key17==0)//按键按下
        {
            if(Key17==1)//按键弹起
            {
                led0 = ~led0;//数值取反
            }    
        }

        if(Key20==0)//按键按下
        {
            if(Key20==1)//按键弹起
            {
                FM = ~FM;//数值取反
            }    
        }
    }
}

如上代码所示,在程序中首先检测按键 K17 是否按下,如果按下了再检测 K17 是否弹起,若检测到弹起,让 led0 小灯的状态变化,每完成一次按键操作,led0 小灯亮灭状态会翻转一次。K20 按键与此类推。

7.3 下载验证

将上述代码下载至单片机便可验证了。

所属系列

从当前文章继续阅读它所在合集中的前后内容。

51单片机 第 7 / 19 篇
查看合集

本专栏C语言开发为基础,旨在深入解析51单片机技术开发,嵌入式C语言编程。 订阅了本专栏您将可以收获的技能: 1. 系统学习 51单片机开发 2. 掌握嵌入式C语言开发流程 3. 深度剖析51单片机工作原理 4. 了解更多嵌入式开发原理、流程 适宜人群: 1. 所有想了解 51单片机开发的人 2. 从事嵌入式开发的工程师 3. 想要了解C语言、单片机等技术之外的内容的人 作为订阅福利,我们建立了微信技术交流群,大家在这里可以认识更多做朋友。需要的朋友加微信:「RYMCU交流1群」。欢迎关注微信公众号「rymcucom」,订阅最新内容。

相关文章

优先推荐同专题、同标签和同作者内容,补足热门文章。

评论 0

登录 后参与评论

评论

成为第一个评论的人