打印

复用4×4键盘电路

[复制链接]
2070|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
专业扯把子|  楼主 | 2010-9-6 11:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
设计任务与要求设计
(1)通过功能(拨码)开关设置复用键盘表现为两种使用方式。
(2)一种工作方式呈现4×4矩阵键盘(占用8个口线),另一种工作方式呈现16个单一按键(占用16个口线)。
(3)作为16个单一按键使用时每个按键信号值既可以高电平有效也可以低电平有效。
用什么方法好点   请个位高手指点哈!希望详细点  在此谢谢了!

相关帖子

沙发
jiaozhengcai| | 2010-9-6 13:16 | 只看该作者
4*4的矩阵键盘我们可以使用I/O口中的任意一口,但是一般用PO口就可以了,使用反转法,反转法的优点是m*n个键盘只需要扫描2次。下面是我写的一个带返回参数的子程序,你可以参考一下。(我这里用的是P3口)
uchar keyscan(void)// 键盘扫描函数,使用行列反转扫描法{
uchar cord_h,cord_l;// 行列值
P3=0x0f; //行线输出全为0
cord_h=P3&0x0f; //读入列线值
if(cord_h!=0x0f) //先检测有无按键按下
{
delay(100); //去抖
if(cord_h!=0x0f)
{
cord_h=P3&0x0f; //读入列线值
P3=cord_h|0xf0; //输出当前列线值
cord_l=P3&0xf0; //读入行线值
return(cord_h+cord_l);// 键盘最后组合码值并返回
} }return(0xff); //否则返回固定值0xff
}
16个按键的就是麻烦嘛,你也可以用一个转换开关,把4*4及16键盘弄一块!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

1

粉丝