打印

虚心请教一下键盘扫描程序的问题

[复制链接]
1078|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
枫恋00|  楼主 | 2012-4-5 21:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define uint unsigned int  
#define uchar unsigned char
//uchar temp,key_num,i;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};
uchar code scan[4] = {0xfe, 0xfd, 0xfb, 0xf7};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void disp(uchar key_num) //显示子程序
{
P0=table[key_num];
delay(20);
P2=0xf8;
}
uchar keyscan();
void mian()
{
P2=0xf8;
while(1)
{
key=keyscan();
delayms(20);
keydisp(key);
  
}
}
uchar keyscan()
{
uchar i;
for(i=0;i<4;i++)
  {
  P1=scan[i];//按键检测
  temp=P1;
  temp=temp&0xf0;
  while(temp!=0xf0)
    {
      delay(10);
      P1=scan[i];
      temp=P1;
      temp=temp&0xf0;
      while(temp!=0xf0)
       {
        
        switch(temp&0xf0)
         {
          case 0xe0: key_num=i*4;
          break;
          case 0xd0: key_num=i*4+1;
          break;
          case 0xb0: key_num=i*4+2;
          break;
          case 0x70: key_num=i*4+3;
          break;
         }
       }
    }
  }
  return key_num;
   
}
这是我自己写的一个键盘扫描的程序,编译没错,就是显示不出来,不知道是什么问题,请高手帮忙解答。
P1口接4*4矩阵键盘,P0口接数码管,P2.0-P2.3控制数码管的位选

相关帖子

沙发
zd420325| | 2012-4-6 11:14 | 只看该作者
抛砖引玉:
1.你是否使用方正器进行调试,可以通过查看变量的方式看你按键扫描值是否正确;
2,若使用开发板,从两个地方着手:a,先不读键值,直接给显示的变量key_num赋值,看display函数是否正常;b,若disPlay函数正常,再排除按键扫描的否有异常.

使用特权

评论回复
板凳
枫恋00|  楼主 | 2012-4-6 12:42 | 只看该作者
2# zd420325 我是用自己做的pcb板,接也没有错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

60

帖子

0

粉丝