和12岁小同志搞创客开发:检测按键状态的两件法宝

简介: 和12岁小同志搞创客开发:检测按键状态的两件法宝

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。

image.png

项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html


按键是创客开发过程中必不可少的器件之一,用户可以通过按键实现交互控制。例如:按键开关灯、长按按键解除报警、按键实现设备控制等功能。

image.png

检测按键状态有两种方式:第一种,检测按键端口的输出电压信号变化,判断按键的状态;第二种,按键状态变化触发中断。


下面让我们学习这两种检测按键状态的方法~


1、检测电平变化,判断按键状态

在如何驱动各类型传感器?这篇文章中讲到:可以将传感器进行分类,主要包括:数字量输出类型传感器、数字量输入类型传感器、模拟量电压类型传感器、模拟量电流类型传感器和协议类型传感器。


按键本质上并不是传感器,但是按照驱动方式来看,可当作数字量输出类型传感器,进行驱动。


可以通过按键的设计图明白其中的原理,如下图所示,假设TP点接入单片机IO端口,当按键未被按下时,此处为5V高电平,当按键被按下时,此处就会变为0V低电平,通过这种高、低电平状态变化判断按键的状态变化。

image.png

那么设计按键控制LED亮、灭的程序就非常好理解了,如下所示:

image.png

2、使用中断触发,判断按键状态

我们在设计功能时,难免要用到延时,如果延时时间过长,可以发现按键就不那么灵敏了,主要原因在于:延时消耗过多的处理器资源,程序大多时间都运行在延时函数中,无法进行按键状态的判断。


这时候就需要使用中断触发功能了~


当控制器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断,过程如下所示:

image.png

可通过监测按键电平信号变化,触发中断,如下图情况所示,当按键未按下,此时是5V高电平信号。

image.png

当按下按键瞬间,高电平会切换到低电平,产生下降沿信号,此时可触发下降沿中断。

image.png

当松开按键瞬间,低电平会切换到高电平,产生上降沿信号,此时可触发上降沿中断。

image.png

中断程序的实现也非常简单,无需在主程序中设计程序,选择合适的中断信号触发模式,将需要实现的功能写在中断处理函数中,当检测到相应的触发信号,中断处理函数就可以运行了,如下所示:

image.png

有一点需要注意,中断处理函数适合处理“急件”,处理完毕后,再回到原来被中断的地址,继续原来的工作,所以不应该在中断程序中有大量长时间的延时,以免对主程序产生影响。



相关文章
|
存储 物联网 芯片
聊聊身边的嵌入式:点菜机用着好好的,突然挂了,这口锅应该甩给谁?
聊聊身边的嵌入式:点菜机用着好好的,突然挂了,这口锅应该甩给谁?
|
3月前
信不信?工作这么多年,还有很多网工不知道光模块光衰的正常范围?
信不信?工作这么多年,还有很多网工不知道光模块光衰的正常范围?
226 2
|
4月前
|
人工智能 机器人 智能硬件
一场科技与幽默的奇妙碰撞,高中生意外开启未来生活新纪元!
在一个晴朗午后,高中生李明偶然发现了祖父留下的日记与一顶复古帽。日记中记载了一个荒诞的想法——“人工智能征服厨房计划”,勾起了他对AI的好奇心。深入研究后,李明意识到AI已让生活更便捷有趣。参加AI创新大赛时,原本打算设计一个“不讲冷笑话的AI伴侣”,却意外加入幽默模块。演示时AI的一句玩笑赢得了大家的喜爱,也让李明在学校小有名气,同学们开始向他咨询AI趣事,甚至请求为宠物定制会讲笑话的AI项圈。李明意识到AI不仅能改变生活,还能带来欢笑。
48 0
如何开发自主体育直播足球竞猜系统?说难不难,做好这三步就行了
随着网络技术的发展,体育直播已经成为人们观看体育比赛的主要方式之一。对于想要开发自主体育直播系统的企业或个人来说,以下三步是必须要做的。
|
Java
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏19敌人可以被打死
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏19敌人可以被打死
140 0
|
人工智能 算法 固态存储
这才是模块化电脑该有的样子:一人打造的超迷你计算机,震动了整个极客圈
这才是模块化电脑该有的样子:一人打造的超迷你计算机,震动了整个极客圈
135 0
|
监控 前端开发 jenkins
新来个技术总监,给团队引入了这款开发神器,同事直呼哇塞
带团队时间久了,就能发现整个 Team 都渐渐疲了。前两年老板还专门买了个系统搞 OKR,现在也不大提了;Scrum 我们也搞了,用起来也就那样;项目管理工具试了好几个,禅道、Worktile、现在用 Coding,反正有一个能用的就行;微服务化改造从去年开始在吭哧吭哧搞,我们自己搞得觉得很厉害,但业务部门那边就觉得没啥差别,搞不懂你们研发部门每天在弄些什么,赶紧做我们提的需求要紧。
新来个技术总监,给团队引入了这款开发神器,同事直呼哇塞
|
缓存 Java 数据管理
新来了个技术总监,居然要我做一个 IP 属地功能。。不服就干!
新来了个技术总监,居然要我做一个 IP 属地功能。。不服就干!
281 0
新来了个技术总监,居然要我做一个 IP 属地功能。。不服就干!
和12岁小同志搞创客开发:如何使用继电器?
和12岁小同志搞创客开发:如何使用继电器?
和12岁小同志搞创客开发:如何使用继电器?
|
弹性计算 Cloud Native 算法
“我想要用我余生,换夜空繁星闪耀”
本文是7月28日《一个95后阿里郎的自学修养》文字稿,我们花了一个小时时间,从一阿里郎学生时代的成长经验,聊到了求职时期的tips,最后聊到了工作后的收获,希望与象牙塔里的你一起分享。
2145 0
“我想要用我余生,换夜空繁星闪耀”