专栏首页初学单片机51单片机的多功能按键程序设计

51单片机的多功能按键程序设计

这个问题也是前些天在群里又同学问起过,还有就是我们的DIY电子时钟里也需要这样的设计,所以今天我们就来说说多功能按键程序怎么写。

我们的DIY电子时钟上有三个按键,而这三个按键需要完成整个时钟的参数设置,所以就需要用到复用功能的按键,也就是今天我们说的多功能按键。

任务要求:采用板子上的三个按键,完成至少4个时间参数的设置。

根据以上的任务要求,我们来说说程序设计的思路(电路原理我们在之前的教程里已经介绍过了)。我们3个按键要去设置至少4个的参数,这显然是一个按键设置一个参数是不行的,那第一集里我们说的按键程序就是不可行的了,那怎么办呢?对参数的设置,自然需要可以加,也可以减,这样我们就需要两个按键,这两个按键我们分别计为“+”键和“-”键,剩下的一个按键我们用来选择设置的参数,计为“SET”键。第一集里的按键程序我们是记录按键按下的次数,这里我们同样通过记录按键次数的方式来选择设置的参数,比如:“SET”键按下1次,我们选择设置的参数为第一个,此时按下“+”“-”键可以对第一个参数调整,“SET”键按下第二次,我们选择设置的参数为第二个,此时按下“+”“-”键可以对第二个参数调整,依次下去,这样理论上是不是可以设置无数个参数,而实际上也是可行的。具体的设置过程如下:

开始: SET 按下1次 ,此时按下“+”“-”设置参数1;

SET按下2次 ,此时按下“+”“-”设置参数2;

SET按下3次 ,此时按下“+”“-”设置参数3;

SET按下4次 ,此时按下“+”“-”设置参数4;

。。。 。。。

结束。

通过这样的方式,我们就可以实现用三个按键去设置多个参数,这个SET按键就是具有复合功能的按键,也就是多功能按键了,通过记录它按下的次数,我们来选择对不同参数的设置。

在实际运用中,我们需要确定需要设计的参数的多少,比如要设置4个参数,那我们可以在SET按下第5次的时候退出按键设置程序。也就说在设置参数个数加一次的时候退出设置部分,并保存设置的值。这样的程序是简单的写发,还有更智能的写法是当我们进入设置状态后,几秒钟没有按键按下后就自动退出设置程序,这样就需要开启定时器,或者在设置程序部分做计数的处理,这方法后续有时间我们会再给大家细说,今天不做过多说明。

接下来我们说说再写程序时候的注意事项。按键检测还是老方法用if语句来判断按键按下与否。在SET键选择设计参数时候我们常用的是分支语句switch…case语句。具体请参看我们的源代码部分。

最后我们要把设置的参数显示出来,这里我们DIY电子时钟上只有4位数码管可以用来显示,我们安排的显示界面如下,参数1显示在左边第一位,依次向右,第二位显示参数2,第三位显示参数3,第四位显示参数4.在设置的时候,设置哪一个参数,就只在对应的位上显示当前设置的参数。

详细的代码设计如下图:(为防止大家复制粘贴,我们提供的源码都以图片形式呈现,你可以照着搬,但是必须你自己动手敲进去,小代在此说明,所有源码都是可行的,都是小代原创的,转载及使用请说明出处)以下代码主要是按键处理的部分,显示及主函数部分和之前教程里的是一样,在此就省略了。需要之前的教程,可以关注微信公众号:单片机技术宅,然后在下面的菜单中查看“文章”。

本文分享自微信公众号 - 单片机技术宅(chuxue_MCU),作者:小代

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 等待按键释放,你的代码如何写?

    今天,还是一个问题,在QQ群(300384358)里有小伙伴一直在问一个问题,如上图。一个按键控制电机的转动,按键按下后,电机转动,按键释放,电机停止,再加一个...

    单片机技术宅
  • 原创|怎么用一个按键控制LED实现闪烁和亮灭

    具体问下如下:怎么用一个按键控制小灯,按一次小灯不停闪烁,再按一次灭掉。问题很简单(其实问题是在一个论坛上看到的),但是我看了好几楼的回复,都没有看到完整的答案...

    单片机技术宅
  • 原创|电子时钟教程之一(数码显示按键次数)

    回到正题,我们学习单片机,写单片机程序,首先要看看我们做实验的板子的原理图,这是最基本的,我们要知道了单片机的接口的使用情况,电路的驱动方式,所使用的的芯片,这...

    单片机技术宅
  • 图的常见算法

     图是由一系列点和边的集合构成的,一般有邻接矩阵和邻接表两种表示方式,c/c++可以看我的这篇文章:搜索(1)  这篇文章主要讲java语言中图的相关算法。首...

    mathor
  • pycharm 入门基础配置

    pycharm是python的IDE 工具,这个工具很强大,之所以强大,所以对于其配置也可以很复杂,作为一个pycharm的小白,以下的基本的使用是必需的,然后...

    qsjs
  • 伊朗网络攻击!?曼哈顿大规模停电事故官方回复

    上周六(7月13日)晚7点左右,曼哈顿西区发生了大范围停电事故,东起第五大道,西至哈德逊河畔,南起西43街,北至上西区71街均无电可用,断电用户数量最高时达到7...

    FB客服
  • DDD理论学习系列(12)-- 仓储

    1. 引言 DDD中Repository这个单词,主要有两种翻译:资源库和仓储,本文取仓储之译。 说到仓储,我们肯定就想到了仓库,仓库一般用来存放货物,而仓库一...

    圣杰
  • 2018-08-22

    JavaEdge
  • MATLAB修饰线条

    matlab线条加粗是为了图像显示的更加清晰。我们一般会把所画的图像,插入到latex中或者word中。有些时候如果图像线条不加粗,会造成显示不清晰,下面介绍下...

    于小勇
  • 爬取Google的心酸之路

    早在前段时间就尝试写过爬Google的了。当时由于解决不了验证码就删了,当然这次也没解决。验证码不能绕过,只能避免,减少遇见

    HACK学习

扫码关注云+社区

领取腾讯云代金券