判断按键值_单片机IO口不够用,如何用一根线识别16个按键?方法原来在这里!...

针对单片机IO口资源有限的问题,本文介绍了如何通过AD转换接口识别16个按键,减少IO口的使用。电路设计关键在于AD转换结果的高四位反映出按键状态。使用C8051F410单片机的程序示例展示了读取和处理AD值的过程,但这种方法可能导致长时间使用后的焊点虚焊,影响识别准确性。
摘要由CSDN通过智能技术生成

学过单片机的都知道,按键在开发项目中是必不可缺少的东西,而大多数人都是采用行列式来识别矩阵键盘,这样很容易浪费IO口资源,不利于大型项目的开发。

5fcdadadcf744014187f6317e80fa867.png

这里介绍一种用AD转换接口来识别键盘的方法,由于现在的大多数单片机都带A/D转换,这样使用起来就方便多了,电路图如下图所示:

4430c75f8f397106fd942615f5821a66.png

单片机只要识别AD转换结果的高四位就行。这里设计的关键就在于各段的电压变化只影响A/D转换结果的高四位。上边的VCC是接的AD的参考电压。

例如:一个12位的AD,读出的结果是0x0E08,那么这个按键就是15。下边是用C8051F410单片机识别的程序

void anjianshibie() //按键识别函数

{

unsigned int ad_val;

ad_val=Adc_410( ); //读出一个AD值

while(ad_val<0x0f88) //这里避免上限电压,如果不加这一句识别的按键永远是F

{

delayms(10); //延时消抖

ad_val=Adc_410( ); //再次判断

if(ad_val<0x0f88)

{

Key_AD=(unsigned char)(ad_val>>8)&0x0f; //读出按键值(高4位)

Display_5((uint)Key_AD);} //显示按键

}

}

下面是PCB设计图片和制作图片。不过这种识别键盘的方法有利也有弊,唯一缺点是使用长时间会造成焊点虚焊,一个焊点虚焊就会影响整个按键识别的准确度。以前的显像管电视就是采用这种识别键盘的办法,只要有一个按键接触不良其他按键就会乱识别,常常是按着音量加它就换台。

3d35ad612a589fc44068c0ee56b28992.png

PCB

2226a8f1293b6253287cf279723bf518.png
4f7b6a166cf13cc9e4920fb625b5c888.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值