在基于微控制器(MCU)的项目中,矩阵式键盘常被用作输入设备。将矩阵键盘连接至微控制器的常规做法需使用微控制器的多个I/O引脚。然后MCU运用扫描算法来确认按住了哪些键。这种办法的一个弊端就是需要大量MCU的I/O引脚来连接键盘。例如,连接一个4×3键盘需7个数字I/O引脚。而当项目采用的是低引脚数MCU,或使用的MCU不具备足够的可用I/O引脚数时,就出现了问题。
对于这一问题,有两个解决办法:使用现成的I/O扩展器,或用一只电阻排,为每个键设定一个唯一的电压,然后使用模拟引脚来读取电压值,判断按住了哪个键。每个方案都有其不足之处。
由于在大多数情况下,I/O扩展器需通过特殊的通信协议(如I2C协议或SPI协议)来读写数据,MCU需要具备内置通信模块,或用户需实现相关的通信协议软件,而这明显增加了MCU的负担。另一方面,当按键数量增加时,通过电阻排给各按键分配独特电压会变得很繁琐,而这最终将导致电压裕度较小。此外,由于电阻值会随温度而变化,使用较小的电压裕度可能导致读取错误,甚至连开关弹跳都可能成为导致电压出错的重要原因。这种方法的另一个弊端是要求MCU中有模拟输入引脚。这里描述的实例显示出能够高效解决上述所有问题的办法,及其具备的几个优势:它只需要两只I/O引脚,而不论连接的开关数量有多少;不需要特别的通信协议;不需要模拟引脚。本实例基于两个CD4017约翰逊计数器,这种计数器很常见而且不贵。
图1显示出4×3键盘采用的电路。R1、R4、R5和R6用于限流,D7、D4、D5和D6构成一个“或”门。
这里描述的例子显示出如何采用这种方法来读取4×3键盘。其中一个CD4017被用来控制键盘行,另一个控制键盘列。
MCU生成时钟信号,然后将其供给控制列的计数器IC。起初,列计数器和行计数器的第0个输出处于逻辑高位。在收到时钟脉冲后,列计数器将增加。在收到第四个时钟脉冲时,列计数器将重置,并同时将行计数器增加1。在列控制器重置后,行控制器增加,并在收到第五个来自列控制器的时钟脉冲后重置。在生成时钟脉冲的同时,应增加MCU的计数变量,并且在第五个时钟脉冲到达行控制器时,将计数变量重置为1。键盘的两个输出做“或”运算,并连接到MCU的一个外部中断引脚。
只有当行和列的相关按钮均处于逻辑高位,一个按钮被按下时才会发生中断。如果按钮的行或列处于逻辑零值,则不会发生中断。
中断发生时,MCU读取当时的计数值,所读取的值即对应于刚按下的按钮。
当MCU每隔一段时间产生时钟脉冲时,MCU内的时钟计数增加;这一计数等于键盘上的开关数目,按下这些开关时可造成中断。图2中的流程图描述了这一情况。
注意:虽然本例仅展示了4×3键盘的读取方法,但可以用两个4017计数器的剩余输出来读取10×10键盘。另外,必要时,还可以级联更多的4017IC来扩展键盘。
关键字:IO引脚 矩阵键盘 微控制器
引用地址:
使用两个I/O引脚将4×3矩阵键盘连接至微控制器
推荐阅读最新更新时间:2024-03-16 13:26
详解寻线行走机器人设计与实现
在最近的机器人比赛和电子设计竞赛中,较多参赛题目要求机器人沿场地内白色或黑色指引线行进。一些研究人员提出了基于寻线的机器人设计策略,主要是关注指引线的检测,但对于机器人的整体设计未做说明。本文在总结此类赛事的基础上,提出了一种将DSP(Digital Signal Processor)和CPLD(Complex Programmable Logic Device)作为核心处理器,采用模糊控制策略处理来自检测指引线传感器信号的机器人行走机构的通用性设计方法。 1 车体机械设计 由于机器人比赛对参赛机器人有严格的尺寸限制,需要在有限的空间内合理安排各个机构。本文给出车体最小尺寸时驱动轮、光电传感器以及控制芯片之间的相
[单片机]
华为借力ST导入上汽,MCU核心技术突破在那些地方呢?
两个月前,华为联合意法半导体(ST)共同进行芯片开发开始被外界所熟知,双方除智能手机外,将重点涉及自动驾驶领域等汽车领域的芯片开发。 随后不到一个月,上汽MAXUS(迈克萨斯) EUINQ 系列上市,其动力系统采用了华为电机控制系统和“三合一”充配电单元,智能驾驶系统也使用了华为的控制器,其芯片正是来自ST。 行业人士表示,华为和ST从去年开始联合开发芯片,只是外界知道的比较晚,和ST合作开发芯片有助于华为更好地开展汽车领域的技术布局,以摆脱对特定芯片供应商的依赖,为其在汽车领域的布局加强筹码。据悉,华为去年成立了智能汽车解决方案事业部,先后和奥迪、比亚迪、上汽等车企签订了合作协议,瞄准智能电动、智能车云、智能座舱、智能网联和智能
[手机便携]
基于单片机和无线加密技术实现汽车中央门锁系统的设计
汽车门锁有开锁、闭锁两种状态,闭锁时通过内外把手无法打开车门。中央门锁控制装置:是控制门锁状态的电气设备,在汽车电器中属于安全、舒适系统。一般工作原理可用图1来说明:当旋转车钥匙或拉动门提会带动锁止机构运动,带动状态开关K,和K2动作,电容C1(或C2)放电,继电器J1(或J2)吸合,执行电动机M1(或M2)通电带动锁止机构动作。放完电后继电器释放,电动机停止,闭锁过程自动完成。将汽车所有车门(包括行李厢)的执行电动机连在一起,同时动作,以实现门锁集中控制,使用很方便。图1为原理性电路,实际电路和执行装置多种多样,但原理大同小异,其目的都为实现门锁的集中控制。随着技术发展和汽车舒适性需求提高,以手动控制电路为基础,以单片机控制技术
[单片机]
AVR单片机定时/计数器学习笔记(三)
定时/计数器1(16位)有普通模式、CTC模式、快速PWM模式、相位修正PWM模式等工作模式。 3.快速PWM模式(需要用到OC1A、OC1B两个引脚) 前提:由TCCR1B的bit4、bit3和TCCR1A的bit1、bit0组合来设置波形产生模式为模式15(快速PWM )。 (1)TCCR1A的bit7、bit6用于设置OC1A脚的比较输出模式,bit5、bit4用于设置OC1B脚的比较输出模式。(此处我们设为,OC1A比较匹配时取反;OC1B比较匹配时清零,TOP时置位) (2)TCCR1B的bit2、bit1、bit0设置时钟频率。 (3)OCR1A用来设置计数的上限值,OCR1B用来设置
[单片机]
单片机硬件系统7个设计原则
一个单片机硬件系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统的配置,即按照系统功能要求配置外围设备,如键盘、显示器、打印机、A/D、D/A转换器等,要设计合适的接口电路。 系统的扩展和配置应遵循以下原则: 1、尽可能选择典型电路,并符合单片机硬件系统常规用法。为硬件系统的标准化、模块化打下良好的基础。 2、系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发。 3、硬件结构应结合应用软件方案一并考虑。硬件结构与软件方案会产生相互影响
[单片机]
ST汽车微控制器Stellar系列产品细节公布,架构升级
半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)公布了其创新的汽车微控制器Stellar(恒星)系列的进一步产品细节,介绍了新微控制器如何确保多个独立实时应用软件的运行可靠性和确定性,这是当今汽车行业面临的最严峻挑战之一,因为新汽车架构的复杂性需要把多个独立应用系统整合到一个功能强大的高集成度MCU上,并且通常涉及确定性和虚拟化二选一的问题。而Stellar可以做到两者兼备。 作为这种新型控制器的先驱产品,Stellar高集成度MCU具有卓越的计算能力,可大幅简化多源软件并行确定性运行,同时确保最高的安全性和处理性能。这些功能符合下一代网联汽车的电气/电子(E/E)体系
[嵌入式]
51单片机定时器0中断服务程序
51单片机定时器0工作在模式0,每中断10次,使P2.0引脚连接的LED灯闪烁。 //单片机网www.51hei.com提供的演示程序. #include "reg_c51.h" int nn; //中断次数变量 void main(void) { TMOD &= 0xF0; //定时器0运行在模式0 ,13位计数器 // GATE0=0; C/T0#=0; M1=0; M0=0; TH0 = 0x00; //设置初值0x00,所以计数值为8192,若是时钟频率为12MHz TL0 = 0x00; //则8192μs中断一次 ET0=1; //允许定时器0中断 EA=1; //允许总中断
[单片机]
使用电容器降低MCU的电源噪声
STM32是广泛应用的MCU,涵盖Cortex-M0、M3、M4和M7内核,共有1236多个系列,包含STM32主流MCU、STM32高性能MCU、STM32超低功耗MCU、STM32无线MCU、STM32 Arm Cortex MPUs等门类。 STM32 MCU内置高级12位ADC(取决于器件),提供自校准功能。在涉及模数转换的应用中,ADC精度会影响整体的系统质量和效率。而ADC精度不仅取决于ADC性能和功能,还取决于ADC周围的整体应用设计,例如电源噪声,这些恰恰可以能通过电容器过滤掉。 在电源线和地线之间,建议连接具有优良高频特性的电容。也就是说,应在靠近电源的位置安装一个0.1μF和一个1至10μF的电容,这些
[单片机]