在别的地方搬了一个程序 ,有点地方不明白,希望大佬能给我解释一下 不明白的地方已经标注红 {MOD}了

2019-07-15 09:22发布

以下为程序:
/*反转法矩阵键盘的应用,我认为这是一个编程简便又容易理解的矩阵键盘编程应用,因此拿来与大家共享*/
/*殷传东对此程序拥有独家版权,仅可用于研究学习,严禁用于商业目的,欢迎喜爱单片机的大虾小虾皮皮虾联系交流QQ:77329961*/
#include<reg52.h>                //头文件
#define uchar unsigned char         //宏定义
#define uint unsigned int
uchar key,n;                 //定义变量
uchar code table[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};        //反转法矩阵键盘的各个按键的计算值
uchar code yin[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};               //共阴极数码管显示0~F
void delay(uint i)    //延时函数
{
  while(i--);
}
void keyscan()
{
uchar l,h,i;                        //定义局部变量,用l得出低4位的值,用h得出高4位的值
P1=0x0f;                                        //给P1赋值00001111
l=P1&0x0f;
if(l!=0x0f)
{
  delay(100);
     if(l!=0x0f)
          l=P1&0x0f;                        //若有键按下,得出低四位的值
  }
  P1=0xf0;                                        //给P1赋值11110000
  h=P1&0xf0;
if(h!=0xf0)
{
  delay(100);
     if(h!=0xf0)
          h=P1&0xf0;                        //若有键按下,得出高4位的值
  }

  key=l+h;                                        //高4位的值与低4位的值相加
  for(i=0;i<16;i++)
           {
    if(key==table)                   //通过查表得出n的值
    n=i;
        }
}

void main()
{
while(1)
   {
           keyscan();
        P0=yin[n];                                //在数码管上显示相应的键值
   }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
余一痴
1楼-- · 2019-07-15 14:30
XX00XX00 发表于 2017-11-8 19:51
通过查表得出N的值?只写一个table怎么查?最起码写完整吧,table;

尴尬  少搬了点
余一痴
2楼-- · 2019-07-15 16:35
 精彩回答 2  元偷偷看……
余一痴
3楼-- · 2019-07-15 17:49
像这样显示不全第一个按键还不显示
B{}{Y2d($2J7{`G@3@H6K.png
余一痴
4楼-- · 2019-07-15 22:30
XX00XX00
5楼-- · 2019-07-16 04:05
余一痴 发表于 2017-11-8 20:24
@XX00XX00

你买的谁的?没有技术支持吗?这个东西得看硬件,光看这个现象,是不行的,数码管是共阳还是共阴,数组数值编码不一样
人中狼
6楼-- · 2019-07-16 09:55
  delay(100);
     if(l!=0x0f)
          l=P1&0x0f;                        //若有键按下,得出低四位的值
  }
括号配对有问题,上面的这个括号应该去掉,其他的你看着配对吧,既然是搬的程序,也可以对比一下原来的程序

评分

参与人数 1积分 +10 收起 理由 ElecFans王岑 + 10

查看全部评分

一周热门 更多>