⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 矩阵键盘.c

📁 按一个键显示相应的数字
💻 C
字号:
/****************************************/
/*               楼宇0711 		*/
/*       http://www.bloglcz.ccoo.cn     */
/*             综合演示程序 		*/
/*	     目标器件:AT89C51		*/
/*	      晶振:11.0592MHZ		*/
/*          编译环境:Keil C51		*/
/****************************************/

#include<reg51.h>

/*********************************数码管表格********************************/

unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,

0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

/****************************************************************************

函数功能:延时子程序

入口参数:

出口参数:

****************************************************************************/

void delay(void)

{

unsigned char i,j;

for(i=0;i<20;i++)

for(j=0;j<250;j++);

}

/****************************************************************************

函数功能:LED显示子程序

入口参数:i

出口参数:

****************************************************************************/

void display(unsigned char i)

{

P2=0x01;

P0=table[i];

}

/****************************************************************************

函数功能:键盘扫描子程序

入口参数:

出口参数:

****************************************************************************/

void keyscan(void)

{

unsigned char n;

//扫描第一行

P1=0xfe;

n=P1;

n&=0xf0;

if(n!=0xf0)

{

delay();

P1=0xfe;

n=P1;

n&=0xf0;

if(n!=0xf0)

{

switch(n)

{

case(0xe0):display(0);break;

case(0xd0):display(1);break;

case(0xb0):display(2);break;

case(0x70):display(3);break;

}

}

}

//扫描第二行

P1=0xfd;

n=P1;

n&=0xf0;

if(n!=0xf0)

{

delay();

P1=0xfd;

n=P1;

n&=0xf0;

if(n!=0xf0)

{

switch(n)

{

case(0xe0):display(4);break;

case(0xd0):display(5);break;

case(0xb0):display(6);break;

case(0x70):display(7);break;

}

}

}

//扫描第三行

P1=0xfb;

n=P1;

n&=0xf0;

if(n!=0xf0)

{

delay();

P1=0xfb;

n=P1;

n&=0xf0;

if(n!=0xf0)

{

switch(n)

{

case(0xe0):display(8);break;

case(0xd0):display(9);break;

case(0xb0):display(10);break;

case(0x70):display(11);break;

}

}

}

//扫描第四行

P1=0xf7;

n=P1;

n&=0xf0;

if(n!=0xf0)

{

delay();

P1=0xf7;

n=P1;

n&=0xf0;

if(n!=0xf0)

{

switch(n)

{

case(0xe0):display(12);break;

case(0xd0):display(13);break;

case(0xb0):display(14);break;

case(0x70):display(15);break;

}

}

}

}

/****************************************************************************

函数功能:主程序

入口参数:

出口参数:

****************************************************************************/

void main(void)

{

while(1)

{

keyscan();

}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -