⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at89s51_test.c

📁 at89s51小系统(带有LCD)
💻 C
📖 第 1 页 / 共 2 页
字号:
 switch(lednum)
 {
  case 0:
     LED1=segtab[led[0]];
     break;
  case 1:
     LED2=segtab[led[1]];
     break;
 case 2:
     LED3=segtab[led[2]];
     break;
 case 3:
     LED4=segtab[led[3]];
     break;
 case 4:
     LED5=segtab[led[4]];
     break;
 case 5:
     LED6=segtab[led[5]];
     break;
 case 6:
     LED7=segtab[led[6]];
     break;
 case 7:
     LED8=segtab[led[7]];
     break;
  }

 if(lednum==0)
   {lednum=7;}
 else
   {lednum=lednum-1;}
}

void readkey(void)
{
 uchar M_key=0;
 
 P1_4=0;
 P1_3=0;
 M_key=KEY;
 if(M_key!=0xff)
   {
    if(first_getkey==0)
      {
       first_getkey=1;
      }
   } 
 else
   {
    first_getkey=0;
    keyon=0;
   }
 
 if(first_getkey==1)
   {
    if(keyon==0)
      {
       P1_4=0;
       P1_3=1;
       M_key=KEY;
       if(M_key!=0xff)
         {
          switch(M_key)
            {
             case 0xfe:
               getkey=1;
               keyon=1;
               keynum=0;
               break;
             case 0xfd:
              getkey=1;
              keyon=1;
              keynum=1;
              break;
             case 0xfb:
               getkey=1;
               keyon=1;
               keynum=2;
               break;
              case 0xf7:
               getkey=1;
               keyon=1;
               keynum=3;
               break;
              case 0xef:
               getkey=1;
               keyon=1;
               keynum=4;
               break;
              case 0xdf:
               getkey=1;
               keyon=1;
               keynum=5;
               break;
              case 0xbf:
               getkey=1;
               keyon=1;
               keynum=6;
               break;
              case 0x7f:
               getkey=1;
               keyon=1;
               keynum=7;
               break;
            }
         }
       else
         {
          P1_3=0;
          P1_4=1;
          M_key=KEY;
          switch(M_key)
            {
             case 0xfe:
               getkey=1;
               keyon=1;
               keynum=8;
               break;
             case 0xfd:
              getkey=1;
              keyon=1;
              keynum=9;
              break;
             case 0xfb:
               getkey=1;
               keyon=1;
               keynum=0x0a;
               break;
              case 0xf7:
               getkey=1;
               keyon=1;
               keynum=0x0b;
               break;
              case 0xef:
               getkey=1;
               keyon=1;
               keynum=0x0c;
               break;
              case 0xdf:
               getkey=1;
               keyon=1;
               keynum=0x0d;
               break;
              case 0xbf:
               getkey=1;
               keyon=1;
               keynum=0x0e;
               break;
              case 0x7f:
               getkey=1;
               keyon=1;
               keynum=0x0f;
               break;
            }
         }
      }
   }
}





//////////////////////////////////
void lcdlon_off(uchar D)
{RW=0;
lcdlCommand=D;
_nop_();
}

void setlstartx(uchar D)
{RW=0;
lcdlCommand=D;
_nop_();
}

void setlstarty(uchar D)
{
RW=0;
lcdlCommand=D;
_nop_();
}

void setlstartline(uchar D)
{
RW=0;
lcdlCommand=D;
_nop_();
}
//////////////////////////////

void lcdron_off(uchar D)
{RW=0;
lcdrCommand=D;
_nop_();
}

void setrstartx(uchar D)
{RW=0;
lcdrCommand=D;
_nop_();
}

void setrstarty(uchar D)
{
RW=0;
lcdrCommand=D;
_nop_();
}

void setrstartline(uchar D)
{RW=0;
lcdrCommand=D;
_nop_();
}
///////////////////////////////

uchar GetIndex(uchar szText)
{
    uchar code TAB[libleng]={' ','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q'
,'R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q'
,'r','s','t','u','v','w','x','y','z','`','1','2','3','4','5','6','7','8','9','0','-','=','\\','~','!','@','#','$','%','^','&','*','(',')','_'
,'+','|','[',']',';','\'',',','.','/','{','}',':','"','<','>','?'};
    uchar i;
	uchar j=0;
    for(i=0;i<=libleng;i++)     
      {
	  if(szText==TAB[i]) 
	     {j=1;
		 return i;
		 break;}
	  }
   if(j==0)
    return 0x00;
}

/*void delay400ms(void)
{uchar i,j;
for(i=20;i>0;i--)
   for(j=20;j>0;j--)
     _nop_();
}*/

///////////////////////////////////
void lcdlwrite(uchar D) 
{RW=0;
//_nop_();
lcdDl=D;
_nop_();
}

void lcdrwrite(uchar D) 
{RW=0;
//_nop_();
lcdDr=D;
_nop_();
}
////////////////////////////////////
void writelcd(void)        //对LCD进行字符串写入
{uchar i=0;//8*8字符数
uchar j=0;//8位数据中第几位
uchar k=0;//行数
uchar index=0;
uchar z=0;
 for(i=0;i<dataleng;i++)
   {
   index=GetIndex(worddata[i]);

   z=i%8;
   k=i/16;
   if(k>7) k=0;  
   if(i%16<8)
     { 
      setlstartx(strat_xaddr+k);
      for(j=0;j<8;j++)
	      {_nop_();
		  setlstarty(strat_yaddr+8*z+j);
		  lcdlwrite(ASCII[index][j]);
	    
		  }
       _nop_();
	  }
  if(i%16>=8)
     {
      setrstartx(strat_xaddr+k);
      for(j=0;j<8;j++)
	      {_nop_();
		  setrstarty(strat_yaddr+8*z+j);
		  lcdrwrite(ASCII[index][j]);
	 	  
		  }
       _nop_();
	  }
//	delay400ms();
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -