求矩阵键盘(带节省IO口的芯片)可以实现外部中断的原理图

4*4的矩阵键盘要求节省IO口如74ls165能实现外部中断功能的原理图邮箱:lvshuhaowan@163.com... 4*4的矩阵键盘 要求节省IO口 如74ls165 能实现外部中断功能的原理图 邮箱:lvshuhaowan@163.com 展开
 我来答
手机用户48546
2011-08-12 · TA获得超过991个赞
知道小有建树答主
回答量:1155
采纳率:100%
帮助的人:740万
展开全部
按键扫描,把I/0口的高低位相加
void Keyscan(void)
{
uchar r, c,key_value;

KEY_DATA = 0xf0; // 发全0行列扫描码,列线输入
key_value=KEY_DATA;

if( key_value!= 0xf0) // 若有键按下
{
delay_ms(4);
if(key_value!=0xf0)
{
r=key_value; //保存行输入码
KEY_DATA=0x0f; // 发全0行列扫描码,列线输入
key_value=KEY_DATA;
if(key_value!=0x0f) // 若有键按下
{
c=key_value; //保存列输入码
}
//键盘编码
}
key=(r+c);
}
}
利用上面所加的结果,生成键码表,S=0到S=15,
在主函数中,依据S的值做你想完成的操作
uchar KeyDeal(uchar Key)
{

if(Key!=0)
{

switch(Key)
{

case 0xe7: S=0; break;
case 0xeb: S=1; break;
case 0xed: S=2; break;
case 0xee: S=3; break;
case 0xd7: S=4; break;
case 0xdb: S=5; break;
case 0xdd: S=6; break;
case 0xde: S=7; break;
case 0xb7: S=8; break;
case 0xbb: S=9; break;
case 0xbd: S=10; break;
case 0xbe: S=11; break;
case 0x77: S=12; break;
case 0x7B: S=13; break;
case 0x7D: S=14; break;
case 0x7E: S=15; break;

}

}

return (S); // 返回键编码
}
百度网友56d0baa
2011-08-13 · TA获得超过1138个赞
知道小有建树答主
回答量:500
采纳率:0%
帮助的人:478万
展开全部
用SPI接口的键盘和数码管控制芯片即可解决,节省IO,简化程序,提高可靠性,适当增加成本。
比如ZLG7219等等。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2080aee7d
2011-08-12 · TA获得超过320个赞
知道小有建树答主
回答量:255
采纳率:0%
帮助的人:126万
展开全部
上面很对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式