技术热线: 4007-888-234
设计开发

专注差异化嵌入式产品解决方案 给智能产品定制注入灵魂给予生命

开发工具

提供开发工具、应用测试 完善的开发代码案例库分享

技术支持

从全面的产品导入到强大技术支援服务 全程贴心伴随服务,创造无限潜能!

新品推广

提供新的芯片及解决方案,提升客户产品竞争力

新闻中心

提供最新的单片机资讯,行业消息以及公司新闻动态

利用单个IO口实现多个按键输入

更新时间: 2019-03-26
阅读量:6120

单片机应用中,经常要用到按键输入,在有较多按键输入的情况下,通常会使用矩阵式扫描方法来完成,例如对于16 个按键输入的场合,会使用4 × 4 矩阵键盘,这需要占用较多的I/O口(如8 个),而对于单片机来说,其I/O 口资源非常有限,当I/O 口资源紧缺时,只好选用成本更高的具有更多I/O 口的单片机来使用,本文介绍一种只用一个I/O 口实现多按键输入的方法。对于使用一个I/O 口来实现多按键输入,有个前提条件,就是这个I/O 口具有A/D 转换功能,只要使不同的键按下时,A/D 转换输人端的电压不同,就可识别出所按的键,其电路如下图所示:在无键按下时,I/O 口端电压为电源电压Vcc,当S1 键按下时,I/O 口端电压最低,是电阻R1 和R2 的分压,当S2 键按下时,I/O 口端电压变高,是电阻R1 和(R2+R3)的分压,同理,当S3、S4 按下时,电压会更高,通过对该I/O 口的A/D 转换值的大小进行判断,就可以得知所 按下的哪一个键。

           图中只列出了4 个按键的例子,在实际使用中,适当调整电阻值,可使按键数增加很多,在8 A/D 转换中,理论按键数可以达到255,单片机最小可识别电压为(单片机电源为VCC)VCC/255,但考虑到干扰问题,一般建议各按键之间保证有0.1V以上的电压差,按此要求一个I/O口能最大扩展到50个按键。