设计一个4X4的矩阵键盘,键盘的号码0~15,要求编写出一个键盘输入扫描程序,要求单片机能根据键盘排列顺序,能将按下去键盘号正确识别出来,并采用两个数码管分别键盘号码的个位和十位。
实验参考电路图如下:
参考代码:
#include<reg51.h> //包含51单片机寄存器定义的头文件
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
unsigned char code Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数字0~9的段码
unsigned char keyval;
/**************************************************************
函数功能:数码管动态扫描延时
**************************************************************/
void led_delay(void)
{
unsigned char j;
for(j=0;j<200;j++)
;
}
/**************************************************************
函数功能:按键值的数码管显示子程序
**************************************************************/
void display(unsigned char k)
{
P2=0xbf;
P0=Tab[k/10];
led_delay();
P2=0x7f;
P0=Tab[k%10];
led_delay();
}
/**************************************************************
函数功能:软件延时子程序
**************************************************************/
v