OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6191|回复: 1

3*4按键扫描

[复制链接]

32

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
385
金钱
385
注册时间
2011-11-21
在线时间
32 小时
发表于 2012-4-7 11:06:33 | 显示全部楼层 |阅读模式

各位大虾,这样做按键扫描行不行的通;后面我还要显示按键值0-9和实现“确”与“取消”功能按键界面,我还不确信这样行不行,是不是最好的
#define cancel     0x01
#define comfirm           0x02
#define function_array    0x03
#define null              0
#define uchar unsigned char
#define uint  unsigned int
//uint8 disp_code[4],key_buf[4],room_buf[4];
//uint8 idata data_buff[16],idata call_number_buf[12];

/********************************************************************************************
* 函数名称:Key_Idle()
* 功    能:键盘松开
* 入口参数:无
* 出口参数:无
*********************************************************************************************/
void Key_idle()
{
   while( ( P1 & 0x0f ) != 0x0f );
}

//*****************************************************************************************
//函数名称:Key_scan()按键输入扫描
//入口参数:无
//出口参数:无
//******************************************************************************************/
 uchar Key_scan()
{
   uchar line,lie,value;
   int key;
   P1=0x0f;
   line=P1&&0x0f;
   if(line!=0x0f)
   {
    delay(50);
 if(line!=0x0f)
 line=P1&&0x0f;
 1=line|0xf0;
 lie=P1&&0xf0;
 if(lie!=0xf0)
 {
  delay(50);
  if(lie!=0xf0)
  lie=P1&&0xf0;
     value=line+lie;
  
 }
   }
   Key_idle();
   switch(value)
   {
      case 0xd7: key=0;break;
   case 0xee: key=1;break;
   case 0xce: key=2;break;
   case 0xbe: key=3;break;
   case 0xed: key=4;break;
   case 0xdd: key=5;break;
   case 0xbd: key=6;break;
   case 0xeb: key=7;break;
   case 0xdb: key=8;break;
   case 0xbb: key=9;break;      //0-9
   case 0xe7: return comfirm;break;    //确认键
   case 0xd7: return cancel;break;    //取消健
   default : return null;
   }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-4-7 12:10:04 | 显示全部楼层
一定要最好就很难说了.所谓山外有山,你认为最好了,也许和别人的比起来差一截...
给你个建议:能满足需求就好.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 10:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表