浅析五向按键的硬件设计思想

2024-03-09 01:50

本文主要是介绍浅析五向按键的硬件设计思想,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

五向按键简介

五向键是一种多功能按键,除了具备普通按键的PUSH功能外,他还具备四个朝向的指向。因为他具备了五种按键动作,故名五向键!

它有6个引脚,其中一只引脚是公共端,一般是第5脚,而和第5脚对称的是第2脚,第2脚就代表了PUSH功能。按键正上面有一个三角缺口,代表着按键的一种朝向关系。对于封装设计者要对此内容特别注意。

不过好在立创商城已经绘制好了封装,可以很方便的知道各个引脚的走向。根据摆放关系,稍加旋转就能找出上下左右和引脚的对应关系。

五向按键原理图分析

下面这张图纸采用了CC2541开发板的一种五向键原理,这个也是我今天重点想分析的电路。

输出电压电路分析

为了方便分析,首先对此原理图做一下变型,因为LTspice中没加入LM258D,所以用AD8032暂时替代。这个电路主要应用了运放的虚接虚短原理和基尔霍夫电流定律,就能一步步的推导出不同按键按下时候VO的输出值。

具体分析过程:

第一步: 求参考点电位1。

根据分压原理,很容易计算出1点电位1.03V,那么根据运放虚短,所以正相输入引脚电位1.03V。

第二步:求运放2点的电位。

现在是UP按下,所以Up与VCC接通,R6两端的压差为3.3-1.03=2.27V,那么流过R6的电流预计22.7uA。其他之路电流关系如下,R6支路已经求出,那么R7,R8,R9之路很容易计算出总电流

I支=3.54+2.125+1.398=7.063uA;根据流入电流等于流出电流,那么R12和R13合并的电流应该为

(22.7uA-7.063uA)=15.637uA,进一步可以推导出压降为0.7818,所以2点电位=1.03-0.7818=0.248V

第二步:求运放3点的电位。

(0.248/47)*67=0.353V,与设计仿真结果相差30mV。因为这个实际仿真中用到的器件模型并不是理想模型,他计算出来的1点电位是1.06V,R12两端的压降是0.7882V,所以2点电位是0.2718V(1.06V-0.7882V),根据这个值推导出3点电位是0.38V.

举一反三,DN,LT,RT 三个方向按下时候,也能求出一个固定的数值。 这样运放加电阻网络的电路实现了不同按键不同的输出电压效果。

中断电路分析

上图是一个或门电路,实现的效果就是见1则1,这些电位都是100K电阻拉低,当有按键按下后,电位与3.3V接通,所以是逻辑1,这样P2.0有一个从0到1的跳变过程,MCU发生中断,之后调用ADC读取此时的ADC电压,这样就可以实现了中断加ADC的多个按键判断。好处是ADC可以不用实时轮询,节省CPU开支,同时也能节省设备的功耗。 缺点是器件多,成本高。

但是这种电路还有另外一个变型,是馒头科技设计的一个电路。

这个电路Vref的电位是0.33V,其他按键按下的电压通过LMV358的一路运放用作电压跟随器与ADC相连,另一路运放作为比较器使用,也能实现JOY_CHK的0到1的跳变。挺巧秒的。

这篇关于浅析五向按键的硬件设计思想的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/789185

相关文章

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

浅析CSS 中z - index属性的作用及在什么情况下会失效

《浅析CSS中z-index属性的作用及在什么情况下会失效》z-index属性用于控制元素的堆叠顺序,值越大,元素越显示在上层,它需要元素具有定位属性(如relative、absolute、fi... 目录1. z-index 属性的作用2. z-index 失效的情况2.1 元素没有定位属性2.2 元素处

浅析Python中的绝对导入与相对导入

《浅析Python中的绝对导入与相对导入》这篇文章主要为大家详细介绍了Python中的绝对导入与相对导入的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1 Imports快速介绍2 import语句的语法2.1 基本使用2.2 导入声明的样式3 绝对import和相对i

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

C#实现获取电脑中的端口号和硬件信息

《C#实现获取电脑中的端口号和硬件信息》这篇文章主要为大家详细介绍了C#实现获取电脑中的端口号和硬件信息的相关方法,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。那么如果我们使用C#编写软件时候,如

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

如何安装HWE内核? Ubuntu安装hwe内核解决硬件太新的问题

《如何安装HWE内核?Ubuntu安装hwe内核解决硬件太新的问题》今天的主角就是hwe内核(hardwareenablementkernel),一般安装的Ubuntu都是初始内核,不能很好地支... 对于追求系统稳定性,又想充分利用最新硬件特性的 Ubuntu 用户来说,HWEXBQgUbdlna(Har