《初学者C51自学笔记》之LED1602

 

上两图对应的;

 

如想要在00位置上显示,则指令码为(0x80+0x00或0x80)

 

 

 

#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.csdn.net ";
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/qq_40691438/article/details/81484909