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

📄 key1.c

📁 电子开发网培训用的51单片机内部培训代码
💻 C
字号:
//****************************************************
//实现功能:本程序实现把键盘的输入码型按二进制的方式在
//          p0口显示,若果没有按键按下P0的灯全部亮
//目标板:至强51开发板
//开发商  :电子开发网www.dzkf.com (专业提供开发方案,
//          电子元器件网上订购,单片机培训服务)
//对开发板有什么疑问,请上我们的论坛bbs.dzkf.com探讨
//****************************************************  
#include <reg51.h>
//********************宏定义**************************
#define p_key P1//宏定义键盘接口是P1
//****************************************************

//******************时间延迟函数**********************
//描  述:用指令实现延时一段时间
//入口参数:int i,为时间延迟参数
//出口参数:无
//设计人:ycj
//最后修改:时间(2006.4.24)  修改人(ycj)
//****************************************************
void delay_time(int i)
{
 while(i)
  i--;
}
//******************按键扫描函数**********************
//描    述:对4*4键盘进行扫描,程序只适合4*4键盘使用,
//	    键盘占用一组完整的i/o口,在使用这个程序前
//	    要宏定义p_key为用户实际连接键盘的i/o口 
//	    #define p_key Pn;//(n=0、1、2、3)
//入口参数:无
//返回参数:若有检测到按键就返回按键的编号,否则返回0xff
//设计人:ycj
//最后修改:时间(2006.4.24)修改人(ycj)
//****************************************************
unsigned char read_key(void)
{
 unsigned char j,key,key_buf=0;
 p_key=0xff;
 //检测是否有建按下//
 p_key=0xf0;
 key=p_key;
 if(key==0xf0)
    {
	 return(0xff);//没按键按下,返回0xff
	}
 //有按下,延时去抖//
 delay_time(5000);
 //确认是否有建按下//
 p_key=0xf0;
 key=p_key;
 if(key==0xf0)
    {
	 return(0xff);//没按键按下,返回0xff
	}
 //真的有按键按下,扫描是哪一行有按键按下//
 for(j=0;j<4;j++)
 {key=p_key&(0x10<<j);
  if (key)
     {
	  key=p_key;
	 }
  else
     {
	  key_buf=j*4;
	  p_key=~(0x10<<j);//第j行的按键按下了,第j行输出0,其他的i/o口输出1
	  //扫描是第j行的哪个按键按下//
	  for(j=0;j<4;j++)
	  	{
		 key=p_key&(1<<j);
         if (key)
     		{
	  		 key=p_key;
	 		}
  		 else
     		{
			 key_buf+=j;
			 return(key_buf);//扫描到按键的确定位置,返回按键的编号
			}
		}
	 }
 }
//没扫描到按键,//
return(0xff);
}
//*****************主程序**********************
//描    述:把键盘的输入码型按二进制的方式在p0
//         口显示,若没有按键按下P0的灯全部亮
//入口参数:无
//返回参数:无
//设计人:ycj
//最后修改:时间(2006.4.24)  修改人(ycj)
//*****************************************
int main(void)
{
 unsigned char i;
 while(1)
   {
	i=read_key(); //调用键盘子程序
       P0=~i;      //在P0口显示键盘的值
   } 
}

⌨️ 快捷键说明

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