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

📄 lcd128_64.c

📁 CC2430的液晶显示程序
💻 C
📖 第 1 页 / 共 2 页
字号:
				
			}
			else
			{
				WriteLCD(DATA, FontSystem6x8[index]);
			}		
			index += 1;
			yy += 1;
		}		
		bb += 1;
	}
}


//*******************************************************************************
//函数名:void Printn8(INT8U xx ,INT8U yy , INT32U no,INT8U yn,INT8U le)
//功能:显示8*8一个无符号数据
//输入:xx , yy屏幕当中位置,no待显示数据 yn=0正常显示 yn=1反黑显示  le有效位
//输出:无
//*******************************************************************************
void Printn8(INT8U xx ,INT8U yy , INT32U no,INT8U yn,INT8U le)
{
	INT8U ch2[6];
	INT8U ii;

	for(ii = 1 ; ii <= le ;){
		ch2[le - ii] = no % 10 + 0x30;
		no /= 10;
		ii += 1;
	}
	ch2[le] = '\0';
	Print8(xx ,yy ,ch2 ,yn);
}

/*******************************************************************************
//函数名:void Print8(INT16U y,INT16U x, INT8U ch,INT16U yn)
//功能:显示8*8字符
//输入:xx ,yy 坐标,ch待显示的字符,yn是否反黑
//输出:无
********************************************************************************/
void PrintCh8(INT16U y,INT16U x, INT8U ch,INT16U yn)
{
	INT8U wm;
	INT16U adder;
	
	adder = (ch - 0x20) * 16;
	for(wm = 0;wm < 8;wm++)
	{
		SetRamAddr(y , x);
		if(yn == 0)
		{
			WriteLCD(DATA, ~Font8X8[adder]);
		}
		else
		{
			WriteLCD(DATA, Font8X8[adder]);
		}
		adder += 1;
		x += 1;
	}
	y += 1;
	x -= 8;
	for(wm = 0;wm < 8;wm++)
	{
		SetRamAddr(y , x);
		if(yn == 0)
		{
				WriteLCD(DATA, ~Font8X8[adder]);
		}
		else
		{
			WriteLCD(DATA, Font8X8[adder]);	
		}
		adder += 1;
		x += 1;
	}
}


/*******************************************************************************
//函数名:void Print8(INT16U y,INT16U x, INT8U ch[],INT16U yn)
//功能:显示8*8字符串
//输入:xx ,yy 坐标,ch1待显示的字符串,yn是否反黑
//输出:无
********************************************************************************/
void Print8(INT16U y,INT16U x, INT8U ch[],INT16U yn)
{
	INT8U wm ,ii = 0;
	INT16U adder;

	while(ch[ii] != '\0')
	{
		adder = (ch[ii] - 0x20) * 16;

		for(wm = 0;wm < 8;wm++)
		{
			SetRamAddr(y , x);
			if(yn == 0)
			{
				WriteLCD(DATA, ~Font8X8[adder]);
			}
			else
			{
				WriteLCD(DATA, Font8X8[adder]);
			}
			adder += 1;
			x += 1;
		}
		y += 1;
		x -= 8;
		for(wm = 0;wm < 8;wm++)
		{
			SetRamAddr(y , x);
			if(yn == 0)
			{
				WriteLCD(DATA, ~Font8X8[adder]);
			}
			else
			{
				WriteLCD(DATA, Font8X8[adder]);	
			}
			adder += 1;
			x += 1;
		}
		ii += 1;
		y -= 1;
	}

}


/*******************************************************************************
//函数名:void Print16(INT16U y,INT16U x,INT8U ch[],INT16U yn)
//功能:在屏幕上显示汉字
//输入:x ,y 坐标,ch[]待显示的汉字,yn是否反黑
//输出:无
********************************************************************************/
void Print16(INT16U y,INT16U x,INT8U ch[],INT16U yn)
{
	INT8U wm ,ii = 0;
	INT16U adder;

	wm = 0;
	adder = 1;
	while(FontNew8X16_Index[wm] > 128)
	{
		if(FontNew8X16_Index[wm] == ch[ii])
		{
			if(FontNew8X16_Index[wm + 1] == ch[ii + 1])
			{
				adder = wm * 14;
				break;
			}
		}
		wm += 2;				//找到汉字在索引中的位置
	}
	SetRamAddr(y , x);

	if(adder != 1)					//找到汉字,显示出来	
	{
		
		for(wm = 0;wm < 14;wm++)
		{
			SetRamAddr(y , x);
			if(yn == 0)
			{
				WriteLCD(DATA, ~FontNew16X16[adder]);
			}
			else
			{
				WriteLCD(DATA, FontNew16X16[adder]);
			}
			adder += 1;
			x += 1;
		}
                for(wm = 0;wm < 2;wm++)
		{
			SetRamAddr(y , x);
			if(yn == 0)
			{
				WriteLCD(DATA, 0xff);
			}
			else
			{
				WriteLCD(DATA, 0x00);
			}
			x += 1;
		}
		y += 1;
		x -=16;

		for(wm = 0;wm < 14;wm++)
		{
			SetRamAddr(y , x);
			if(yn == 0)
			{
				WriteLCD(DATA, ~FontNew16X16[adder]);
			}
			else
			{
				WriteLCD(DATA, FontNew16X16[adder]);
			}
			adder += 1;
			x += 1;
		}
                for(wm = 0;wm < 2;wm++)
		{
			SetRamAddr(y , x);
			if(yn == 0)
			{
				WriteLCD(DATA, 0xff);
			}
			else
			{
				WriteLCD(DATA, 0x00);
			}
			x += 1;
		}


	}
	else						//找不到字显示空格			
	{
		ii += 1;

		for(wm = 0;wm < 16;wm++)
		{
			SetRamAddr(y , x);
			if(yn == 0)
			{
				WriteLCD(DATA, 0xff);
			}
			else
			{
				WriteLCD(DATA, 0x00);
			}
			x += 1;
		}
		y += 1;
		x -= 16;
		for(wm = 0;wm < 16;wm++)
		{
			SetRamAddr(y , x);
			if(yn == 0)
			{
				WriteLCD(DATA, 0xff);
			}
			else
			{
				WriteLCD(DATA, 0x00);
			}
			x += 1;
		}
	}
}


/*******************************************************************************
//函数名:void Print(INT8U y, INT8U x, INT8U ch[], INT16U yn)
//功能:实现汉字及字母混合显示
//输入:x ,y 坐标,ch[]待显示的汉字或字母,yn是否反黑
//输出:无
********************************************************************************/
void Print(INT8U y, INT8U x, INT8U ch[], INT16U yn)
{
	INT8U ch2[3];
	INT8U ii;
        ii = 0;
	while(ch[ii] != '\0')
	{
		if(ch[ii] > 128)
		{
			ch2[0] = ch[ii];
	 		ch2[1] = ch[ii + 1];
			ch2[2] = '\0';			//汉字为两个字节
			Print16(y , x , ch2 , yn);	//显示汉字
			x += 16;
			ii += 2;
		}
		else
		{
			ch2[0] = ch[ii];	
			ch2[1] = '\0';			//字母占一个字节
			Print8(y , x , ch2 , yn);	//显示字母
			x += 8;
			ii += 1;
		}
	}
}

/*******************************************************************************
//函数名:void Rectangle(INT8U x1,INT8U y1,INT8U x2,INT8U y2)
//功能:画直线函数,本函数目前只能画水平和垂直线
//输入:x1,y1(第一个点)   x2,y2第二个点
//输出:无
********************************************************************************/
void Rectangle(INT8U x1,INT8U y1,INT8U x2,INT8U y2)
{

	INT8U ii;

	for(ii=x1; ii<x2; ii++)
	{		
		SetRamAddr(y1,ii);
                WriteLCD(DATA , 0x08);	//画横线
                SetRamAddr(y2,ii);
                WriteLCD(DATA , 0x08);
	}
	SetRamAddr(y1,x1);
        WriteLCD(DATA , 0xF0);
	SetRamAddr(y1,x2);
        WriteLCD(DATA , 0xf0);

	for(ii = y1+1;ii<y2;ii++)
	{		
	 	SetRamAddr(ii,x1);
                WriteLCD(DATA , 0xFF);
	 	SetRamAddr(ii,x2);//画竖线
                WriteLCD(DATA , 0xFF);
	}

	SetRamAddr(y2,x1);
        WriteLCD(DATA , 0x0F);
	SetRamAddr(y2,x2);
        WriteLCD(DATA , 0x0F);
}



/*******************************************************************************
//函数名:void LoadICO(void)
//功能:打开一个指定指针的图标
//输入:
//输出:无
********************************************************************************/
void LoadICO(void)
{

	INT8U i,j;
        for(i=0; i<8; i++)
        {
                SetRamAddr(i , 0);
	        for(j = 0;j < 128;j++)
                {
                        WriteLCD(DATA, WXL112X64[j+i*128]);
	        }
        }
}


/*******************************************************************************
//函数名:void Printn(INT8U xx ,INT8U yy , INT32U no,INT8U yn,INT8U le)
//功能:显示一个6*8无符号数据
//输入:xx , yy屏幕当中位置,no待显示数据 yn=0正常显示 yn=1反黑显示  le有效位
//输出:无
********************************************************************************/
void Printn(INT8U xx ,INT8U yy , INT32U no,INT8U yn,INT8U le)
{
	INT8U ch2[6];
	INT8U ii;

	for(ii = 1 ; ii <= le ;)
	{
		ch2[le - ii] = no % 10 + 0x30;
		no /= 10;
		ii += 1;
	}
	ch2[le] = '\0';
	Print6(xx ,yy ,ch2 ,yn);
}

⌨️ 快捷键说明

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