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

📄 lcd320.c

📁 这是嵌入式软件电话本的小软件
💻 C
📖 第 1 页 / 共 2 页
字号:
			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 + -