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

📄 lcd.c

📁 用C8051F020实现的基于TCP/IP协议的虚功率源。C8051F020外接LCD,键盘,USB接口
💻 C
📖 第 1 页 / 共 2 页
字号:
	write_lcd(yy + 0x09);
	write_lcd(0x66);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0A);
	write_lcd(0x4C);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0B);
	write_lcd(0x3F);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0C);
	write_lcd(0x0C);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0D);
	write_lcd(0x3E);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0E);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0F);
	write_lcd(0x00);

	xx = xx+1;
	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x01);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x02);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x03);
	write_lcd(0xC0);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x04);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x05);
	write_lcd(0xC0);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x06);
	write_lcd(0x20);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x07);
	write_lcd(0x60);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x08);
	write_lcd(0x60);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x09);
	write_lcd(0x60);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0A);
	write_lcd(0xC0);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0B);
	write_lcd(0x80);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0C);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0D);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0E);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0F);
	write_lcd(0x00);
}

void display_P(uchar xx,uchar yy)	//显示斜体的'P'
{
	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x01);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x02);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x03);
	write_lcd(0x0F);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x04);
	write_lcd(0x0C);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x05);
	write_lcd(0x0C);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x06);
	write_lcd(0x0C);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x07);
	write_lcd(0x18);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x08);
	write_lcd(0x1F);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x09);
	write_lcd(0x18);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0A);
	write_lcd(0x30);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0B);
	write_lcd(0x30);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0C);
	write_lcd(0x30);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0D);
	write_lcd(0xF8);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0E);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0F);
	write_lcd(0x00);

	xx = xx+1;
	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x01);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x02);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x03);
	write_lcd(0xC0);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x04);
	write_lcd(0x60);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x05);
	write_lcd(0x60);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x06);
	write_lcd(0x60);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x07);
	write_lcd(0xC0);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x08);
	write_lcd(0x80);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x09);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0A);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0B);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0C);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0D);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0E);
	write_lcd(0x00);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x0F);
	write_lcd(0x00);
}

void display_degree(uchar xx,uchar yy)	//显示度数符号
{
	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy);
	write_lcd(0x60);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x01);
	write_lcd(0x90);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x02);
	write_lcd(0x90);

	write_lcd(0xF3);
	write_lcd(xx);
	write_lcd(yy + 0x03);
	write_lcd(0x60);
}

void interface_menu(void)
{
	uchar code *p;					//显示"显示主界面"
	p = menu1;
	if(Line==1)
		write_lcd(0xFA);
	display_chn(1,1,p,5);
	if(Line==1)
		write_lcd(0xFA);

	p = menu2;						//显示"通信方式配置"
	if(Line==2)
		write_lcd(0xFA);
	display_chn(1,3,p,9);
	if(Line==2)
		write_lcd(0xFA);

	p = menu3;						//显示"校准"
	if(Line==3)
		write_lcd(0xFA);
	display_chn(1,5,p,2);
	if(Line==3)
		write_lcd(0xFA);

	p = lcd_select;
	display_eng(24,0,p,6);
	p = lcd_return;
	display_eng(24,112,p,6);

	write_lcd(0xF9);		//上箭头
	write_lcd(27);
	write_lcd(32);
	write_lcd(128);

	write_lcd(0xF9);		//下箭头
	write_lcd(27);
	write_lcd(80);
	write_lcd(129);
}

void interface_communication(void)
{
	uchar code *p;
	p = communication1;
	display_chn(1,1,p,9);

	p = communication2;
	if(Line==1)
		write_lcd(0xFA);
	display_eng(4,48,p,7);
	if(Line==1)
		write_lcd(0xFA);

	p = communication3;
	if(Line==2)
		write_lcd(0xFA);
	display_eng(4,64,p,3);
	if(Line==2)
		write_lcd(0xFA);

	p = communication4;
	if(Line==3)
		write_lcd(0xFA);
	display_eng(4,80,p,3);
	if(Line==3)
		write_lcd(0xFA);

	p = lcd_select;
	display_eng(24,0,p,6);
	p = lcd_return;
	display_eng(24,112,p,6);

	write_lcd(0xF9);		//上箭头
	write_lcd(27);
	write_lcd(32);
	write_lcd(128);

	write_lcd(0xF9);		//下箭头
	write_lcd(27);
	write_lcd(80);
	write_lcd(129);
}

void interface_rs232c(void)
{
	uchar code *p1;
	uchar idata *p2;
	p1 = rs232c11;
	display_eng(2,16,p1,6);
	p1 = rs232c12;
	display_chn(4,1,p1,4);

	if(Line==1)
		write_lcd(0xFA);
	p1 = rs232c2;
	display_chn(1,3,p1,3);
	if(Line==1)
		write_lcd(0xFA);
	if(Line==1)
		{
			p1 = underline5;
			display_eng(12,48,p1,5);
			display_eng(17,48,p1,1);
			Cursor = 12;
		}
	else
		{
			p2 = value_baudrate;
			display_eng(12,48,p2,6);
		}

	if(Line==2)
		write_lcd(0xFA);
	p1 = rs232c3;
	display_chn(1,4,p1,3);
	if(Line==2)
		write_lcd(0xFA);
	if(Line==2)
		{
			p1 = underline5;
			display_eng(12,64,p1,1);
			Cursor = 12;
		}
	else
		{
			p2 = value_datadigit;
			display_eng(12,64,p2,1);
		}

	if(Line==3)
		write_lcd(0xFA);
	p1 = rs232c4;
	display_chn(1,5,p1,3);
	if(Line==3)
		write_lcd(0xFA);
	if(Line==3)
		{
			p1 = underline5;
			display_eng(12,80,p1,1);
			Cursor = 12;
		}
	else
		{
			p2 = value_stopdigit;
			display_eng(12,80,p2,1);
		}

	if(Line==4)
		write_lcd(0xFA);
	p1 = rs232c51;
	display_chn(1,6,p1,4);
	if(Line==4)
		write_lcd(0xFA);
	p1 = rs232c52;
	display_chn(6,6,p1,1);

	p1 = lcd_return;
	display_eng(24,112,p1,6);

	write_lcd(0xF9);		//上箭头
	write_lcd(27);
	write_lcd(32);
	write_lcd(128);

	write_lcd(0xF9);		//下箭头
	write_lcd(27);
	write_lcd(80);
	write_lcd(129);
}

void interface_lxi(void)
{
	uchar code *p1;
	uchar idata *p2;
	p1 = lxi11;
	display_eng(1,0,p1,3);
	p1 = lxi12;
	display_chn(2,0,p1,4);

	p1 = lxi21;
	display_chn(1,1,p1,4);
	p1 = lxi22;
	display_eng(10,16,p1,2);
	p1 = lxi23;
	display_chn(6,1,p1,2);

	p1 = lxi3;
	display_chn(1,2,p1,4);
	p1 = lxi22;
	display_eng(10,32,p1,2);
	p1 = lxi23;
	display_chn(6,2,p1,2);

	if(Line==1)
		write_lcd(0xFA);
	p1 = lxi22;
	display_eng(2,48,p1,2);
	p1 = lxi23;
	display_chn(2,3,p1,2);
	if(Line==1)
		write_lcd(0xFA);
	if(Line==1)
		{
			p1 = underline5;
			display_eng(11,48,p1,5);
			display_eng(16,48,p1,5);
			display_eng(21,48,p1,5);
			Cursor = 11;
		}
	else
		{
			p2 = value_ip;
			display_eng(11,48,p2,15);
		}

	if(Line==2)
		write_lcd(0xFA);
	p1 = lxi5;
	display_chn(1,4,p1,4);
	if(Line==2)
		write_lcd(0xFA);
	if(Line==2)
		{
			p1 = underline5;
			display_eng(11,64,p1,5);
			display_eng(16,64,p1,5);
			display_eng(21,64,p1,5);
			Cursor = 11;
		}
	else
		{
			p2 = value_mask;
			display_eng(11,64,p2,15);
		}

	if(Line==3)
		write_lcd(0xFA);
	p1 = lxi6;
	display_chn(1,5,p1,4);
	if(Line==3)
		write_lcd(0xFA);
	if(Line==3)
		{
			p1 = underline5;
			display_eng(11,80,p1,5);
			display_eng(16,80,p1,5);
			display_eng(21,80,p1,5);
			Cursor = 11;
		}
	else
		{
			p2 = value_gateway;
			display_eng(11,80,p2,15);
		}

	if(Line==4)
		write_lcd(0xFA);
	p1 = lxi71;
	display_eng(1,96,p1,3);
	p1 = lxi72;
	display_chn(2,6,p1,3);
	if(Line==4)
		write_lcd(0xFA);
    if(Line==4)
		{
			p1 = underline5;
			display_eng(11,96,p1,5);
			display_eng(16,96,p1,5);
			display_eng(21,96,p1,5);
			Cursor = 11;
		}
	else
		{
			p2 = value_dns;
			display_eng(11,96,p2,15);
		}

	p1 = lcd_return;
	display_eng(24,112,p1,6);

	write_lcd(0xF9);		//上箭头
	write_lcd(27);
	write_lcd(32);
	write_lcd(128);

	write_lcd(0xF9);		//下箭头
	write_lcd(27);
	write_lcd(80);
	write_lcd(129);
}

void write_lcd(uchar dat)
{
	while(LCD_BUSY==1)					//确保LCD模块空闲
		;
	LCD_DATABUS = dat;					//向总线送数
	LCD_REQ = 1;						//向LCD模块发送请求
	while(LCD_BUSY==0)					//等待LCD模块响应
		;
	LCD_REQ = 0;						//撤销请求
}

void display_eng(uchar xx,uchar yy,uchar *p,uchar num)
//参数分别为行,列,指向数组的指针,数组包含字符的个数
{
	for(;num>0;num--)						//向LCD循环写入p指向的数组的所有字符
		{
			write_lcd(0xF9);
			write_lcd(xx);
			write_lcd(yy);
			write_lcd(*p);					//写入ASCII码
			xx++;							//改变下一个字符的XX地址
			p++;							//准备写入下一字符
		}
}

void display_chn(uchar xx,uchar yy,uchar *p,uchar num)
//参数分别为行,列,指向数组的指针,数组包含字符的个数
{
	for(;num>0;num--)						//向LCD循环写入p指向的数组的所有字符
		{
			write_lcd(0xF0);
			write_lcd(xx);
			write_lcd(yy);
			write_lcd(*p);					//写入汉字区位码高位
			p++;
			write_lcd(*p);					//写入汉字区位码低位
			xx++;							//改变下一个字符的XX地址
			p++;							//准备写入下一字符
		}
}

void display_digit(uchar xx,uchar yy,uchar dat)
{
	write_lcd(0xF9);
	write_lcd(xx);
	write_lcd(yy);
	write_lcd(dat);
}

⌨️ 快捷键说明

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