查看: 1575  |  回复: 0
LCD12864调试步骤
菜鸟在路上
15
主题
6
回复
发表于2018-11-14 01:05:28 | 只看该作者
1# 电梯直达

最开始调试12864时,不知道怎么调,网上翻了比较多的教程也没找到比较好的方法,最后还是做出来了,不过画费了许多不必要的时间,发个贴给后面学习的看下,应该对你们有帮助,1,其实就是程序了,主要是初始化,字符写入,写数据,发下代码

void LCD12864_Init()

{
LCD12864_PSB = 1;   //选择并行输入
LCD12864_RST = 1;   //复位

LCD12864_WriteCmd(0x30);  //选择基本指令操作
LCD12864_WriteCmd(0x0c);  //显示开,关光标
LCD12864_WriteCmd(0x01);  //清除LCD12864的显示内容
}

/*******************************************************************************
* 函 数 名         : LCD12864_STR
* 函数功能    : 设置在基本指令模式下设置显示坐标,且数据显示。
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
 void LCD12864_STR(unsigned char X,unsigned char Y,unsigned char *str)
 {
  EA = 0;
switch(Y)
{
case 0: LCD12864_WriteCmd(0x80+X);break;
case 1: LCD12864_WriteCmd(0x90+X);break;
case 2: LCD12864_WriteCmd(0x88+X);break;
case 3: LCD12864_WriteCmd(0x98+X);break;
}
while(*str>0)
{
LCD12864_WriteData(*str);
str++;
}
EA = 1;

 }

/*******************************************************************************
* 函 数 名         : LCD12864_WriteData
* 函数功能    : 写数据
* 输    入         : dat
* 输    出         : 无
*******************************************************************************/

void LCD12864_WriteData(unsigned char dat)
{
unsigned char i;
i = 0;
while( LCD12864_Busy() == 0)
{
Delay1ms(1);
i++;
if( i>100)
{
return;    //超过等待退出
}
}

LCD12864_RS = 1;     //选择数据
LCD12864_RW = 0;     //选择写入
LCD12864_EN = 0;     //初始化使能端

LCD12864_DATAPORT = dat;   //放置数据

LCD12864_EN = 1;    //写时序
Delay1ms(5);
LCD12864_EN = 0;   
}

然后写个主程序让他随便显示几个字就行,但有些人会遇到这样的问题,明明程序一点问题没有,但屏幕上就一点显示就没有,这时候其实可能是那个屏后面电位器没调好,然后屏幕亮度对必度不行,没显示。12864,屏幕不显示可能会有好多原因,程序初始化,清屏函数写的错误,但我觉得最坑的还是屏本身电位器没调导致的没有任何显示,大家如果遇到其他问题的话也可以评论讨论下

主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部