矩阵键盘程序c程序,51单片机./*编译环境:Keil 7.50A
c51
*/
/*******************************************************/
/*********************************包含头文件********************************/
#include
/*********************************数码管表格********************************/
unsig...
/*编译环境:Keil 7.50A
c51
*/
/*******************************************************/
/*********************************包含头文件********************************/
#include
/*********************************数码管表格********************************/
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=0xfe;
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(3);break;
case(0xd0):display(2);break;
case(0xb0):display(1);break;
case(0x70):display(0);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(7);break;
case(0xd0):display(6);break;
case(0xb0):display(5);break;
case(0x70):display(4);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(11);break;
case(0xd0):display(10);break;
case(0xb0):display(9);break;
case(0x70):display(8);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(15);break;
case(0xd0):display(14);break;
case(0xb0):display(13);break;
case(0x70):display(12);break;
}
}
}
}
/****************************************************************************
函数功能:主程序
入口参数:
出口参数:
****************************************************************************/
void main(void)
{
while(1)
{
keyscan();
}
}
本文档为【矩阵键盘程序c程序,51单片机.】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。