1602:每行16个字符,共2行,只能显示数字字符等ascII码
12864: 图形液晶 横着128个点竖着64点
彩色液晶,单片机也可以驱动,控制液晶任意位置显示任意字符
原理图:
代码如下:
#include <reg52.h>
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;
unsigned int num;
unsigned char code table1[]="HEllO WORLD!!!";
unsigned char code table2[]="I LIKE MCU *0*";
//延时函数
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//写命令函数
void write_com(unsigned char com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
//写数据函数
void write_data(unsigned char data1)
{
lcdrs=1;
P0=data1;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
//初始化函数
void init()
{
dula=0;//关闭数码管,因数码管和液晶接口一样,防止功率不足关闭数码管
wela=0;
lcden=0;
write_com(0x38);//设置16x2显示,5*7点阵,8位数据接口
write_com(0x0f);//开显示,显示光标,光标闪烁
write_com(0x06);//当写一个字符后数据指针加一,光标加一
write_com(0x01);//清屏
write_com(0x80);//设置光标指针在第一行第一位
}
void main()
{
init();
for(num=0;num<14;num++)
{
write_data(table1[num]);
delay(20);
}
write_com(0x80+0x40);//设置光标指针在第二行第一位
for(num=0;num<14;num++)
{
write_data(table2[num]);
delay(20);
}
while(1);//程序终止在此处
}