单片机
返回首页

51单片机程序——4乘4矩阵键盘使用方法

2016-01-22 来源:eefocus

#include
 
#define uint unsigned int
#define uchar unsigned char
#define dula P0 
#define wela P1 
 
unsigned char code DuanMa[]={0xc0,0xf9,0xa4,0xb0, 
                    0x99,0x92,0x82,0xf8, 
                    0x80,0x90,0x88,0x83,
    0xa7,0xa1,0x86,0x8e,0xff};
 
uchar num,temp;
 
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
 
uchar keyscan();
void display(uchar aa);
 
void main()
{
num=16;
while(1)
{
display(keyscan());
}
}
 
void display(uchar aa)
{
wela=0xff;
dula=DuanMa[aa];
}
 
uchar keyscan()
{
P2=0xef;
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)                 //确认是否按下
{
delay(5);
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)
{
temp=P2;
switch(temp)
{
case 0xee:num=0;
     break;
case 0xed:num=1;
     break;
case 0xeb:num=2;
     break;
case 0xe7:num=3;
     break;
}
while(temp!=0x0f)          //松手检测
{
temp=P2;
temp=temp&0x0f;
}
}
 
}
P2=0xdf;
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)
{
delay(5);
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)
{
temp=P2;
switch(temp)
{
case 0xde:num=4;
     break;
case 0xdd:num=5;
     break;
case 0xdb:num=6;
     break;
case 0xd7:num=7;
     break;
}
while(temp!=0x0f)
{
temp=P2;
temp=temp&0x0f;
}
}
 
}
P2=0xbf;
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)
{
delay(5);
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)
{
temp=P2;
switch(temp)
{
case 0xbe:num=8;
     break;
case 0xbd:num=9;
     break;
case 0xbb:num=10;
     break;
case 0xb7:num=11;
     break;
}
while(temp!=0x0f)
{
temp=P2;
temp=temp&0x0f;
}
}
 
}
P2=0x7f;
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)
{
delay(5);
temp=P2;
temp=temp&0x0f;
while(temp!=0x0f)
{
temp=P2;
switch(temp)
{
case 0x7e:num=12;
     break;
case 0x7d:num=13;
     break;
case 0x7b:num=14;
     break;
case 0x77:num=15;
     break;
}
while(temp!=0x0f)
{
temp=P2;
temp=temp&0x0f;
}
}
 
}
return num;
}

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • 如何构建一个触摸传感器电路

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章