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

📄 lcd.c

📁 LCD液晶显示代码
💻 C
字号:
#include <reg51.h>
#define 	LCD_PORT P0

sbit RS = P1^1;
sbit EN = P1^0;
sbit BF = P0^0;

LCD_Disp_Buf[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int	i;

#define		uchar unsigned char
#define		uint unsigned int

void Delay(unsigned int j);
void LCD_Display(void);
unsigned char Right_Shift(unsigned char datas);
void Wait_Until_Ready(void);
void En_Toggle(void);
void Write_Command(unsigned char command);
void Write_Data(unsigned char datas);
void Goto_Positionxy(unsigned char x, unsigned char y);
void LCD_clear(void);
void init_LCD(void);

main()
{
	unsigned char i = 0;
	init_LCD();
	Delay(20000);
	while(1);
	{
		LCD_Display();
		Delay(20000);
	}//end of while(1);
}//end of main()



void Delay(unsigned int j)
{
	while(j-->0);
}


void LCD_Display(void)
{
	Goto_Positionxy(0,0);
	for(i = 0; i <= 15; i++)
		{
			Write_Data(LCD_Disp_Buf[i]);
		}
	Goto_Positionxy(0,1);
	for(i = 0; i <= 15; i++)
		{
			Write_Data(LCD_Disp_Buf[i]);
		}
}


unsigned char Right_Shift(unsigned char datas)
{
	unsigned char temp[8], temp1 = 0x00;
	unsigned char i;
	for(i = 0; i < 8; i++)
	{
		temp[i] = ((datas>>i)&0x01);
	}
	for(i = 0; i < 8; i++)
	{
		if(temp[i] == 0x01)	temp1=((temp1 << 1) | 0x01);
		else temp1 = (temp1 << 1);
	}
	return(temp1);
}


void Wait_Until_Ready(void)
{
	RS = 0;
	P0 = 0;
	EN = 1;
	Delay(10);
	while(BF == 1);
	EN = 0;
}

void En_Toggle(void)
{
	EN = 1;
	Delay(10);
	EN = 0;
	Delay(10);
}

void Write_Command(unsigned char command)
{
	RS = 0;
	P0 = Right_Shift(command);
	En_Toggle();
	Wait_Until_Ready();
	Delay(1000);
}

void Write_Data(unsigned char datas)
{
	RS = 1;
	P0 = Right_Shift(datas);
	En_Toggle();
	Wait_Until_Ready();
	Delay(1000);
}

void Goto_Positionxy(unsigned char x, unsigned char y)
{
	unsigned char p;
	if(y == 0)
	{
		p = 0x80 + x - 1;
		Write_Command(p);
	}
	else
	{
		if(y == 1)
		{
			p = 0xc0 + x - 1;
			Write_Command(p);
		}
		else
		{
			return;
		}
	}
}

void LCD_clear(void)
{
	Write_Command(0x01);
	Delay(1000);
}


void init_LCD(void)
{
	Write_Command(0x38);
	Write_Command(0x36);
	Write_Command(0x0C);
	LCD_clear();
}

⌨️ 快捷键说明

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