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

📄 lcd.h

📁 c8051f020 +wg12864+44key .rar
💻 H
字号:

/*
sbit  RS=P6^0;
sbit  RW=P4^7;
sbit  E=P4^6;
sbit  CS1=P6^1;
sbit  CS2=P6^2;
*/
void set_RS(bit flag);
void set_RW(bit flag);
void set_E(bit flag);
void set_CS1(bit flag);
void set_CS2(bit flag);

void set_RS(bit flag)
{ 
   unsigned char temp;
   temp=P6;
   if(flag)
   P6=temp|0x01;
   else
   P6=temp&0xfe;
}
void set_RW(bit flag)
{ 
   unsigned char temp;
   temp=P4;
   if(flag)
   P4=temp|0x80;
  else
   P4=temp&0x7f;
}
void set_E(bit flag)
{ 
   unsigned char temp;
   temp=P4;
  if(flag)
   P4=temp|0x40;
  else
   P4=temp&0xbf;
}
void set_CS1(bit flag)
{ 
   unsigned char temp;
   temp=P6;
  if(flag)
   P6=temp|0x02;
  else
   P6=temp&0xfd;
}
void set_CS2(bit flag)
{ 
   unsigned char temp;
   temp=P6;
  if(flag)
   P6=temp|0x04;
  else
   P6=temp&0xfb;
}
/*********************************************延时**************************************/
void Delayus(unsigned int t)
{
  int i,j;
  for (i=0;i<t;i++)
  {
   for (j=0;j<t;j++)
   j=j;
   }
}

//*********************判忙函数************************//
void BUSYLOOP(unsigned char cs)
{
  unsigned char  BUSY;
  if(cs==1)
   {
    set_CS1(0); //CS1=0;
    set_CS2(1); //CS2=1;
   }
   else if(cs==0)
   {
     set_CS1(1);// CS1=1;
     set_CS2(0);//CS2=0;
   }
   else
   {
   set_CS1(1);//CS1=1;
   set_CS2(1);//CS2=1;
   }
   P7=0xff; //P0=0x0ff;
   set_RS(0);// RS=0;
   set_RW(1);//RW=1;
   
   do {
     set_E(1);// E=0;
     Delayus(1);
     BUSY=P7; // BUSY=P0;
     Delayus(1);
     set_E(0);//E=1;
      Delayus(1);
   }
  while(BUSY>0x7F);
}

//*********************写控制字函数****************************//
void Write_command(unsigned char CMD,unsigned char bb,unsigned char cs)
{
  if(bb)
  {
  BUSYLOOP(cs);
  }

   if(cs==1)
   {
   set_CS1(0);// CS1=0;
   set_CS2(1);//CS2=1;
   }
   else if(cs==0)
   {
   set_CS1(1);// CS1=1;
   set_CS2(0);// CS2=0;
   }
   else
   {
   set_CS1(1);// CS1=1;
   set_CS2(1);// CS2=1;
   }
    set_RS(0);    //  RS=0;

    set_RW(0);//RW=0;
    set_E(0);// E=0;
    P7=CMD;// P0=CMD;]
	
    set_E(1);// E=1;
	
  //nop();
    Delayus(1);
  
   set_E(0);// E=0;
}

//*********************写数据函数****************************//
void Write_data(unsigned char CMD,unsigned char bb,unsigned char cs,unsigned char page)
{
 if(bb)
 {
 BUSYLOOP(cs);
 }

 // Write_command(adress_y&0x3f|0x40,0,cs);
  Write_command(page&0x07|0xb8,0,cs);
   if(cs==1)
   {
    set_CS1(0);// CS1=0;
    set_CS2(1);//CS2=1;
   // CS1=0;
   // CS2=1;
   }
   else if(cs==0)
   {
   set_CS1(1);// CS1=1;
   set_CS2(0);// CS2=0;
  // CS1=1;
  // CS2=0;
   }
   else
   {
    set_CS1(1);// CS1=1;
    set_CS2(1);// CS2=1;
  // CS1=1;
  // CS2=1;
   }
    set_RS(1); // RS=1;
    set_RW(0); // RW=0;
    set_E(0); //  E=0;
	
    P7=CMD;// P0=CMD;
	
    set_E(1);  // E=1;

  Delayus(1);
  
   set_E(0); //  E=0;
}

//*************************液晶初始化********************************//
void CHUSHIHUA()
{
   Write_command(0x3e,0,0);
   Write_command(0x3e,0,0);
   Write_command(0x3f,0,0);
   Write_command(0x3f,0,0);
   Write_command(0xb8,0,0); //  write  page num
   Write_command(0x40,0,0); //  write  y adress
   Write_command(0xc0,0,0); //  write  start adress
   Write_command(0x3e,0,1);
   Write_command(0x3e,0,1);
   Write_command(0x3f,0,1);
   Write_command(0x3f,0,1);
   Write_command(0xb8,0,1); //  write  page num
   Write_command(0x40,0,1); //  write  y adress
   Write_command(0xc0,0,1); //  write  start adress
}
/***************************清 屏*************************************/
void CLEAR()
{
 int i,j ;
   for(i=0;i<8;i++)
   {
    for(j=0;j<64;j++)
    {
    Write_data(0x00,0,0,i)  ;
    }
   }
  for(i=0;i<8;i++)
   {
    for(j=0;j<64;j++)
    {
    Write_data(0x00,0,1,i)  ;
    }
   }
}
void Display( unsigned char *ptr,unsigned char bb,unsigned char cs,unsigned char page,unsigned char adress_y)
{
  unsigned char temp,i;
  if(bb)
  {
 BUSYLOOP(cs);
  }
 // Write_command(page&0x07|0xb8,bb,cs);
  Write_command(adress_y&0x3f|0x40,bb,cs);


  for(i=0;i<16;i++)
  {
    temp=*(ptr+i);
    Write_data(temp,bb,cs,page) ;
  }
 // Write_command((page+1)&0x07|0xb8,bb,cs);
  Write_command(adress_y&0x3f|0x40,bb,cs);
   for(i=16;i<32;i++)
  {
    temp=*(ptr+i);
   Write_data(temp,bb,cs,page+1) ;
  }
}
void Display_Num( unsigned char *ptr,unsigned char bb,unsigned char cs,unsigned char page,unsigned char adress_y) //**显字符串函数**//
 {
  unsigned char temp,i;
  if(bb)
  {
 BUSYLOOP(cs);
  }
 // Write_command(page&0x07|0xb8,bb,cs);
  Write_command(adress_y&0x3f|0x40,bb,cs);


  for(i=0;i<8;i++)
  {
    temp=*(ptr+i);
    Write_data(temp,bb,cs,page) ;
  }
 // Write_command((page+1)&0x07|0xb8,bb,cs);
  Write_command(adress_y&0x3f|0x40,bb,cs);
   for(i=8;i<16;i++)
  {
    temp=*(ptr+i);
   Write_data(temp,bb,cs,page+1) ;
  }
}

void delay(unsigned i)
{
 int k;
 for(k=0;k<i;k++)
 delay1ms();
}
 

⌨️ 快捷键说明

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