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

📄 参考程序.txt

📁 本文档是现行所有的液晶驱动电路及各自硬件底层驱动程序设计.
💻 TXT
📖 第 1 页 / 共 2 页
字号:
  lcdPosX = 0x88 ;
 }
 lcd_wri(0x36) ;
 lcd_wri(0x30) ;
 }
//=============================================== 
 void showPhoto (unsigned char cx,cy,high,width ,unsigned char *bmp)//指定位置显示小图
   {
    lcd_wri(0x34) ;
        lcdPosX = cx ;//(0x80--------0x8F)
    if (cy==0)
    {
     lcdPosY=0x80 ;
 }
  else if(cy==1)
    { 
     lcdPosY=0x90 ;
  } 
       else if(cy==2)
      {
     lcdPosY=0x80 ;
   }
       else if(cy==3)
      { 
     lcdPosY=0x90 ;
  }
  //lcdPosY = cy ;//(lcdposx+(0-----32)
     width= 16*width/8 ;
  halfLineCnt =high*16 ;
   for ( ;halfLineCnt != 0 ; halfLineCnt--)
  {
   basicBlock =width ;//指的是块(块是8点),2*8=16点
   wrPosition () ;//指定坐标
   
   for ( ; basicBlock != 0 ; basicBlock--)
   {
   
     lcd_wrd (*bmp++) ;//读入一个字符数据  
   }
   lcdPosY++ ;

 }
 lcd_wri(0x36) ;//打开绘图模式
 lcd_wri(0x30) ;//写入基本指令
 }
 //===============================================
void convertChar (unsigned char CX, CY, width) 
{
 //displayPhoto(0,1) ;
 lcdPosY = 0x80 ;
 if (CX == 0)
 {
  CX = 0x80 ;
  halfLineCnt = 16 ;
 }
 else if (CX == 1)
 {
  CX = 0x80 ;
  halfLineCnt = 32 ;
 }
 else if (CX == 2)
 {
  CX = 0x88 ;
  halfLineCnt = 16 ;
 }
 else if (CX == 3)
 {
  CX = 0x88 ;
  halfLineCnt = 32 ;
 }
 lcdPosX = CX + CY ;
    for ( ; halfLineCnt != 0 ; halfLineCnt--)
 {
  basicBlock = width ;
  wrPosition() ;
  for ( ;basicBlock != 0 ; basicBlock--)
  {
   if (halfLineCnt > 16)
   {
    lcd_wrd(0x00) ;
   }
   else
   {
    lcd_wrd (0xff) ;
   }
  }
  lcdPosY++ ;
 }
 lcd_wri(0x36) ;
// lcd_wri(0x30) ;
}
//===============================================
void wrPosition (void) 
{
 lcd_wri(0x34) ;
 lcd_wri(lcdPosY) ;
 lcd_wri(lcdPosX) ;
 lcd_wri(0x30) ;
}
//===============================================
void dispString (unsigned char X, Y, speed, unsigned char *msg) 
{
 if (X == 0)
 {
  X = 0x80 ;
 }
 else if (X == 1)
 {
  X = 0x90 ;
 }
 else if (X == 2)
 {
  X = 0x88 ;
 }
 else if (X == 3)
 {
  X = 0x98 ;
 }
 Y = X + Y ;
 lcd_wri(Y) ;
 while (*msg)
 {
  lcd_wrd(*msg++) ;
  delayMs(speed) ;
 }
}
//===============================================
//===============================================
void delayMs (unsigned char ms) 
{
 unsigned char i ;
 while (--ms)
 {
  for (i = 0 ; i < 125 ; i++) ;
 }
}
//===============================================
void delaySec (unsigned char sec) 
{
 unsigned char i ;
 while (--sec)
 {
  for (i = 0 ; i < 200 ; i++)
  {
   delayMs (6) ;
  }
 }
}
//===============================================
void lcd_nop(void)
{
 _nop_() ;
 _nop_() ;
 _nop_() ;
 _nop_() ;
 _nop_() ;
 _nop_() ;
 _nop_() ;
 _nop_() ;
 _nop_() ;
 _nop_() ;
 _nop_() ;
}

void lcd_wri(unsigned char indata)
{
    bitLCDcs = 0 ;
 lcd_nop() ;
 bitLCDcs = 1 ;
 lcd_nop() ;
    lcd_wbyte(0xf8) ;
    lcd_wbyte(indata & 0xf0) ;
    lcd_wbyte((indata << 4) & 0xf0) ;
}
void lcd_wrd(unsigned char indata)
{
    bitLCDcs = 0 ;
 lcd_nop() ;
 bitLCDcs = 1 ;
 lcd_nop() ;
    lcd_wbyte(0xfa) ;
    lcd_wbyte(indata & 0xf0) ;
    lcd_wbyte((indata << 4) & 0xf0) ;
}
void lcd_wbyte(unsigned char sendbyte)
{
 unsigned char data j=8 ;
 for( ;j>0 ;j--)
 {
        lcd_nop() ;
  sendbyte<<=1 ; //无论C51怎样实现这个操作,始终会使CY=sendbyte^7 ;
  bitLCDsid=CY ;
        lcd_nop() ;
  bitLCDsclk=0 ;
        lcd_nop() ;
  bitLCDsclk=1 ;
        lcd_nop() ;
        bitLCDsclk=0 ;
        lcd_nop() ;
 }
}
void lcd_delay(void)
{
   delay_ms(1) ;
}
void delay_ms(unsigned char k)
{
 unsigned char i ;
 unsigned char j ;
 for (  ; k>0  ; k--)
 {
  for (i=0x0c  ; i>0  ; i--)
  {
   for (j=0xe5  ; j>0  ; j--)
   {
   }
  }
 }
}
void alldisplayPhoto (unsigned char *bmp, unsigned char bmpCls)

{
  lcdPosX = 0x80 ;
 halfScr = 2 ;
 for ( ;halfScr != 0 ; halfScr--)
 {
 lcdClear () ;
 lcdPosY = 0x80 ;
  halfLineCnt = 32 ;
  for ( ;halfLineCnt != 0 ; halfLineCnt--)
  {
   basicBlock = 16 ;
   wrPosition () ; 
   for ( ; basicBlock != 0 ; basicBlock--)
   {
    if (bmpCls == 0)
    {
     lcd_wrd (*bmp++) ;
    }
    else if (bmpCls == 1)
    {
     lcd_wrd (0x00) ;
    }
   }
   lcdPosY++ ;
  }
  lcdPosX = 0x88 ;
 }
 lcd_wri(0x36) ;
 lcd_wri(0x30) ;
 }
void clearChar (unsigned char CX, CY, width) 
{
 lcd_wri(0x36) ;
 lcdPosY = 0x80 ;

 if (CX == 0)
 {
  CX = 0x80 ;
  halfLineCnt = 16 ;
 }
 else if (CX == 1)
 {
  CX = 0x80 ;
  halfLineCnt = 32 ;
 }
 else if (CX == 2)
 {
  CX = 0x88 ;
  halfLineCnt = 16 ;
 }
 else if (CX == 3)
 {
  CX = 0x88 ;
  halfLineCnt = 32 ;
 }
 lcdPosX = CX + CY ;
    for ( ; halfLineCnt != 0 ; halfLineCnt--)
 {
  basicBlock = width ;
  wrPosition() ;
  for ( ;basicBlock != 0 ; basicBlock--)
  {
   if (halfLineCnt > 16)
   {
    lcd_wrd(0x00) ;
   }
   else
   {
    lcd_wrd (0x00) ;
   }
  }
  lcdPosY++ ;
 }

 lcd_wri(0x36) ;
 //lcd_wri(0x30) ;
}

⌨️ 快捷键说明

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