求大神,急急急!

2020-01-27 11:33发布

按下矩阵键盘LED本来显示的是A-P的英文字母,改为1-16的数字。
#include<reg52.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

#define shuju P0

#define bus P1

sbit rs=P2^7;

sbit rw=P2^6;

sbit e=P2^5;

sbit sda=P2^0;                          //IO口定义

sbit scl=P2^1;

uchar r;

void delayms(int i)

{

int j;

for(j=0;j<i;j++)

{}

}

void enable()

{

rs=0;

rw=0;

e=0;

delayms(65000);

e=1;

}

void write()

{

rs=1;

rw=0;

e=0;

delayms(65000);

e=1;

}

void chushi()

{

sda=0;

scl=0;

shuju=0x01;

enable();

shuju=0x38;

enable();

shuju=0x0f;

enable();

shuju=0x06;

enable();

shuju=0x80;

enable();

}

void display(uchar i)
{

shuju=i;

write();

}

void jianpan()

{  

   uchar a;

   uchar k;

   bus=0xff;

   bus=0xef;      //扫描第一行

   delayms(6000);

   a=bus;

   a=a&0x0f;

   if(a!=0x0f)

  {

   delayms(2000);

    if(a!=0x0f)

   {

     switch(a)

    {

     case 0x0e:

          k=0x41;






          break;

     case 0x0d:

          k=0x42;

   

          break;

     case 0x0b:

          k=0x43;

         

          break;

     case 0x07:

          k=0x44;

      

          break;

    }

      display(k);

          r=r-1;

     while(a!=0x0f)

     {

         bus=0x0f;

         delayms(2000);

         a=bus;   

     }

   }

   }  

    bus=0xdf;        //扫描第二行

   // lcdbus=0xff;

    delayms(6000);

    a=bus;

    a=a&0x0f;

    if(a!=0x0f)

    {

     delayms(2000);

     if(a!=0x0f)

     {

     switch(a)

     {

      case 0x0e:

           k=0x45;

           break;

      case 0x0d:

           k=0x46;

           break;

      case 0x0b:

           k=0x47;

           shuju=0x07;

           break;

      case 0x07:

           k=0x48;

           break;

     }

     display(k);

       r=r-1;

     while(a!=0x0f)

      {

       bus=0x0f;

          delayms(2000);

       a=bus;

         

      }

     }  

    }     

    bus=0xbf;        //扫描第3行






       delayms(6000);

    a=bus;

    a=a&0x0f;

    if(a!=0x0f)

    {

     delayms(2000);

     if(a!=0x0f)

     {

     switch(a)

     {

      case 0x0e:

           k=0x49;

         

           break;

      case 0x0d:

           k=0x4a;

           

           break;

      case 0x0b:

          k=0x4b;


           break;

      case 0x07:

           k=0x4c;


           break;

     }

     display(k);

         r=r-1;

     while(a!=0x0f)

      {

      bus=0x0f;

          delayms(2000);

       a=bus;

        

      }

     }  

    }     

     bus=0x7f;        //扫描第4行

        delayms(6000);

    a=bus;

    a=a&0x0f;

    if(a!=0x0f)

    {

     delayms(2000);

     if(a!=0x0f)

     {

     switch(a)

     {

      case 0x0e:

           k=0x4d;

           break;

      case 0x0d:

           k=0x4e;

           break;

      case 0x0b:

           k=0x4f;

           break;

      case 0x07:

           k=0x50;


           break;

     }

     display(k);

         r=r-1;

     while(a!=0x0f)

      {

       bus=0x0f;

          delayms(2000);

       a=bus;         

      }

     }  

    }     

}

void main()

{

while(1)

{

chushi();

r=0x10;

while(r>0)

{

jianpan();

}

shuju=0xc0;

enable();

r=0x10;

while(r>0)

{

jianpan();

}

}

}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。