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

📄 12864diver.c

📁 OCM12864液晶驱动程序,非常实用
💻 C
📖 第 1 页 / 共 2 页
字号:
 WriteLCD(COMMAND , 0x00);//显示低4位列地址

 delay_us(100); 
 WriteLCD(COMMAND , 0xAF);//显示开

 WriteLCD(COMMAND , 0x81);
 WriteLCD(COMMAND , 0x1b);
        delay_us(100); 
        SetContrast(iIntRegValuea,ContrastValue);
 ClearScreen();
}

 

/*******************************************************************************
//???:void Print6(INT8U xx, INT8U yy, INT8U ch1[], INT8U yn)
//??:??显示6*8字符串
//??:xx ,yy 坐标,ch1待显示字符串,yn反显
//??:?
*******************************************************************************
void Print6(INT8U xx, INT8U yy, INT8U ch1[], INT8U yn)  
{
 INT8U ii = 0;
 INT8U bb = 0;
 unsigned int index = 0 ; 
   
 while(ch1[bb] != '\0')
 {
                index = (unsigned int)(ch1[bb] - 0x20);
  index = (unsigned int)index*6;  
  for(ii=0;ii<6;ii++)
  {
   SetRamAddr(xx , yy);
   if(yn == 0)
   {
    WriteLCD(DATA, ~FontSystem6x8[index]);
    
   }
   else
   {
    WriteLCD(DATA, FontSystem6x8[index]);
   }  
   index += 1;
   yy += 1;
  }  
  bb += 1;
 }
}
 */

//*******************************************************************************
//???:void Printn8(INT8U xx ,INT8U yy , INT32U no,INT8U yn,INT8U le)
//??:显示8*8一个无符号数据
//??:xx , yy屏幕当中的位置,no待显数据 yn=0正常显示 yn=1反黑显示  le有效位
//??:?
//*******************************************************************************
void Printn8(INT8U xx ,INT8U yy , INT32U no,INT8U yn,INT8U le)
{
 INT8U ch2[6];
 INT8U ii;

 for(ii = 1 ; ii <= le ;){
  ch2[le - ii] = no % 10 + 0x30;
  no /= 10;
  ii += 1;
 }
 ch2[le] = '\0';
 Print8(xx ,yy ,ch2 ,yn);
}

/*******************************************************************************
//???:void Print8(INT16U y,INT16U x, INT8U ch,INT16U yn)
//??:显示8*8字符
//??:xx ,yy 坐标,ch待显示字符,yn是否反黑
//??:?
*******************************************************************************
void PrintCh8(INT16U y,INT16U x, INT8U ch,INT16U yn)
{
 INT8U wm;
 INT16U adder;
 
 adder = (ch - 0x20) * 16;
 for(wm = 0;wm < 8;wm++)
 {
  SetRamAddr(y , x);
  if(yn == 0)
  {
   WriteLCD(DATA, ~Font8X8[adder]);//调用字符库
  }
  else
  {
   WriteLCD(DATA, Font8X8[adder]);
  }
  adder += 1;
  x += 1;
 }
 y += 1;
 x -= 8;
 for(wm = 0;wm < 8;wm++)
 {
  SetRamAddr(y , x);
  if(yn == 0)
  {
    WriteLCD(DATA, ~Font8X8[adder]);
  }
  else
  {
   WriteLCD(DATA, Font8X8[adder]); 
  }
  adder += 1;
  x += 1;
 }
}
*/

/*******************************************************************************
//???:void Print8(INT16U y,INT16U x, INT8U ch[],INT16U yn)
//??:显示8*8字符串
//??:xx ,yy 坐标,ch1待显示的字符串,yn是否反黑
//??:?
********************************************************************************/
void Print8(INT16U y,INT16U x, INT8U ch[],INT16U yn)
{
 INT8U wm ,ii = 0;
 INT16U adder;

 while(ch[ii] != '\0')
 {
  adder = (ch[ii] - 0x20) * 16;//字符的ASCII码

  for(wm = 0;wm < 8;wm++)
  {
   SetRamAddr(y , x);
   if(yn == 0)
   {
    WriteLCD(DATA, ~Font8X8[adder]);
   }
   else
   {
    WriteLCD(DATA, Font8X8[adder]);
   }
   adder += 1;
   x += 1;
  }
  y += 1;
  x -= 8;
  for(wm = 0;wm < 8;wm++)
  {
   SetRamAddr(y , x);
   if(yn == 0)
   {
    WriteLCD(DATA, ~Font8X8[adder]);
   }
   else
   {
    WriteLCD(DATA, Font8X8[adder]); 
   }
   adder += 1;
   x += 1;
  }
  ii += 1;
  y -= 1;
 }

}


/*******************************************************************************
//???:void Print16(INT16U y,INT16U x,INT8U ch[],INT16U yn)
//??:显示汉字
//??:x ,y ??,ch[]待显示的汉字,yn是否反黑
//??:?
********************************************************************************
void Print16(INT16U y,INT16U x,INT8U ch[],INT16U yn)
{
 INT8U wm ,ii = 0;
 INT16U adder;

 wm = 0;
 adder = 1;
 while(FontNew8X16_Index[wm] > 128)
 {
  if(FontNew8X16_Index[wm] == ch[ii])
  {
   if(FontNew8X16_Index[wm + 1] == ch[ii + 1])
   {
    adder = wm * 14;
    break;
   }
  }
  wm += 2;    //找到汉字在索引中的位置
 }
 SetRamAddr(y , x);

 if(adder != 1)     //找到汉字,显示出来 
 {
  
  for(wm = 0;wm < 14;wm++)
  {
   SetRamAddr(y , x);
   if(yn == 0)
   {
    WriteLCD(DATA, ~FontNew16X16[adder]);
   }
   else
   {
    WriteLCD(DATA, FontNew16X16[adder]);
   }
   adder += 1;
   x += 1;
  }
                for(wm = 0;wm < 2;wm++)
  {
   SetRamAddr(y , x);
   if(yn == 0)
   {
    WriteLCD(DATA, 0xff);
   }
   else
   {
    WriteLCD(DATA, 0x00);
   }
   x += 1;
  }
  y += 1;
  x -=16;

  for(wm = 0;wm < 14;wm++)
  {
   SetRamAddr(y , x);
   if(yn == 0)
   {
    WriteLCD(DATA, ~FontNew16X16[adder]);
   }
   else
   {
    WriteLCD(DATA, FontNew16X16[adder]);
   }
   adder += 1;
   x += 1;
  }
                for(wm = 0;wm < 2;wm++)
  {
   SetRamAddr(y , x);
   if(yn == 0)
   {
    WriteLCD(DATA, 0xff);
   }
   else
   {
    WriteLCD(DATA, 0x00);
   }
   x += 1;
  }


 }
 else      //找不到显示空格   
 {
  ii += 1;

  for(wm = 0;wm < 16;wm++)
  {
   SetRamAddr(y , x);
   if(yn == 0)
   {
    WriteLCD(DATA, 0xff);
   }
   else
   {
    WriteLCD(DATA, 0x00);
   }
   x += 1;
  }
  y += 1;
  x -= 16;
  for(wm = 0;wm < 16;wm++)
  {
   SetRamAddr(y , x);
   if(yn == 0)
   {
    WriteLCD(DATA, 0xff);
   }
   else
   {
    WriteLCD(DATA, 0x00);
   }
   x += 1;
  }
 }
}*/


/*******************************************************************************
//???:void Print(INT8U y, INT8U x, INT8U ch[], INT16U yn)
//??:实现汉字及字母混合显示
//??:x ,y 坐标,ch[]带显示的汉字或字母,yn是否反黑
//??:?
*******************************************************************************
void Print(INT8U y, INT8U x, INT8U ch[], INT16U yn)
{
 INT8U ch2[3];
 INT8U ii;
        ii = 0;
 while(ch[ii] != '\0')
 {
  if(ch[ii] > 128)
  {
   ch2[0] = ch[ii];
    ch2[1] = ch[ii + 1];
   ch2[2] = '\0';   //汉字为两个字节
   //Print16(y , x , ch2 , yn); //显示汉字
   x += 16;
   ii += 2;
  }
  else
  {
   ch2[0] = ch[ii]; 
   ch2[1] = '\0';   //字母占一个字节
   Print8(y , x , ch2 , yn); //显示字母
   x += 8;
   ii += 1;
  }
 }
}
 */
#endif

⌨️ 快捷键说明

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