📄 lcd320.c
字号:
for(k=7;k>=0;k--){ data<<=4; data|=((txtdata>>k)&0x1)*0xf; } *(pLCDBuffer16+i+j*40)=data; } }}extern char tbuf[];void LCD_printf(const char *format,...){ int i,j=0; int LCDCurrentDspTxt=0; va_list v_list; char *ptr; va_start(v_list, format); // Initialize variable arguments. vsprintf(tbuf, format, v_list ); va_end(v_list); ptr= tbuf; if(LCDdspMode!=DspTxtMode) return; /*格式化字符串*/ for(i=0;ptr[i]!=0;i++){ if(ptr[i]=='\n'){ //换行 LCDCurrentPrnTxt++; if(LCDCurrentPrnTxt>LCDRow-1){ LCDCurrentPrnTxt-=LCDRow; LCDIsprnOverPage=TRUE; } if(LCDIsprnOverPage) LCDCurrentDspTxt=LCDCurrentPrnTxt; for(;j<LCDColumn;j++) //补齐空格 LCDTxtBuffer[LCDCurrentPrnTxt][j]=0; j=0; } else{ if(j<LCDColumn) LCDTxtBuffer[LCDCurrentPrnTxt][j++]=ptr[i]; } } LCD_TxtRefresh(LCDCurrentDspTxt);}void LCD_ChangeMode(U8 mode){ LCDdspMode=mode;}void LCD_Refresh(void){ int i,j; U32 lcddata; U32 pixcolor; //一个像素点的颜色 U8* pbuf=(U8*)LCDBuffer[0]; if(LCDdspMode!=DspGraMode) return; for(i=0;i<LCDWIDTH*LCDHEIGHT/8;i++){ lcddata=0; for(j=28;j>=0;j-=4){ pixcolor=0xf-(pbuf[0]+pbuf[1]+pbuf[2])/48; //变换RGB色彩为灰度 lcddata|=pixcolor<<j; pbuf+=4; } *(pLCDBuffer16+i)=lcddata; }}//文本模式下清除屏幕?void LCD_Cls(void) { LCDCurrentPrnTxt=0, //打印文本所在的行 LCDIsprnOverPage=FALSE; memset(LCDTxtBuffer,0,LCDRow*LCDColumn);}void LCD_TOUCH_Test1(void){ int x,y; LCD_ChangeMode(DspTxtMode); LCD_Cls(); TchScr_init(); for(;;){ TchScr_GetScrXY(&x,&y); LCD_printf("X=%d,Y=%d",x,y); Delay(1000); }}void LCD_TOUCH_Test2(void){ int x,y,i; U32 TchScrAction=TCHSCR_ACTION_UP;// POSMSG pmsg; LCD_ChangeMode(DspTxtMode);// LCD_Cls(); LCD_printf("begin TouchScreen Task\n"); for(;;){ if(TchScrAction==TCHSCR_ACTION_UP){ if(!((rPDATC&ADS7843_PIN_PEN)>>11)){ Delay(50); if(!((rPDATC&ADS7843_PIN_PEN)>>11)){ TchScr_GetScrXY(&x, &y); TchScrAction=TCHSCR_ACTION_DOWN; LCD_printf("X=%d,Y=%d",x,y); } } } if(TchScrAction==TCHSCR_ACTION_DOWN){ if((rPDATC&ADS7843_PIN_PEN)>>11) { Delay(50); if((rPDATC&ADS7843_PIN_PEN)>>11) { TchScrAction=TCHSCR_ACTION_UP; } } } OSTimeDly(15); }}void LCD_SHOWPOINT(void){ int i,j; LCD_ChangeMode(DspGraMode); LCD_Cls(); for(i=0;i<5;i++) for(j=0;j<5;j++) LCDBuffer[i][j]=0xff; LCD_Refresh(); Delay(2000); for(i=0;i<5;i++) for(j=LCDWIDTH;j>LCDWIDTH-5;j--) LCDBuffer[i][j]=0xff; LCD_Refresh(); Delay(2000); }void LCD_TestShow3(void)//display one english word{ int i; LCD_ChangeMode(DspTxtMode); LCD_Cls(); /* for(i=5;i<20;i++){ for(j=0;j<15;j++) {LCDTxtBuffer[i][j]='A'+i-5; } LCD_TxtRefresh(1); Delay(2000); } //LCD_TxtRefresh(5); */ for(i=0;i<40;i++) LCD_printf("1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n");}//显示LCD的16级灰度void LCD_TestShow1(void){ int i,j,k; U32 jcolor; for(i=0,j=0;i<LCDHEIGHT,j<LCDWIDTH;i+=(1),j+=(LCDWIDTH/LCDHEIGHT)) { LCDBuffer[i][j]=0xff; } Delay(3000); LCD_Refresh(); for(i=0;i<LCDHEIGHT;i++){ jcolor = 0; k=0x10; for(j=0;j<LCDWIDTH;j++){ if(!(j%20)) { k--; jcolor=0x00000000|(k<<4)|(k<<8)|(k<<12)|(k<<16)|(k<<20)|(k<<24)|(k<<32)|k; } if(jcolor>0xffffffff) jcolor = 0xffffffff; LCDBuffer[i][j]=jcolor; } LCD_Refresh(); } LCD_Refresh();}//显示LCD的16级灰度void LCD_TestShow4(void){ int i,j,k; U32 jcolor; for(i=0,j=0;i<LCDHEIGHT,j<LCDWIDTH;i+=1,j+=(LCDWIDTH/LCDHEIGHT)) LCDBuffer[i][j]=0xff; Delay(3000); LCD_Refresh(); for(i=0;i<240;i++){ jcolor = 0; k=0xf; for(j=0;j<320;j++){ if(!(j%7)) { k--; jcolor=0x00000000|(k<<4)|(k<<8)|(k<<12)|(k<<16)|(k<<20)|(k<<24)|(k<<32)|k; } if(k == 0x0) k=0xf; if(jcolor>0xffffffff) jcolor = 0xffffffff; LCDBuffer[i][j]=jcolor; } } LCD_Refresh(); Delay(15000);}void LCD_TestShow2(void){ int i,j; for(j=0;j<240;j+=16){ for(i=0;i<40;i++){ *(pLCDBuffer16+0+i+j*40)=0xffffffff; *(pLCDBuffer16+40+i+j*40)=0xeeeeeeee; *(pLCDBuffer16+80+i+j*40)=0xdddddddd; *(pLCDBuffer16+120+i+j*40)=0xcccccccc; *(pLCDBuffer16+160+i+j*40)=0xbbbbbbbb; *(pLCDBuffer16+200+i+j*40)=0xaaaaaaaa; *(pLCDBuffer16+240+i+j*40)=0x99999999; *(pLCDBuffer16+280+i+j*40)=0x88888888; *(pLCDBuffer16+320+i+j*40)=0x77777777; *(pLCDBuffer16+360+i+j*40)=0x66666666; *(pLCDBuffer16+400+i+j*40)=0x55555555; *(pLCDBuffer16+440+i+j*40)=0x44444444; *(pLCDBuffer16+480+i+j*40)=0x33333333; *(pLCDBuffer16+520+i+j*40)=0x22222222; *(pLCDBuffer16+560+i+j*40)=0x11111111; *(pLCDBuffer16+600+i+j*40)=0x00000000; continue; Delay(4000); *(pLCDBuffer16+0+i+j*40)=0; *(pLCDBuffer16+40+i+j*40)=0; *(pLCDBuffer16+80+i+j*40)=0; *(pLCDBuffer16+120+i+j*40)=0x0; *(pLCDBuffer16+160+i+j*40)=0x0; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -