Bootstrap

【PIC单片机】LCD1602 JMU使用教程

#define RS RA0
#define RW RA1	
#define E RA2	
#define DATA PORTD

void LCD1602_Delay()
{
	unsigned int i;
	for(i=999;i>0;i--);
}

void LCD1602_WriteCommand(unsigned char Command)
{
	DATA=Command;
	RS=0;RW=0;E=0;LCD1602_Delay();E=1;
}

void LCD1602_WriteData(unsigned char Data)
{
	DATA=Data;
	RS=1;RW=0;E=0;LCD1602_Delay();E=1;
}

void LCD1602_Init(void)
{
	DATA=0X00;
	LCD1602_Delay();
	LCD1602_WriteCommand(0x01);
	LCD1602_WriteCommand(0x38);
	LCD1602_WriteCommand(0x0C);
	LCD1602_WriteCommand(0x06);
	LCD1602_WriteCommand(0x80);
}


void LCD1602_WriteChar(unsigned char row,unsigned char column,unsigned char ch)
{
	unsigned char i;
	
	if(row==1)
	{
		LCD1602_WriteCommand(0x80);
	}
	else if(row==2)
	{
		LCD1602_WriteCommand(0xC0);
	}
	
	for(i=1;i<column;i++)
	{
		LCD1602_WriteCommand(0x14);
	}
	
	LCD1602_WriteData(ch);
}

int LCD1602_Pow(unsigned char X,unsigned char Y)
{
	unsigned char i;
	int result=1;
	for(i=0;i<Y;i++)
	{
		result*=X;
	}
	return result;
}


void LCD1602_WriteNum(unsigned char row,unsigned char column,unsigned int number,unsigned char lenth)
{
	unsigned char i;
	
	if(row==1)
	{
		LCD1602_WriteCommand(0x80);
	}
	else if(row==2)
	{
		LCD1602_WriteCommand(0xC0);
	}
	for(i=1;i<column;i++)
	{
		LCD1602_WriteCommand(0x14);
	}

	for(i=0;i<lenth;i++)
	{
		LCD1602_WriteData(number/LCD1602_Pow(10,lenth-i-1)%10+'0');
	}
}