单片机实验:矩阵式键盘输入识别
1.实验内容
编写 c 语言程序,设计一个 4X4 的矩阵键盘,键盘的号码 0~15,要求编写出一个键盘输入扫描程序,要求单片机能根据键盘排列顺序,能将按下去键盘号正确识别出来,并采用两个数码管分别键盘号码的个位和十位。
2.Proteus参考电路图
3.实验程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit L1=P1^0;
sbit L2=P1^1;
sbit L3=P1^2;
sbit L4=P1^3;
sbit L5=P3^0;
uchar dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar key;
uint time;
void delay(time)
{
uint j;
for(j=0;j<time;j++);
}
void display(uchar k)
{
L5=0;
delay(5);
L5=1;
P0=dis[k/10];
delay(5);
P2=dis[k%10];
}
void main()
{
uchar temp;
uchar i;
key=0x00;
while(1)
{
P1=0xef;
for(i=0;i<=3;i++)
{
if(L1==0)
{
key=0+4*i;
}
if(L2==0)
{
key=1+4*i;
}
if(L3==0)
{
key=2+4*i;
}
if(L4==0)
{
key=3+4*i;
}
delay(500);
temp=P1;
temp=temp|0x0f;
temp=temp<<1;
temp=temp|0x0f;
P1=temp;
}
display(key);
}
}