📄 w_lcd.c
字号:
{
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 + -