搜索
bottom↓
回复: 2

求助,矩阵键盘 反转程序一直返回0XFF,去掉return 0xff,...

[复制链接]

出0入0汤圆

发表于 2016-9-30 21:28:52 | 显示全部楼层 |阅读模式
本帖最后由 fangwenbo0002 于 2016-9-30 21:35 编辑

#include "key.h"
#include "STC15F2K60S2.h"
#include "lcd1202.h"
//#define keydat P0
#define uchar unsigned char

uchar Key_Scan()
{
uchar keyval,key_h,key_l;
P0=0x0f;
key_l=P0&0x0f;
if(key_l!=0x0f)
{
  delay1ms(10);
  if(key_l!=0x0f)
  {
   key_l=P0&0x0f;
   P0=key_l|0xf0;
   key_h=P0&0xf0;
   key_l=key_l&0x0f;
   keyval=key_h+key_l;
   //Lcd_Show_String(keyval,0,0);
   return keyval;
  }
  
}return 0xff;

}
void Key_Display()
{
uchar key;
key=Key_Scan();
if(key!=0xff)
{
  switch(key)
  {
   case 0xee: Lcd_Show_String("1:ee",0,0);break;
   case 0xed: Lcd_Show_String("1:ed",0,0);break;
   case 0xeb: Lcd_Show_String("1:eb",0,0);break;
   case 0xe7: Lcd_Show_String("1:e7",0,0);break;
   case 0xde: Lcd_Show_String("1:de",0,0);break;
   case 0xdd: Lcd_Show_String("1:dd",0,0);break;
   case 0xdb: Lcd_Show_String("1:db",0,0);break;
   case 0xd7: Lcd_Show_String("1:d7",0,0);break;
   case 0xbe: Lcd_Show_String("1:be",0,0);break;
   case 0xbd: Lcd_Show_String("1:bd",0,0);break;
   case 0xbb: Lcd_Show_String("1:bb",0,0);break;
   case 0xb7: Lcd_Show_String("1:b7",0,0);break;
   case 0x7e: Lcd_Show_String("1:7e",0,0);break;
   case 0x7d: Lcd_Show_String("1:7d",0,0);break;
   case 0x7b: Lcd_Show_String("1:7b",0,0);break;
   case 0x77: Lcd_Show_String("1:77",0,0);break;
  
  }
}
else
  Lcd_Show_String("0xff",0,0);
}


主函数
int main(void)
{

P1M0=0x00;
P1M1=0x00;
P2M0=0x00;
P2M1=0x00;
P3M0=0x00;
P3M1=0x00;
P4M0=0x00;
P4M1=0x00;
Lcd_Init();
  

while(1)
{
  
  Key_Display();

}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-10-1 09:15:51 来自手机 | 显示全部楼层
行输出高电平,列读取;列输出高平,行读取。

出0入0汤圆

 楼主| 发表于 2016-10-1 10:03:13 | 显示全部楼层
我已经弄好了,修改后的程序为:
uchar Key_Scan()
{
        uchar keyval,key_h,key_l;
        P0=0x0f;  
        delay1ms(1);
        key_l=P0&0x0f;
        if(key_l!=0x0f)
        {
                        delay1ms(10);
                        key_l=P0&0x0f;
                        if(key_l!=0x0f);
                        {
                                key_l=P0&0x0f;
                                P0=key_l|0xf0;
                                delay1ms(1);
                                key_h=P0&0xf0;
                                //key_l=key_l&0x0f;
                                keyval=key_h+key_l;

                                return keyval;
                        }

        }return 0xff;

}
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 23:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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