基于51单片机4乘4矩阵键盘的设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
unsigned char KEY=0xff;
void keyscan(void)
{
unsigned char a,b;
P2=0xf0;//高四位作为输入(高电平),低四位输出低电平
a=P2;//读高四位
P2=0x0f; //反转,低四位作为输入,高四位输出低电平
b=P2;//读低四位
P2=0x0f;
b=P2;
a=a|b;
switch(a)
{
case 0xee:KEY=0;break;
case 0xdeΒιβλιοθήκη BaiduKEY=1;break;
case 0xbe:KEY=2;break;
case 0x7e:KEY=3;break;
case 0xed:KEY=4;break;
case 0xdd:KEY=5;break;
{
P0=0xff;
P1=led[n-8];
}}
int main(void)
{
while(1)
{
keyscan();
display(KEY);
}
return 0;
}
更多资源,请关注微博“风竹弈星”,私聊。
case 0xbd:KEY=6;break;
case 0x7d:KEY=7;break;
case 0xeb:KEY=8;break;
case 0xdb:KEY=9;break;
case 0xbb:KEY=10;break;
case 0x7b:KEY=11;break;
case 0xe7:KEY=12;break;
控制任务:
编程实现4乘4的矩阵键盘控制连接在P0口和P1口上的16个LED,当按下某键并释放后只有对应的LED灯亮,例如按S0后D0亮,按S1后D1亮。
程序及仿真:
#include<reg51.h>
unsigned char code led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
case 0xd7:KEY=13;break;
case 0xb7:KEY=14;break;
case 0x77:KEY=15;break;
default:break;}}
void display(unsigned char n)
{
if(n<8)
{
P0=led[n];
P1=0xff;}
else if(n>=8&&n<=16)
void keyscan(void)
{
unsigned char a,b;
P2=0xf0;//高四位作为输入(高电平),低四位输出低电平
a=P2;//读高四位
P2=0x0f; //反转,低四位作为输入,高四位输出低电平
b=P2;//读低四位
P2=0x0f;
b=P2;
a=a|b;
switch(a)
{
case 0xee:KEY=0;break;
case 0xdeΒιβλιοθήκη BaiduKEY=1;break;
case 0xbe:KEY=2;break;
case 0x7e:KEY=3;break;
case 0xed:KEY=4;break;
case 0xdd:KEY=5;break;
{
P0=0xff;
P1=led[n-8];
}}
int main(void)
{
while(1)
{
keyscan();
display(KEY);
}
return 0;
}
更多资源,请关注微博“风竹弈星”,私聊。
case 0xbd:KEY=6;break;
case 0x7d:KEY=7;break;
case 0xeb:KEY=8;break;
case 0xdb:KEY=9;break;
case 0xbb:KEY=10;break;
case 0x7b:KEY=11;break;
case 0xe7:KEY=12;break;
控制任务:
编程实现4乘4的矩阵键盘控制连接在P0口和P1口上的16个LED,当按下某键并释放后只有对应的LED灯亮,例如按S0后D0亮,按S1后D1亮。
程序及仿真:
#include<reg51.h>
unsigned char code led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
case 0xd7:KEY=13;break;
case 0xb7:KEY=14;break;
case 0x77:KEY=15;break;
default:break;}}
void display(unsigned char n)
{
if(n<8)
{
P0=led[n];
P1=0xff;}
else if(n>=8&&n<=16)