注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
sailorli123的个人空间 https://home.eeworld.com.cn/space-uid-217996.html [收藏] [复制] [分享] [RSS]
日志

浅谈按键子程序续

已有 820 次阅读2010-5-25 11:30

2、4*4矩阵按键扫描
假设P3端口低四位是列线,高四位是行线;P0为数码管段码入口;
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
uchar code table[][]={};
void delay();
uchar kbscan()
{
uchar hang,lie,key;
if(P3!=0x0f)
{
delays();
}
if(P3!=0x0f)
{
switch(P3^0x0f)
{
case 1:lie=0;break;
case 2:lie=1;break;
case 4:lie=2;break;
case 8:lie=3;break;
}
P3=0xf0;
switch(P3>>4^0x0f)
{
case 1:hang=0;break;
case 2:hang=1;break;
case 4:hang=2;break;
case 8:hang=3;break;
}
P3=0x0f;
while(P3!=0x0f);
key=table[hang][lie];
}
else key=0;
return(key);
}
void main()
{
uchar temp;
P3=0x0f;
P0=0xff;
while(1)
{
temp=kbscan();
if(temp!=0)
{
P0=temp;
.......
}
}
}
以上是我在学习51单片机过程中的一些子程序的总结,有些延时子程序没有写出,重点是按照自己的思路去理解按键是如何识别的,如有错误,请批评指正
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章