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);
}