节约单片机端口资源的键盘电路

论坛 期权论坛 脚本     
匿名技术用户   2021-1-5 13:09   36   0

当键盘按键少于4个时,通常采用独立式接法。但当需要管理键盘的数目增加时,独立式这种简单的接法显然就不适用了。

一般单片机的书上通常会介绍另一种扫描式的方法:用8个I/O口控制16按键。虽然有所优化,但占用的端口资源仍然比较多。


但占用的端口资源仍然比较多。

下面介绍一个只需要用3个端口,就能控制16个按键的十分巧妙的接法。

原理图如下:

原理图如下

驱动程序如下:

/*********************************************************************************************/

unsigned chargetkey(void)

{

unsigned char x;

P1|=0x07;

x=P1&0x07;

if(x==0x07) /*判断K0-K6是否有键按下,如果没有,检测K7-K15*/

{

P1&=0xfe;x=P1&0x07;x=x/2+7;

if(x==10)

{

P1|=0x07;P1&=0xfd;x=P1&0x07;x=(x+1)/2+10;

if(x==13)

{

P1|=0x07;P1&=0xfb;x=P1&0x07;x+=13;

}

}

}

return(x);

}

//返回的X为相应的键盘值,如果没有键按下,则返回16

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP