📄 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 + -