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

📄 12864lcd.c

📁 51开发板的源程序
💻 C
📖 第 1 页 / 共 3 页
字号:
}

/*------------------显示12864图片---------------------------*/
static void Disp_Img(unsigned char code *img)
{
	unsigned char j,k;
	EA = 0;
	 for(k=0;k<8;k++)
	 {
		Mcs=1;Scs=0;delay(10);
		write_com(Page_Add+k);
		write_com(Col_Add+0);
		for(j=0;j<64;j++)
	   		write_data(img[k*128+j]);
		Mcs=0;Scs=1; delay(10);
		write_com(Page_Add+k);
		write_com(Col_Add+0);
		for(j=64;j<128;j++)
		  	write_data(img[k*128+j]);
	 }
  	EA = 1;
}

void LcdRs()
{
	Lcd_Rst=0;
	Lcd_Rst=1;
	Mcs=1;
	Scs=1;
	write_com(Disp_On);
}




/*------------------初始化LCD屏--------------------------*/
void LcdInit()
{
	Lcd_Rst=0;
	Lcd_Rst=1;	
	Mcs=1;
	Scs=1;
	write_com(Disp_Off);
	write_com(Page_Add+0);
	write_com(Start_Line+0);
	write_com(Col_Add+0);
	write_com(Disp_On);
	Disp_Img(FirstPage);
}

/*------------------清除内存---------------*/
void CLEAR_SCREEN()
{	
	uchar j,k;
	EA = 0;
	Mcs=1;Scs=1;
	write_com(Page_Add+0);
	write_com(Col_Add+0);
	
	for(k=0;k<8;k++)
	{
		write_com(Page_Add+k);
	  	for(j=0;j<64;j++)
			write_data(0x00);
	}
	EA = 1;
}

/*---------------------指定位置英文字符和汉字-----------------------*/

void DisplayStr(uchar lcd_x,uchar lcd_y,char *ptr)
{
	char  c1,c2;
	uchar code *asc_ptr;

	uint i,j,w,k;
	bit flag;
	EA = 0;
     i=0;	
	w = lcd_x;
	Mcs=1;
	Scs=0;
	if(lcd_x>=8)
	{
		lcd_x = lcd_x - 8;
		Mcs = 0;
		Scs = 1;
	}
	lcd_y = lcd_y*2;
	while(ptr[i] != 0)
	{
		if(w==8)
		{
			lcd_x = 0;
			Mcs=0;
			Scs=1;
		}
		if(w>15)
			break;		
		c1 = ptr[i];
		c2 = ptr[i+1];
		SetPos(lcd_x,lcd_y);		
		if(c1=='\n')
		{
			lcd_y++;
			lcd_y++;
			lcd_x = 0;
			w = 0;
			Mcs=1;
			Scs=0;
			i++;
			c1 = ptr[i];
			c2 = ptr[i+1];
			SetPos(lcd_x,lcd_y);
		}
		if(c1 >= 0x20)			//// ASCII
		{	
			asc_ptr = ASC_MSK + (c1-0x20)*ASC_CHR_HEIGHT-(16-ASC_CHR_HEIGHT);
			for(j=0;j<16;j++)			//写16行
			{
				if(j==8)
				{
					lcd_y++;
					SetPos(lcd_x,lcd_y);
				}
				write_data(*asc_ptr++);
			}
			lcd_y--;
		}
		else				// 中文
		{	
			if(w>14)
				break;
			flag = 0;
			for(j=0;j<sizeof(GB_16)/sizeof(GB_16[0]);j++)
				if(c1 == GB_16[j].Index[0] && c2 == GB_16[j].Index[1])
					break;
			for(k=0;k<sizeof(GB_16[0].Msk)/2;k++)
			{
				if(k==8 && flag)
				{
					flag = 0;
					Mcs=1;
					Scs=0;
					lcd_y++;
					lcd_x = 7;
					SetPos(lcd_x,lcd_y);
				}
				else if(k == 8)
				{
					lcd_y++;
					SetPos(lcd_x,lcd_y);
				}
				if(k==4 && lcd_x==7 && !flag)
				{
					flag = 1;
					lcd_x = 0;
					Mcs=0;
					Scs=1;
					SetPos(lcd_x,lcd_y);
				}
				if(k==12 && lcd_x==7 && !flag)
				{
					flag = 1;
					lcd_x = 0;
					Mcs=0;
					Scs=1;
					SetPos(lcd_x,lcd_y);
				}
				if(j < sizeof(GB_16)/sizeof(GB_16[0]))
				{
					write_data(GB_16[j].Msk[k*2]);
					write_data(GB_16[j].Msk[k*2+1]);
				}
				else						// 未找到该字
				{
					write_data(0);
					write_data(0);
				}
			}
			lcd_y--;
			if(!flag)
				lcd_x++;
			w++;
			i++;
		}
		lcd_x++;
		w++;
		i++;
	}
	EA = 1;
}


/*-----------------在制定位置显示字符--------------------------*/

void DisplayType(uchar lcdx,uchar lcdy,uchar value)
{
	uchar i;
	uchar code *asc_ptr;
	EA = 0;
	if(lcdx>=8)
	{
		lcdx = lcdx-8;
		Mcs=0;
		Scs=1;
	}else
	{
		Mcs=1;
		Scs=0;
	}
	lcdy = lcdy*2;
	SetPos(lcdx,lcdy);
	asc_ptr = ASC_MSK + (value-0x20)*ASC_CHR_HEIGHT-(16-ASC_CHR_HEIGHT);
	for(i=0;i<16;i++)			//写16行
	{
		if(i==8)
		{
			lcdy++;
			SetPos(lcdx,lcdy);
		}
		write_data(*asc_ptr++);
	}
	EA = 1;
}

/*------------------在制定位置显示'|'-----------------------------*/
void DispRow(uchar lcd_x,uchar lcd_y)
{
	EA = 0;
	if(lcd_x>=64)
	{
		lcd_x = lcd_x-64;
		Mcs=0;
		Scs=1;
	}else
	{
		Mcs=1;
		Scs=0;
	}
	write_com(Col_Add+lcd_x);
	write_com(Page_Add+lcd_y);
	write_data(0xfe);
	write_com(Col_Add+lcd_x);
	write_com(Page_Add+lcd_y+1);
	write_data(0x7f);
	EA = 1;
}

⌨️ 快捷键说明

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