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

📄 12864.c

📁 LCD12864的嵌入式C程序 很有参考价值!
💻 C
📖 第 1 页 / 共 2 页
字号:
	 for(i=0;i<W;i++)
	 {
      OutSI(0xb8|layer+1);
      OutSI(CO|0x40);
	  OutSI(HY|0xC0);
      OutSD(china_code[p]);
      p++;
      CO+=1;
     }  	  
  }  
}
/***********************************整个字在右半屏的部分
/*******************************************************/
/*********************************************************************************************/
/*显示字全部在右半屏*/
else
 {
  W=whidth/DX;   
  for(i=0;i<W;i++)
  {
   for(k=0;k<DX;k++)
   {
    OutSI(0xb8|layer);
    OutSI((CO-64)|0x40);
	OutSI(HY|0xC0);
    OutSD(china_code[p]);
    p++;
    CO+=1;
   }  
   p+=DX;
  }
  CO-=W*DX;
  p=0;
  for(i=0;i<W;i++)
  {
   for(k=0;k<DX;k++)
   {
    OutSI(0xb8|layer+1);
    OutSI((CO-64)|0x40);    
	OutSI(HY|0xC0);
    OutSD(china_code[p+DX]);
    p++;
    CO+=1;
   }  
   p+=DX;
  }
  W=whidth%DX;
  for(k=0;k<W;k++)
   {
    OutSI(0xb8|layer);
    OutSI(CO|0x40);
	OutSI(HY|0xC0);
    OutSD(china_code[p]);
    p++;
    CO+=1;
   } 
  CO=CO-W;
  for(k=0;k<W;k++)
   {
    OutSI(0xb8|layer+1);
    OutSI(CO|0x40);
	OutSI(HY|0xC0);
    OutSD(china_code[p+DX-W]);
    p++;
    CO+=1;
   }
 }
}
/*------------------------------------------------------------------------------
函 数 名:	void display
功    能:	随意显示
说    明:	[起始页、起始列、字数、字体大小、行移动(为0时在指定
             的页位置,为正数时向上移,为负数时向下移动)、字模]
//------------------------------------------------------------------------------*/
void display(unsigned char layer,unsigned char column,unsigned char whidth,unsigned char daxiao,unsigned char *china_code)
{
unsigned char p=0;
unsigned char i,k,z,x,o;
unsigned char j,W,CO;
W=whidth;
CO=column;
j=daxiao;
if(column<64)
{
 if(column+whidth*j<64)
 {  
  for(i=0;i<W;i++)
  {
   for(k=0;k<j;k++)
   {
    OutFI(0xb8|layer);
    OutFI(CO|0x40);
    OutFD(china_code[p]);
    p++;
    CO+=1;
   }  
   p+=j;
  }
  CO-=j*W;
  p=0;
  for(i=0;i<W;i++)
  {
   for(k=0;k<j;k++)
   {
    OutFI(0xb8|layer+1);
    OutFI(CO|0x40);
    OutFD(china_code[p+j]);
    p++;
    CO+=1;
   }  
   p+=j;
  }
 }
//***************************************************************************字全部在左半屏
/*******************************************************************************************/
  else
  {
   W=(64-CO)/j;
   for(i=0;i<W;i++)
    {
     for(k=0;k<j;k++)
      {
       OutFI(0xb8|layer);
       OutFI(CO|0x40);
       OutFD(china_code[p]);
       p++;
       CO+=1;
      }  
      p+=j;
    }
     CO-=j*W;
     p=p-j*W*2;
     for(i=0;i<W;i++)
     {
      for(k=0;k<j;k++)
      {
       OutFI(0xb8|layer+1);
       OutFI(CO|0x40);
       OutFD(china_code[p+j]);
       p++;
       CO+=1;
      }  
      p+=j;
     }
//****************************处理在左半屏显的整个字的部分
/********************************************************/
    z=(64-CO)%j;
    for(k=0;k<z;k++)
     {
      OutFI(0xb8|layer);
      OutFI(CO|0x40);
      OutFD(china_code[p]);          //*2+j*whidth
      p++;
      CO+=1;
     }
    p=p+j-z;
    for(k=0;k<z;k++)
     {
      OutFI(0xb8|layer+1);
      OutFI((CO-z)|0x40);
      OutFD(china_code[p]);      //*2+j*whidth+(j-z)
      p++;
      CO+=1;
     }
/*******************************左右半屏过度的左半屏部分
/*******************************************************/
    x=j-z;
    if(x==j) x=0;
    else x=x;
    CO=64;
    p=p-j;    
    for(k=0;k<x;k++)
     {     
      OutSI(0xb8|layer);
      OutSI(CO|0x40);
      OutSD(china_code[p]);        //*2+j*whidth-z
      p++;  
      CO+=1;
     }
    CO=64;
    p=p+z;
    for(k=0;k<x;k++)
     {     
      OutSI(0xb8|layer+1);
      OutSI(CO|0x40);
      OutSD(china_code[p]);         //*2+j*whidth-z+x
      p++;
      CO+=1;
     }
/***********************************左右半屏过度的右半屏部分
/**********************************************************/
    if(x==0) o=whidth-(64-column)/j;
    else o=whidth-(64-column)/j-1;
    for(i=0;i<o;i++)
     {
      for(k=0;k<j;k++)
      {
       OutSI(0xb8|layer);
       OutSI(CO|0x40);
       OutSD(china_code[p]);
       p++;
       CO+=1;
      }  
      p+=j;
     }
     CO-=j*o;
     p=p-o*2*j;
     for(i=0;i<o;i++)
     {
      for(k=0;k<j;k++)
      {
       OutSI(0xb8|layer+1);
       OutSI(CO|0x40);
       OutSD(china_code[p+j]);
       p++;
       CO+=1;
      }  
      p+=j;
     }  
  }  
}
/***********************************整个字在右半屏的部分
/*******************************************************/

else
 {   
  for(i=0;i<whidth;i++)
  {
   for(k=0;k<j;k++)
   {
    OutSI(0xb8|layer);
    OutSI((CO-64)|0x40);
    OutSD(china_code[p]);
    p++;
    CO+=1;
   }  
   p+=j;
  }
  CO-=j*whidth;
  p=0;
  for(i=0;i<whidth;i++)
  {
   for(k=0;k<j;k++)
   {
    OutSI(0xb8|layer+1);
    OutSI((CO-64)|0x40);           //**有可能通过更改64实现上下滚动如为65CO=64则CO-65=-1,可能下移一行
    OutSD(china_code[p+j]);
    p++;
    CO+=1;
   }  
   p+=j;
  }
 }
/*********************************************************************************************/
/***************************************************************************显示字全部在右半屏*/
}
//***********************************************************************************************
/*------------------------------------------------------------------------------
函 数 名:	void display_LM
功    能:	拉幕显示
说    明:	[起始页、起始列、列数、字体大小、字模]
//------------------------------------------------------------------------------*/
void display_LM(unsigned char layer,unsigned char column,unsigned char whidth,unsigned char daxiao,unsigned char *china_code)
{
unsigned char p=0;
unsigned char i,j,W,CO;
W=whidth;
CO=column;
j=daxiao;
/*********************************************字全部在左半屏/
/***********************************************************/
if(column<64)
{
 if(column+whidth<=64)
 {
  W=64-CO;  
  for(i=0;i<W;i++)
   {
    OutFI(0xb8|layer);
    OutFI(CO|0x40);
    OutFD(china_code[p]);
    OutFI(0xb8|layer+1);
    OutFI(CO|0x40);
    OutFD(china_code[p+j]);
    delay10ms(5);
    p++;
    CO+=1;  
    if(p%j==0) p+=j;
    else p=p;
   }
 }
/**********************************************左右半屏都有/
/***********************************************************/
  else
  {
   W=64-CO;
   for(i=0;i<W;i++)
   {
    OutFI(0xb8|layer);
    OutFI(CO|0x40);
    OutFD(china_code[p]);
    OutFI(0xb8|layer+1);
    OutFI(CO|0x40);
    OutFD(china_code[p+j]);
    delay10ms(5);
    p++;
    CO+=1;  
    if(p%j==0) p+=j;
    else p=p;
   }
   W=column+whidth-64;
   for(i=0;i<W;i++)
   {
    OutSI(0xb8|layer);
    OutSI((CO-64)|0x40);
    OutSD(china_code[p]);
    OutSI(0xb8|layer+1);
    OutSI((CO-64)|0x40);         
    OutSD(china_code[p+j]);
    delay10ms(5);
    p++;
    CO+=1;
    if(p%j==0)  p+=j;  
    else p=p;
   }
  }  
 }
/***************************************************字全部在右半屏/
/*****************************************************************/
else
 {   
  for(i=0;i<whidth;i++)
   {
    OutSI(0xb8|layer);
    OutSI((CO-64)|0x40);
    OutSD(china_code[p]);
    OutSI(0xb8|layer+1);
    OutSI((CO-64)|0x40);         
    OutSD(china_code[p+j]);
    delay10ms(5);
    p++;
    CO+=1;
    if(p%j==0)  p+=j;  
    else p=p;
  }
 }
}
/*************************************************************************
                ASCII
*************************************************************************/
void QU_ASCII(unsigned char layer,unsigned char column,unsigned char whidth,unsigned char daxiao,unsigned char *china_code)
{
unsigned char p=0;
unsigned char i,k,z,x,o;
unsigned char j,W,CO;

W=whidth;
CO=column;
j=daxiao;
if(column<64)
{
 if(column+whidth*j<64)
 {  
  for(i=0;i<W;i++)
  {
   for(k=0;k<j;k++)
   {
    OutFI(0xb8|layer);
    OutFI(CO|0x40);
    OutFD(ASCII_code[*china_code-48][p]);
    p++;
    CO+=1;
   }  
   p+=j;
  }
  CO-=j*W;
  p=0;
  for(i=0;i<W;i++)
  {
   for(k=0;k<j;k++)
   {
    OutFI(0xb8|layer+1);
    OutFI(CO|0x40);
    OutFD(ASCII_code[*china_code-48][p+j]);
    p++;
    CO+=1;
   }  
   p+=j;
  }
 }
//****************************************字全部在左半屏
/*******************************************************************************************/
  else
  {
   W=(64-CO)/j;
   for(i=0;i<W;i++)
    {
     for(k=0;k<j;k++)
      {
       OutFI(0xb8|layer);
       OutFI(CO|0x40);
       OutFD(ASCII_code[*china_code-48][p]);
       p++;
       CO+=1;
      }  
      p+=j;
    }
     CO-=j*W;
     p=p-j*W*2;
     for(i=0;i<W;i++)
     {
      for(k=0;k<j;k++)
      {
       OutFI(0xb8|layer+1);
       OutFI(CO|0x40);
       OutFD(ASCII_code[*china_code-48][p+j]);
       p++;
       CO+=1;
      }  
      p+=j;
     }
//****************************处理在左半屏显的整个字的部分
/********************************************************/
    z=(64-CO)%j;
    for(k=0;k<z;k++)
     {
      OutFI(0xb8|layer);
      OutFI(CO|0x40);
      OutFD(ASCII_code[*china_code-48][p]);          //*2+j*whidth
      p++;
      CO+=1;
     }
    p=p+j-z;
    for(k=0;k<z;k++)
     {
      OutFI(0xb8|layer+1);
      OutFI((CO-z)|0x40);
      OutFD(ASCII_code[*china_code-48][p]);      //*2+j*whidth+(j-z)
      p++;
      CO+=1;
     }
/*******************************左右半屏过度的左半屏部分
/*******************************************************/
    x=j-z;
    if(x==j) x=0;
    else x=x;
    CO=64;
    p=p-j;    
    for(k=0;k<x;k++)
     {     
      OutSI(0xb8|layer);
      OutSI(CO|0x40);
      OutSD(ASCII_code[*china_code-48][p]);        //*2+j*whidth-z
      p++;  
      CO+=1;
     }
    CO=64;
    p=p+z;
    for(k=0;k<x;k++)
     {     
      OutSI(0xb8|layer+1);
      OutSI(CO|0x40);
      OutSD(ASCII_code[*china_code-48][p]);         //*2+j*whidth-z+x
      p++;
      CO+=1;
     }
/***********************************左右半屏过度的右半屏部分
/**********************************************************/
    if(x==0) o=whidth-(64-column)/j;
    else o=whidth-(64-column)/j-1;
    for(i=0;i<o;i++)
     {
      for(k=0;k<j;k++)
      {
       OutSI(0xb8|layer);
       OutSI(CO|0x40);
       OutSD(ASCII_code[*china_code-48][p]);
       p++;
       CO+=1;
      }  
      p+=j;
     }
     CO-=j*o;
     p=p-o*2*j;
     for(i=0;i<o;i++)
     {
      for(k=0;k<j;k++)
      {
       OutSI(0xb8|layer+1);
       OutSI(CO|0x40);
       OutSD(ASCII_code[*china_code-48][p+j]);
       p++;
       CO+=1;
      }  
      p+=j;
     }  
  }  
}
/***********************************整个字在右半屏的部分
/*******************************************************/
/*********************************************************************************************/
/*显示字全部在右半屏*/
else
 {   
  for(i=0;i<whidth;i++)
  {
   for(k=0;k<j;k++)
   {
    OutSI(0xb8|layer);
    OutSI((CO-64)|0x40);
    OutSD(ASCII_code[*china_code-48][p]);
    p++;
    CO+=1;
   }  
   p+=j;
  }
  CO-=j*whidth;
  p=0;
  for(i=0;i<whidth;i++)
  {
   for(k=0;k<j;k++)
   {
    OutSI(0xb8|layer+1);
    OutSI((CO-64)|0x40);   
    OutSD(ASCII_code[*china_code-48][p+j]);
    p++;
    CO+=1;
   }  
   p+=j;
  }
 }
} 
/*********************************************************************/
unsigned char code ASCII_code[10][16]=
{

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//00

0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//11

0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//22

0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//33

0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//44

0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//55

0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//66

0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//77

0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//88

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//99
};



⌨️ 快捷键说明

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