独立键盘、矩阵键盘
键盘
一、实验任务 1、 单片机8个I/O口检测16个按键并用数码管显示
2、 独立键盘K1控制数码管的显示值步进
二、电路图 三、C51程序 1、矩阵键盘 #include
#define uint unsigned int
#define uchar unsigned char
sbit ledk=P2^5;
sbit smgdl=P2^6;
sbit smgwl=P2^7;
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
void delay(uint a)
{
uint b;
uchar c;
for(b=a;a>0;a--)
for(c=100;c>0;c--);
}
void display_smg(uchar smg,uchar value)
{
uchar code tablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
uchar code
tabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x7
1};
smgwl=1;
P0=tablewe[smg];
smgwl=0;
smgdl=1;
P0=tabledu[value];
smgdl=0;
delay(10);
}
uchar key_press()
{
uchar key;
P3=0xf0;
key=P3;
key=key&0xf0;
if(key==0xf0)
{
return 0;
}
else
{
return 1;
}
}
uchar key_scan()
{
uchar key_num;
if(key_press())
{
P3=0xfe;
key_num=P3;
switch(key_num)
{
case 0xee:
return 0;
break;
case 0xde:
return 1;
break;
case 0xbe:
return 2;
break;
case 0x7e:
return 3;
break;
}
P3=0xfd;
key_num=P3;
switch(key_num)
{
case 0xed:
return 4;
break;
case 0xdd:
return 5;
break;
case 0xbd:
return 6;
break;
case 0x7d:
return 7;
break;
}
P3=0xfb;
key_num=P3;
switch(key_num)
{
case 0xeb:
return 8;
break;
case 0xdb:
return 9;
break;
case 0xbb:
return 10;
break;
case 0x7b:
return 11;
break;
}
P3=0xf7;
key_num=P3;
switch(key_num)
{
case 0xe7:
return 12;
break;
case 0xd7:
return 13;
break;
case 0xb7:
return 14;
break;
case 0x77:
return 15;
break;
}
}
}
void main()
{
uchar i,j;
while(1)
{ i=key_press();
if(i==1)
display_smg(0,key_scan());
}
}
3、 独立键盘
#include
#define uint unsigned int #define uchar unsigned char sbit ledk=P2^5;
sbit smgdl=P2^6;
sbit smgwl=P2^7;
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
void delay(uint a)
{
uint b;
uchar c;
for(b=a;a>0;a--)
for(c=100;c>0;c--); }
void display_smg(uchar smg,uchar value)
{
uchar code tablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
uchar code
tabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x7
1};
smgwl=1;
P0=tablewe[smg];
smgwl=0;
smgdl=1;
P0=tabledu[value];
smgdl=0;
delay(10);
}
void main()
{ uchar i;
i=0;
while(1)
{
if(key1==0)
{
delay(10);
if(key1==0)
i++;
if(i==10)
i=0;
while(key1!=1);
display_smg(0,i);
}
}
}
本文档为【独立键盘、矩阵键盘】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。