首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

按键扫描2

按键扫描2

三.程序设计

1.独立按键扫描程序:

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

*程序名称:独立按键扫描

*程序功能:按键被按下,相应的指示灯被点亮

*开发工具:WSF-51DB开发板

* MCU型号:AT89S52-24PU

*时钟频率:12MHZ

*程序作者:吴师傅

*版权说明:吴师傅版权所有。转载请注明来源和作者。

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

#include<reg52.h>

//将P3.7拉低,矩阵键盘上的S1S2S3S4便可作为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

}

返回列表