lcd1602.c

来自「AT89c51单片机下,液晶显示LCD1602的c语言驱动程序,原创代码」· C语言 代码 · 共 108 行

C
108
字号
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit lcdrs=P3^2;
sbit lcdrw=P3^1;
sbit lcde=P3^0;

uchar code table[]="I LOVE YOU !";
uchar code table1[]="YOU ARE MY ONLY!";

void delay(uint n)//延时nms
{
	uint i,j;
	for(i=n;i>0;i--)
		for(j=110;j>0;j--);
}
void write_com(uchar x)
{
	uchar y;
	y=x;
	P2=y;	
}

void write_data(uchar date)
{
	uchar y;
	y=date;
	P2=y;	
}

void init()
{
	lcdrs=0;
	lcdrw=0;
	lcde=0;
	delay(1);
	write_com(0x38);//显示模式设置
	delay(10);
	lcde=1;
	delay(1);
	lcde=0;
	delay(1);

	write_com(0x0f);//显示开关及光标设置
	delay(1);
	lcde=1;
	delay(1);
	lcde=0;
	delay(1);

	write_com(0x06);//显示模式设置
	delay(1);
	lcde=1;
	delay(1);
	lcde=0;
	delay(1);
}
void main()
{
	uint i;
	init();

	write_data(0x80);//设置数据指针
	delay(1);
	lcde=1;	//使能脉冲
	delay(1);
	lcde=0;
	delay(1);

	for(i=0;i<12;i++)
	{
		lcdrs=1;//写数据控制位设置
		lcdrw=0;
		lcde=0;
		delay(1);
		write_data(table[i]); //写数据
		delay(1);
		lcde=1;	 //使能脉冲
		delay(1);
		lcde=0;
		delay(1);
	}

	lcdrs=0; //写数据控制位设置
	delay(1);
	write_com(0x80+0x40);//设置数据指针
	delay(1);
	lcde=1;	//使能脉冲
	delay(1);
	lcde=0;
	delay(1);
	for(i=0;i<16;i++)
	{
		lcdrs=1;
		lcdrw=0;
		lcde=0;
		delay(1);
		write_data(table1[i]); //写数据
		delay(1);
		lcde=1;	 //使能脉冲
		delay(1);
		lcde=0;
		delay(1);
	}

	while(1);
}

⌨️ 快捷键说明

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