找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4304|回复: 10
收起左侧

怀疑自己买的LCD12864液晶显示器时坏的,诸位帮忙看看是不是程序的问题,不然就退货了

[复制链接]
ID:387908 发表于 2018-8-19 19:51 | 显示全部楼层 |阅读模式
本帖最后由 吃瓜子不吐壳 于 2018-8-20 11:37 编辑

     初学51单片机不久,网上买了LCD12864的液晶显示器,自带ST7920字库。可是不管我怎么折腾,就是显示不出来任何东西,检查了很多遍,接线没有问题。代码也反复修改了,就是不显示任何东西!!!
      现在请大神们帮忙看下是不是代码的问题,如果代码没有问题,就是买到坏的显示器了!

#include <reg52.h>
#include <string.h>
#define u8 unsigned char
#define u16  unsigned int

sbit RS  = P2^0;//1:输入内容,0:输入指令
sbit WRD = P2^1;//读写选择:1读0写
sbit E   = P2^2;//E在上升沿时并行数据被写入显示器
sbit PSB = P2^3;//模式切换:1并行,0串行

void delay5ms(void)//5ms延时函数
{
    unsigned char a,b;
    for(b=185;b>0;b--)
        for(a=12;a>0;a--);
}

void LCD12864_CMD(u8 cmd)//向显示器写入命令
{
WRD=0;//写入模式
RS=0;//写入为命令
P1=cmd;//将命令输送到并行数据线上
E=0;//提供一个上升沿脉冲
delay5ms();
E=1;
delay5ms();
E=0;
}

void LCD12864_DAT(u8 dat)//向显示器写入数据
{
WRD=0;//写入模式
RS=1;//写入为数据
P1=dat;//将命令输送到并行数据线上
E=0;//提供一个上升沿脉冲
delay5ms();
E=1;
delay5ms();
E=0;
}

void LCD12864Init()//显示器初始化
{
PSB=1;//选择并行模式
LCD12864_CMD(0x30);//选择基本指令集
LCD12864_CMD(0x0c);//打开显示,关闭游标
LCD12864_CMD(0x01);//清屏,地址归零
}

void main()
{
LCD12864Init();//初始化
LCD12864_CMD(0x80);//设定显示地址
LCD12864_DAT(‘A’);//左上角显示一个A
}

2018/08/21更新:
首先谢谢各位的热心帮助。
问题找到了,是显示器硬件的原因,和买家沟通后了解到,产品出厂时默认把背后的S和JP2触电短接了,导致只能以串行方式通讯,而商品介绍里没有说明白这一点,我用电烙铁把焊点分开,现在能用了。

微信截图_20180820113140.png
回复

使用道具 举报

ID:386367 发表于 2018-8-20 00:42 | 显示全部楼层
Wait time >40ms , XRESET LOW to HIGH>>有没有做到这一步?

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:384109 发表于 2018-8-20 08:07 | 显示全部楼层
最好说明一下现在的显示状态,显示什么,检查电路连接是否正确,对比度是否调节妥当,背光是否连接
回复

使用道具 举报

ID:98526 发表于 2018-8-20 09:10 | 显示全部楼层
初始化的每一个指令后面多跟点延时、初始化之前加一个上电延时,初始化指令可以尝试重复多发几次
回复

使用道具 举报

ID:96682 发表于 2018-8-20 10:51 | 显示全部楼层
不就是检验液晶屏好坏么?备选其他的来测试又何妨
回复

使用道具 举报

ID:7485 发表于 2018-8-20 11:19 | 显示全部楼层
在 main 中,一直循环显示下面两句试一试:

LCD12864_CMD(0x80);//设定显示地址
LCD12864_DAT(‘A’);//左上角显示一个A
回复

使用道具 举报

ID:387908 发表于 2018-8-20 11:33 | 显示全部楼层
人中狼 发表于 2018-8-20 08:07
最好说明一下现在的显示状态,显示什么,检查电路连接是否正确,对比度是否调节妥当,背光是否连接

首先谢谢您的热心。
问题找到了,是显示器硬件的原因,和买家沟通后了解到,产品出厂时默认把背后的S和JP2触电短接了,导致只能以串行方式通讯,而商品介绍里没有说明白这一点,我用电烙铁把焊点分开,现在能用了。
回复

使用道具 举报

ID:387908 发表于 2018-8-20 11:34 | 显示全部楼层
人中狼 发表于 2018-8-20 08:07
最好说明一下现在的显示状态,显示什么,检查电路连接是否正确,对比度是否调节妥当,背光是否连接

首先谢谢您的热心。
问题找到了,是显示器硬件的原因,和买家沟通后了解到,产品出厂时默认把背后的S和JP2触电短接了,导致只能以串行方式通讯,而商品介绍里没有说明白这一点,我用电烙铁把焊点分开,现在能用了。
回复

使用道具 举报

ID:387908 发表于 2018-8-20 11:34 | 显示全部楼层
726434632 发表于 2018-8-20 09:10
初始化的每一个指令后面多跟点延时、初始化之前加一个上电延时,初始化指令可以尝试重复多发几次

首先谢谢您的热心。
问题找到了,是显示器硬件的原因,和买家沟通后了解到,产品出厂时默认把背后的S和JP2触电短接了,导致只能以串行方式通讯,而商品介绍里没有说明白这一点,我用电烙铁把焊点分开,现在能用了。
回复

使用道具 举报

ID:387908 发表于 2018-8-20 11:35 | 显示全部楼层
ahshmj 发表于 2018-8-20 11:19
在 main 中,一直循环显示下面两句试一试:

LCD12864_CMD(0x80);//设定显示地址

首先谢谢您的热心。
问题找到了,是显示器硬件的原因,和买家沟通后了解到,产品出厂时默认把背后的S和JP2触电短接了,导致只能以串行方式通讯,而商品介绍里没有说明白这一点,我用电烙铁把焊点分开,现在能用了。
回复

使用道具 举报

ID:387014 发表于 2018-8-21 13:33 | 显示全部楼层
更换一个LCD屏,对比一下啦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表