12864液晶屏初始化问题

2025-01-07 16:16:18
推荐回答(2个)
回答1:

改初始化就OK了,但要注意调对比度的问题。也就是VO,VEE引脚是否要接
PSB接5V是并口,RST就最好悬空或者接IO吧,不要接5V了。
最主要的就调对比度。
另外,推荐你试试锐显科技的液晶,他们的1602和12864都不错。

回答2:

很简单,控制硬件连接

#包括
#包括

/ /定义引脚

#定义LCD_DATA P1 / /数据端口
SBIT的RS = P2 ^ 0; / /并行的指令/数据选择信号,H数据,L命令
在SBIT RW = P2 ^ 1 / /并行读写,只读HL选择信号,写
可以结束; / /和行使有效的红莲,一个无效的E = P2 ^ 2 SBIT

/ /要显示
????
一个无符号的字符代码Tab1上[] = {“自定义内容”};
一个无符号的字符代码TAB2 [] = {“自定义内容”};
无符号的字符代码TAB3 [] = {“自定义内容”};
无符号字符的代码Tab4 [] = {“自定义内容”};

/ /延时子程序

的无效Delay1mS(unsigned int类型TT)/ /延时TT MS
{
无符号字符我;
而(TT - )
??(I = 113> 0;我 - );
}

位CheckBusy()/ /读取BF标志位,检查液晶准备
{
RS = 0;
样本1 - ();
刻录= 1;
样本1 - ();
= 1;
样本1 - ();

如果(LCD_DATA&0x80的)
返回1;
其他
返回0;
}

无效等待()/ /等待液晶就绪
{

}

/ *无符号的char的read_data()/ /读取数据
{
等待();
当RS = 1;
刻录= 1;
= 1;
样本1 - ();
返回LCD_DATA;
}
* /
WRITE_DATA(无符号字符DAT)/ /写一个字节数据
{

等待();
当RS = 1;
RW = 0;
= 1;
样本1 - ();
LCD_DATA = DAT;
= 0;
样本1 - ();
}

Write_Command(无符号字符DAT)/ /写命令
{
等待();
RS = 0;
RW = 0;
= 1;
样本1 - ();
LCD_DATA = DAT;
= 0;
样本1 - ();
}

Write_String(无符号的char * P)/ /写字符串
{
一个char CNT = 0;
(*(P + CNT)!='\ 0')
{
??WRITE_DATA(*(P + CNT));
??CNT +;
}
}

的的无效LCD_Init()/ /初始化LCD
{
Write_Command(0x30处);/ /基本指令,扩展指令为34H
Delay1mS(1);
Write_Command(0x0c);/ /打开和关闭游标打开游标0x0E的
Delay1mS(1);
Write_Command状态(0x01);/ /清除屏幕
Delay1mS(1);
}

的无效Set_Position(无符号字符X,无符号字符?)/ /设置要显示的位置
{
??无符号字符P;
??开关(X%4)
??
???0的情况下:P = 0x80的突破; / /地址的第一行
???案例1:P = 0x90;休息; / /第二行
???例2:P =均为0x88;休息; / /第三行
???案例3:P = 0x98;休息; / /第四行
??}
?P + =;
??Write_Command(P);
}

主要()
{

LCD_Init();
Set_Position(0,0);
Write_String(TAB1);
Set_Position(1,0);
Write_String(TAB2);
Set_Position(2,0);
Write_String(TAB3);
Set_Position(3,0);
Write_String(Tab4);
(1);
}