【C51自学笔记】LCD1602

LCD1602:

(16*2字符

A:当前显示

B:当前无法显示

初始化:

 #include<reg52.h>
#define uchar unsigned char 
#define uint unsigned int 

sbit rs=P2^4;
sbit rw=P2^5;
sbit e=P2^6;

uchar table1[]=" www.tlxmcu.com ";
uchar table2[]="LCD1602 test ok!";
//************************************************
//延时函数,在12MHz的晶振频率下
//大约50us的延时
//************************************************
void delay_50us(uint t)
{
	uchar j;
	for(;t>0;t--)
        for(j=19;j>0;j--);
}

void write_com(uchar com)//写指令
{
	e=0;
	rs=0;
	rw=0;
	
	P0=com;//送指令
	
	delay_50us(10);
	e=1;
	delay_50us(20);
	e=0;
}

void write_data(uchar dat)
{
	e=0;
	rs=1;
	rw=0;
	P0=dat;
	delay_50us(10);
	e=1;
	delay_50us(20);
	e=0;	
}

void init(void)
{
	// 根据开发手册的初始化
	delay_50us(300);
	write_com(0x38);
	delay_50us(100);
	write_com(0x38);
	delay_50us(100);
	write_com(0x38);
	write_com(0x38);
	write_com(0x08);
	write_com(0x01);
	write_com(0x06);
	write_com(0x0c);
}

void main()
{
	uchar j;
	init();//初始化
	write_com(0x80);//初始化首位置(指针)
	for(j=0;j<16;j++)
	{
		write_data(table1[j]);
		delay_50us(10);
	}
	write_com(0x80+0x40);//指针换行
	for(j=0;j<16;j++)
	{
		write_data(table2[j]);
		delay_50us(10);	
	}
	while(1);

		
}

猜你喜欢

转载自blog.csdn.net/f_zmmfs/article/details/81159255