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

📄 w_lcd.c

📁 安的利34A57液晶程序
💻 C
📖 第 1 页 / 共 2 页
字号:
{
  while(1)
      {
        ClrDog();
        LCD_WraByteToBus(0XFF);
        LCD_WraByteToBus(0X00);
  
        
        LCD_CS_OFF;
        LCD_CS_ON;
        
        LCD_RST_OFF;
        LCD_RST_ON;
        
        LCD_A0_OUT(1);
        LCD_A0_OUT(0);
        
        LCD_WR_OUT(1);
        LCD_WR_OUT(0);
        
        LCD_RD_OUT(1);         
        LCD_RD_OUT(0);  
        
        LED_OFF;  
        LED_ON; 
      } 
}

void LcdInit(void)
{
      InitLcdIo();
      TestLcdIO();
  ////测试IO口
      
        LED_ON;         
	LCD_RST_ON;
	Delayn10MS(12);
	LCD_RST_OFF;
	Delayn10MS(12);

	SetLcdReg(DispOff,DispOffCode,1);
//	SetLcdReg(SystemSet,SystemSetCode,8);
//	OSTimeDly(OS_TICKS_PER_SEC/20);
	
	SetLcdReg(SystemSet,SystemSetCode,8);
	SetLcdReg(Scroll,ScrollCode,10);
	SetLcdReg(CursorForm,CursorFormCode,2);
	SetLcdReg(HDotScroll,HDotScrollCode,1);
	SetLcdReg(OverLayer,OverLayerCode,1);
	SetLcdReg(CursorRight,NULL,1);
	SetLcdReg(CursorWrite,CursorAdd1,2);
	SetLcdReg(DispOn,DispOnCode,1);
        
        Clr_Screen();
        //Set2LinesInMainNaue();
        LCD_ClrSecWIndow();
        LCD_DisInitProc_Index1();
        
}
/*
void SetCursorAdd(INT8U cursoraddh,INT8U cursoraddl)
{
	LCD_CS_ON;
	LCD_A0_OUT(1);
	write_bus(CursorWrite);
	LCD_A0_OUT(0);
	write_bus(cursoraddh);
	write_bus(cursoraddl);
	LCD_CS_OFF;
}*/
//以一个16*16汉字为单位定位光标
void SetCursorAdd(INT8U cursoraddl,INT8U cursoraddh)
{
  INT16U high,low;
        
        high=320*cursoraddh+cursoraddl;
        low=high&0x00ff;
        high=(high>>8)&0xff;
        
	LCD_CS_ON;
	LCD_A0_OUT(1);
	write_bus(CursorWrite);
	LCD_A0_OUT(0);
	write_bus(low);
	write_bus(high);
	LCD_CS_OFF;
}

//以一个每行为单位定位光标
void SetCursorAddPerCol(INT8U cursoraddl,INT8U cursoraddh)
{
  INT16U high,low;
        
        high=20*cursoraddh+cursoraddl;
        low=high&0x00ff;
        high=(high>>8)&0xff;
        
	LCD_CS_ON;
	LCD_A0_OUT(1);
	write_bus(CursorWrite);
	LCD_A0_OUT(0);
	write_bus(low);
	write_bus(high);
	LCD_CS_OFF;
}



//CurH:行;CurL:列
void WriteAchar(INT8U CurL,INT8U CurH,INT8U const *Chardata,INT8U InvertFlag)
{
  INT8U tempbuf[16];
      
        SetCursorAdd(CurL,CurH);
        SetLcdReg(CursorDown,NULL,1);
        if(InvertFlag==0)
        WriteLcdData(Chardata,16);
        else
        {
          InvertStrBit((INT8U *)Chardata,tempbuf,16);
           WriteLcdData(tempbuf,16);
        }
}


//CurH:行;CurL:列
void WriteBlockchar(INT8U CurL,INT8U CurH,INT8U *Chardata[],INT8U n,INT8U InvertFlag)
{
    INT8U i;
    INT8U tempbuf[16];
    
    SetLcdReg(CursorDown,NULL,1); 
    for(i=0;i<n;i++)
    {
        SetCursorAdd(CurL+i,CurH);    
        if(InvertFlag==0)
        WriteLcdData(Chardata[i],16);
        else
        {
          InvertStrBit((INT8U *)Chardata[i],tempbuf,16);
          WriteLcdData(tempbuf,16);
        }
    }
}


//CurH:行;CurL:列
void WriteAGB(INT8U CurL,INT8U CurH,INT8U const *GBdata,INT8U InvertFlag)
{
  INT8U tempbuf[16];
    
        SetCursorAdd(CurL,CurH);
        SetLcdReg(CursorDown,NULL,1);
        if(InvertFlag==0)
        WriteLcdData(GBdata,16);
        else
        {
          InvertStrBit((INT8U *)GBdata,tempbuf,16);
           WriteLcdData(tempbuf,16);
        }
        
        CurL++;
        SetCursorAdd(CurL,CurH); 
        //SetLcdReg(CursorDown,NULL,1);
        if(InvertFlag==0)
          WriteLcdData(GBdata+16,16);
        else
        {
          InvertStrBit((INT8U *)(GBdata+16),tempbuf,16);
          WriteLcdData(tempbuf,16);
        }
         
}

//CurH:行;CurL:列
void WriteBlockGB(INT8U CurL,INT8U CurH,INT8U  *GBdata[],INT8U n,INT8U InvertFlag)
{
    INT8U i;
    INT8U tempbuf[32];
    SetLcdReg(CursorDown,NULL,1);
    for(i=0;i<n;i++)
    {
        if(InvertFlag==1)
        {
          InvertStrBit(GBdata[i],tempbuf,32);
        }
        SetCursorAdd(CurL,CurH);    
        if(InvertFlag==0)
          WriteLcdData(GBdata[i],16);    
        else
          WriteLcdData(tempbuf,16);   
        
        CurL++;
        SetCursorAdd(CurL,CurH);
        
        if(InvertFlag==0)
          WriteLcdData(GBdata[i]+16,16);    
        else
          WriteLcdData(tempbuf+16,16);  
        CurL++;
    }
    

}


void ClrOrFillScreen(INT8U const *Tempdata)
{
    INT16U  i,j;

             
        for(i=0;i<=10;i++)
        {
          for(j=0;j<20;j+=2)
              WriteAGB(j,i,Tempdata,0);
        }
         SetCursorAdd(0,0);
}


/******************************************************/
//清辅窗口
void LCD_ClrSecWIndow(void)
{
  INT8U i;
  for(i=0;i<20;i+=2)
  {   
    WriteAGB(i,0,LCD_FILL,0);    
    WriteAGB(i,9,LCD_FILL,0);      
  }
 
}
/******************************************************/
//清某个区域
void LCD_ClrSectionWIndow(INT8U StartCol,INT8U StartRow,INT8U n)
{
  INT8U i;
  
  for(i=0;i<n;i+=2)
    WriteAGB(i+StartRow,StartCol,LCD_NULL,0);        
 
}

/******************************************************/
//在某行区域画下划线
void LCD_SetUndertLine(INT8U StartCol,INT8U StartRow,INT8U n)
{
  INT8U i;
  
   SetLcdReg(CursorRight,NULL,1);
   for(i=0;i<n;i++)
   {
     SetCursorAddPerCol(StartRow+i,StartCol);  
     WriteLcdData(CHFILLBYTE,1);
   }

}
/***********************************************************/
void  Set2LinesInMainNaue(void)
{
   LCD_SetUndertLine(0,0,20);
    LCD_SetUndertLine(15,0,20);
    LCD_SetUndertLine(144,0,20);
    LCD_SetUndertLine(159,0,20);
}
/******************************************************/
//清主窗口
void LCD_ClrMainWIndow(void)
{
   INT8U i,j; 
    
   for(i=1;i<9;i++)
     for(j=0;j<20;j+=2)
     WriteAGB(j,i,LCD_NULL,0);  
}
/******************************************************/
void Clr_Screen(void)
{
  
  ClrOrFillScreen(LCD_NULL);
  
}

/******************************************************/
void Fill_Screen(void)
{
  
  ClrOrFillScreen(LCD_FILL);
  
}

/******************************************************
void SetDotWholeScrenn(INT8U const *GBdata)
{
  INT8U i;
  for(i=0;i<160;i++)
  {   
        SetCursorAddPerCol(0,i);
        SetLcdReg(CursorRight,NULL,1);
        WriteLcdData(GBdata+i*20,20); 
  }
}

**********************************************************/

⌨️ 快捷键说明

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