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

📄 lcd19264.c

📁 基于keil C开发环境的ARM 2119液晶显示程序开发。
💻 C
📖 第 1 页 / 共 2 页
字号:
	IOCLR0 = 0x0000ff00 - (Command << 8);

	IOSET0 = 1<<LCDOE;	             			// LCDOE =1 
	IOCLR0 = 1<<LCDOE;	             			// LCDOE =0 
}

void WriteMiddleData(unsigned char nData)
{
unsigned char nStatus;
unsigned long Data;

	Data = invertchar(nData);
	IOSET1 = (1<<LCDCS1) | (1<<LCDCS3);	
	IOCLR1 = (1<<LCDCS2) | (1<<LCDCOMMAND);

	IOSET0 = (1<<LCDRD);
	IODIR0 &= 0xFFFF00FF; 						//P0.15:8 input

	do
	{
		IOSET0 = 1<<LCDOE;	             		// LCDOE =1
		nStatus =  (unsigned char) (IOPIN0 >> 8);
		IOCLR0 = 1<<LCDOE;	             		// LCDOE =0	
	}while(nStatus & 0x01);				 			

	IOSET1 = 1<<LCDDATA; 
	IOCLR0 = (1<<LCDWR);
	IODIR0 |= 0x0000FF00;    					//P0.15:8  output
	
	IOSET0 = Data << 8;
	IOCLR0 = 0x0000ff00 - (Data << 8);
	 
	IOSET0 = 1<<LCDOE;	              			// LCDOE =1
	IOCLR0 = 1<<LCDOE;	              			// LCDOE =0 	
}	 

void WriteRightCommand(unsigned char nCommand)
{
unsigned char nStatus;
unsigned long Command;

	Command = invertchar(nCommand);

	IOSET1 = (1<<LCDCS1) | (1<<LCDCS2) ;	
	IOCLR1 = (1<<LCDCS3) | (1<<LCDCOMMAND);   

	IOSET0 = (1<<LCDRD);
	IODIR0 &= 0xFFFF00FF; 	    				//P0.15:8 input	

	do
	{  		
		IOSET0 = 1<<LCDOE;	              		// LCDOE =1
		nStatus = (unsigned char) (IOPIN0 >> 8);		   
		IOCLR0 = 1<<LCDOE;	              		// LCDOE =0	
	}while(nStatus & 0x01);
			   
	IOCLR0 = (1<<LCDWR);
	IODIR0 |= 0x0000FF00;       				//P0.15:8 output

	IOSET0 = Command << 8;
	IOCLR0 = 0x0000ff00 - (Command << 8);

	IOSET0 = 1<<LCDOE;	              			// LCDOE =1
	IOCLR0 = 1<<LCDOE;	             			// LCDOE =0	
}

void WriteRightData(unsigned char nData)
{
unsigned char nStatus;
unsigned long Data;

	Data = invertchar(nData);
	IOSET1 = (1<<LCDCS1) | (1<<LCDCS2);	
	IOCLR1 = (1<<LCDCS3) | (1<<LCDCOMMAND);		//读状态

	IOSET0 = (1<<LCDRD);
	IODIR0 &= 0xFFFF00FF; 						//P0.15:8 input

	do
	{
		IOSET0 = 1<<LCDOE;	              		// LCDOE =1
		nStatus =  (unsigned char) (IOPIN0 >> 8);
		IOCLR0 = 1<<LCDOE;	             		// LCDOE =0		
	}while(nStatus & 0x01);

	IOSET1 = 1<<LCDDATA;	//写数据

	IOCLR0 = (1<<LCDWR);
	IODIR0 |= 0x0000FF00;    					//P0.15:8 output
	
	IOSET0 = Data << 8;
	IOCLR0 = 0x0000ff00 - (Data << 8);
	 
	IOSET0 = 1<<LCDOE;	              			// LCDOE =1
	IOCLR0 = 1<<LCDOE;	              			// LCDOE =0 	
}	 

void Clear_Lcd(void)
{
unsigned char i,j;

	WriteLeftCommand(0xC0);						// 设置起始行行号为0 
	WriteMiddleCommand(0xC0);	
	WriteRightCommand(0xC0);	

	WriteLeftCommand(0x3F);						//开显示 
	WriteMiddleCommand(0x3F);	
	WriteRightCommand(0x3F);	

	for(i=0;i<8;i++)
	{
	 	for(j=0;j<64;j++)
		{
			WriteLeftCommand(i | 0xB8);
			WriteLeftCommand(j | 0x40);
			WriteLeftData(0x00);
		}				
	}

	for(i=0;i<8;i++)
	{
		for(j=0;j<64;j++)
		{
			WriteMiddleCommand(i | 0xB8);
			WriteMiddleCommand(j | 0x40);
			WriteMiddleData(0x00);
		}
	}
 	for(i=0;i<8;i++)
	{
		for(j=0;j<64;j++)
		{
			WriteRightCommand(i | 0xB8);   //页地址
			WriteRightCommand(j | 0x40);	// 列地
			WriteRightData(0x00);
		}
	}
}

void ShowData(unsigned char xPos,unsigned char yPos,unsigned char nData)
{
	unsigned char xNum = xPos/64;
	switch(xNum)
	{
		case 0:
			WriteLeftCommand(yPos/8 | 0xB8);//页
			WriteLeftCommand((xPos-64*xNum) | 0x40); //列
			WriteLeftData(nData);
			break;
	   	case 1:
			WriteMiddleCommand(yPos/8 | 0xB8);
			WriteMiddleCommand((xPos-64*xNum) | 0x40);
			WriteMiddleData(nData);
			break;
	   	case 2:
			WriteRightCommand(yPos/8 | 0xB8);
			WriteRightCommand((xPos-64*xNum) | 0x40);
			WriteRightData(nData);
			break;
	}
}

/*  显示汉字 */
void ShowHZ(unsigned char xOrigin, unsigned char yOrigin, unsigned char nIndex)
{
	unsigned char i,j,xpos,ypos;
	for(i=0;i<16;i++)
	{
		xpos = xOrigin+i;
		for(j=0;j<2;j++)
		{
			ypos = yOrigin+j*8;
			ShowData(xpos,ypos,HZCode[nIndex][j*16+i]);  
		}
	}
}
/*  反相显示汉字 */
void ShowInvHZ(unsigned char xOrigin, unsigned char yOrigin, unsigned char nIndex)
{
	unsigned char i,j,xpos,ypos;
	for(i=0;i<16;i++)
	{
		xpos = xOrigin+i;
		for(j=0;j<2;j++)
		{
			ypos = yOrigin+j*8;
			ShowData(xpos,ypos,~HZCode[nIndex][j*16+i]);  
		}
	}
}

/*  显示数字 */
void ShowNum(unsigned char xOrigin,unsigned char yOrigin,unsigned char ndata)
{
	unsigned char i,j,xpos,ypos;
	for(i=0;i<8;i++)
	{
		xpos = xOrigin+i;
		for(j=0;j<2;j++)
		{
			ypos = yOrigin+j*8;
			ShowData(xpos,ypos,NumCode[ndata][j*8+i]);  
		}
	}
}
/* 反相显示数字 */
void ShowInvNum(unsigned char xOrigin,unsigned char yOrigin,unsigned char ndata)
{
	unsigned char i,j,xpos,ypos;
	for(i=0;i<8;i++)
	{
		xpos = xOrigin+i;
		for(j=0;j<2;j++)
		{
			ypos = yOrigin+j*8;
			ShowData(xpos,ypos,~NumCode[ndata][j*8+i]);  
		}
	}
}

void DrawLeftLine()
{
	ShowData(48,16,0x01);	ShowData(49,17,0x02);	ShowData(50,18,0x04);	ShowData(51,19,0x08);	ShowData(52,20,0x10);
	ShowData(53,21,0x20);	ShowData(54,22,0x40);	ShowData(55,23,0x80);	ShowData(56,24,0x01);	ShowData(57,25,0x06);
	ShowData(58,27,0x08);	ShowData(59,28,0x10);	ShowData(60,29,0x20);	ShowData(61,30,0x40);	ShowData(62,31,0x80);
	ShowData(63,32,0x01);	ShowData(64,33,0x02);	ShowData(65,34,0x04);	ShowData(66,35,0x18);	ShowData(67,37,0x20);
	ShowData(68,38,0x40);	ShowData(69,39,0x80);	ShowData(70,40,0x01);	ShowData(71,41,0x02);	ShowData(72,42,0x04);
	ShowData(73,43,0x08);	ShowData(74,44,0x10);	ShowData(75,45,0x60);	ShowData(76,47,0x80);	ShowData(77,48,0x01);
	ShowData(78,49,0x02);	ShowData(79,50,0x04);	ShowData(80,51,0x08);	ShowData(81,52,0x10);	ShowData(82,53,0x20);
	ShowData(83,54,0x40);	ShowData(84,55,0x80);	ShowData(85,56,0x01);	ShowData(86,57,0x02);	ShowData(87,58,0x04);
}

void DrawRightLine()
{
	ShowData(104,58,0x04);	ShowData(105,57,0x02);	ShowData(106,56,0x01);	ShowData(107,55,0x80);	ShowData(108,54,0x40);
	ShowData(109,53,0x20);	ShowData(110,52,0x10);	ShowData(111,51,0x08);	ShowData(112,50,0x04);	ShowData(113,49,0x02);
	ShowData(114,48,0x01);	ShowData(115,47,0x80);	ShowData(116,45,0x60);	ShowData(117,44,0x10);	ShowData(118,43,0x08);
	ShowData(119,42,0x04);	ShowData(120,41,0x02);	ShowData(121,40,0x01);	ShowData(122,39,0x80);	ShowData(123,38,0x40);
	ShowData(124,37,0x20);	ShowData(125,35,0x18);	ShowData(126,34,0x04);	ShowData(127,33,0x02);	ShowData(128,32,0x01);
	ShowData(129,31,0x80);	ShowData(130,30,0x40);	ShowData(131,29,0x20);	ShowData(132,28,0x10);	ShowData(133,27,0x08);
	ShowData(134,25,0x06);	ShowData(135,24,0x01);	ShowData(136,23,0x80);	ShowData(137,22,0x40);	ShowData(138,21,0x20);
	ShowData(139,20,0x10);	ShowData(140,19,0x08);	ShowData(141,18,0x04);	ShowData(142,17,0x02);	ShowData(143,16,0x01);				
}




/* 显示欢呼界面  */
/*
       恒茂科技
       ZL-1型
  卷染机恒张力控制系统
     0512-63564002
*/
void ShowWelcomeLog(void)
{
unsigned long x;

	Clear_Lcd();

	/* 第一行:  恒茂科技 */
	x = 64;
	ShowInvHZ(x, 0, 28);	x += 16;
	ShowHZ(x, 0, 29);   x += 16;
	ShowHZ(x, 0, 30);   x += 16;
	ShowHZ(x, 0, 31);
	/* 第二行:  ZL-1型 */
	x = 72;
	ShowHZ(x, 16, 32);  x += 16;
	ShowHZ(x, 16, 33);  x += 16;
	ShowHZ(x, 16, 34); 

	/* 第三行: 卷染机恒张力控制系统 */
	x = 16;
	ShowHZ(x, 32, 35);  x += 16;
	ShowHZ(x, 32, 36);  x += 16;
	ShowHZ(x, 32, 37);  x += 16;
	ShowHZ(x, 32, 28);  x += 16;
	ShowHZ(x, 32, 38);  x += 16;
	ShowHZ(x, 32, 39);  x += 16;
	ShowHZ(x, 32, 40);  x += 16;
	ShowHZ(x, 32, 41);  x += 16;
	ShowHZ(x, 32, 42);  x += 16;
	ShowHZ(x, 32, 43);

	/* 第四行: 0512-63564002 */
	x = 40;
	ShowNum(x, 48, 0);  x += 8;
	ShowNum(x, 48, 5);  x += 8;
	ShowNum(x, 48, 1);  x += 8;
	ShowNum(x, 48, 2);  x += 8;
	ShowHZ(x, 48, 44);  x += 16;
	ShowNum(x, 48, 6);  x += 8;
	ShowNum(x, 48, 3);  x += 8;
	ShowNum(x, 48, 5);  x += 8;
	ShowNum(x, 48, 6);  x += 8;
	ShowNum(x, 48, 4);  x += 8;
	ShowNum(x, 48, 0);  x += 8;
	ShowNum(x, 48, 0);  x += 8;
	ShowNum(x, 48, 2);  x += 8;
}

⌨️ 快捷键说明

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