wacrane 发表于 2013-7-24 11:27:41

求大神,急急急!

按下矩阵键盘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();

}

}

}

a794001114 发表于 2013-7-24 17:45:53

标题改一下啦,不然你就杯具了

linlingpeng 发表于 2013-7-24 18:59:10

担心楼主的标题。

zgxcom123 发表于 2013-7-24 19:12:46

你这样把一大堆代码贴上来
没有注释没有电路没有自己的思考

估计…………………………没人会给你看

李鸿鸿 发表于 2013-7-24 19:42:24

谁知道你求助的是什么啊?又没说清楚

spfanlost 发表于 2013-7-24 21:34:55

布置作业的吗?你

wt418995874 发表于 2013-7-25 20:39:47

啊哈哈,楼主标题有点...

南孤雁2010 发表于 2013-8-7 16:10:58

求助啥啊?同学……

highrock 发表于 2013-8-7 16:13:59

木看懂

lkllkl 发表于 2013-8-7 21:01:03

问题没有描述清楚!!

颖风 发表于 2013-8-7 21:48:19

不知道问什么!

kenshudemayi 发表于 2013-8-8 09:51:56

看见这么长的就头晕,楼主赶紧改标题

hhxb 发表于 2013-8-8 10:15:19

楼主不要气馁,所有人都是从菜鸟开始的

笑谈 发表于 2013-8-8 15:45:56

估计楼主也是从其他地方找来类似功能的程序,想找人修改一下自己用?
但是这样有点太偷懒了。。。

sunquanv 发表于 2013-8-9 00:24:01

你把思路,注释都发上来吧 这样太难看
页: [1]
查看完整版本: 求大神,急急急!