三.程序设计
1.独立按键扫描程序:
/*****************************************************************
*程序名称:独立按键扫描
*程序功能:按键被按下,相应的指示灯被点亮
*开发工具:WSF-51DB开发板
* MCU型号:AT89S52-24PU
*时钟频率:12MHZ
*程序作者:吴师傅
*版权说明:吴师傅版权所有。转载请注明来源和作者。
*****************************************************************/
#include<reg52.h>
//将P3.7拉低,矩阵键盘上的S1、S2、S3、S4便可作为4个独立按键使用
sbit s1=P3^0;//S1按键的扫描线
sbit s2=P3^1;//S2按键的扫描线
sbit s3=P3^2;//S3按键的扫描线
sbit s4=P3^3;//S4按键的扫描线
sbit com=P3^7;//四个独立按键的公共接地端
//延时ms函数:
void Delayms(unsigned int t)
{
unsigned int i,j;
for(i=t;i>0;i--)
for(j=0;j<120;j++);
}
//按键扫描函数:
unsigned char ScanSingleKey()
{
if(s1==0)//如果s1键按下
{
Delayms(20);//延时消抖
if(s1==0)
while(!s1);//等待松手
return 1;//函数返回键值
}
else if(s2==0)//如果s2键按下
{
Delayms(20);//延时消抖
if(s2==0)
while(!s2);//等待松手
return 2;//函数返回键值
}
else if(s3==0)//如果s3键按下
{
Delayms(20);//延时消抖
if(s3==0)
while(!s3);//等待松手
return 3;//函数返回键值
}
else if(s4==0)//如果s4键按下
{
Delayms(20);//延时消抖
if(s4==0)
while(!s4);//等待松手
return 4;//函数返回键值
}
else return 0;//没有键按下返回0
}
|