导航:首页 > 操作系统 > 52单片机键盘

52单片机键盘

发布时间:2023-08-17 02:34:06

‘壹’ 52单片机按键0x7f什么意思

0X7F就是十六位进制数7F转换成十进制的就是127,转换成二进制是1111111

‘贰’ 求用52单片机实验板实现4*4键盘及数码管动态扫描显示的程序

#include <reg52.h>
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
sbit la=P2^6;
sbit wela=P2^7;
uchar keyscan();
uchar num,temp,num1;
void delay(uchar z)
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
num=17;
la=1;
P0=0;
la=0;
wela=1;
P0=0xc0;
wela=0;
while(1)//每次按下都是 所以while循环
{
num1=keyscan();
la=1;
P0=table[num1-1];
la=0;
}
}
uchar keyscan()
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0); //必须用if啊
{
delay(5);//消抖再判断
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0) //必须用if啊
{
temp=P3;
switch(temp)
{
case 0xee:num=1;break;
case 0xde:num=2;break;
case 0xbe:num=3;break;
case 0x7e:num=4;break;
}
while(temp!=0xf0)// 松手检测 松手数字才变化 必须用while 不松手不显示 不松手下一排键盘没用 一直在while内循环 放在第二个if内
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
delay(5);//消抖再判断
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
temp=P3;
switch(temp)
{
case 0xed:num=5;break;
case 0xdd:num=6;break;
case 0xbd:num=7;break;
case 0x7d:num=8;break;
}
while(temp!=0xf0)//松手检测 松手数字才变化 必须用while
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
delay(5);//消抖再判断
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
temp=P3;
switch(temp)
{
case 0xeb:num=9;break;
case 0xdb:num=10;break;
case 0xbb:num=11;break;
case 0x7b:num=12;break;
}
while(temp!=0xf0)//松手检测 松手数字才变化 必须用while
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
delay(5);//消抖再判断
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0);
{
temp=P3;
switch(temp)
{
case 0xe7:num=13;break;
case 0xd7:num=14;break;
case 0xb7:num=15;break;
case 0x77:num=16;break;
}
while(temp!=0xf0)//松手检测 松手数字才变化 必须用while
{
temp=P3;
temp=temp&0xf0;
}
}
}
return num;
}

‘叁’ 52单片机独立按键控制LED流水灯

怎么个控制法,按一下,流水灯停下,再按一下开始,

还是按一下对应亮一个或亮下一个

还是想知道怎么用按键

教你用按键的方法,功能你自己去实现。把io口拉高电平后,接按键,如果按键按下,会接地,读出的io口电平会变为低,这样就可以判断说法按下按键,但要一直重复读取io口数据,而且要防抖动。


unsignedinttemp,k=9;
P2=0xff;//用P2检测键盘
temp=P2;
temp=temp&0xff;
if(temp!=0xff)//接地了,有按下
{
delayxms(10);//等键盘稳定,以确认不是误按、抖动
temp=P2;//再次检测
temp=temp&0xff; //防抖,确认是按下
if(temp!=0xff)//确认不是误按、抖动
{
switch(temp)
{
case0xfe:k=0;break;
case0xfd:k=1;break;//不同情况做出不同处理,变为0的是按下的键
case0xfb:k=2;break;
case0xf7:k=3;break;
case0xef:k=4;break;
case0xdf:k=5;break;
case0xbf:k=6;break;
case0x7f:k=7;break;
}
}
}

‘肆’ 用52单片机的4x4矩阵键盘的前八个键分别控制8个LED灯

#include "reg51.h"
#define uchar unsigned charconst tab[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d};
const uchar led[]={0x01,0x01,0x04,0x08,0x10,0x20,0x40,0x80};
void delay()
{
uchar i;
for(i=0;i<10;i++){;}
}
void keyscan()
{
uchar a,b,c,i;
P3=0x0f;
a=P3;
delay();
P3=0xf0;
b=P3;
delay();
c=a+b; for(i=0;i<8;i++)
if(c==tab[i]) P2=led[i];
if(c==0xeb) P2=0xff;
}
void main()
{ P2=0x00; while(1)
{
keyscan();
}
}

阅读全文

与52单片机键盘相关的资料

热点内容
亿赛通加密软件好用吗 浏览:576
为什么光遇排队服务器忙 浏览:824
哪个app能把手p瘦 浏览:251
java中的date类型 浏览:429
面向程序员的范畴论 浏览:55
如何查询服务器所有电脑名 浏览:900
shell命令jar 浏览:301
有什么做手帐app 浏览:156
phpjquery源码 浏览:886
大话西游手游源码 浏览:655
javaudp代码 浏览:660
linuxu盘启动win7 浏览:990
如何启用交换机dhcp服务器 浏览:237
三田汽车压缩机好吗 浏览:294
马蜂窝app偏向什么客户 浏览:366
php简单的登录注册 浏览:554
我们接到上级命令 浏览:349
php本周星期一 浏览:65
裘锡圭pdf 浏览:727
android模拟器调试 浏览:135