找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4418|回复: 10
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
本帖最后由 吃瓜子不吐壳 于 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触电短接了,导致只能以串行方式通讯,而商品介绍里没有说明白这一点,我用电烙铁把焊点分开,现在能用了。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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 | 只看该作者
初始化的每一个指令后面多跟点延时、初始化之前加一个上电延时,初始化指令可以尝试重复多发几次
回复

使用道具 举报

5#
ID:96682 发表于 2018-8-20 10:51 | 只看该作者
不就是检验液晶屏好坏么?备选其他的来测试又何妨
回复

使用道具 举报

6#
ID:7485 发表于 2018-8-20 11:19 | 只看该作者
在 main 中,一直循环显示下面两句试一试:

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

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

9#
ID:387908 发表于 2018-8-20 11:34 | 只看该作者
726434632 发表于 2018-8-20 09:10
初始化的每一个指令后面多跟点延时、初始化之前加一个上电延时,初始化指令可以尝试重复多发几次

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

使用道具 举报

10#
ID:387908 发表于 2018-8-20 11:35 | 只看该作者
ahshmj 发表于 2018-8-20 11:19
在 main 中,一直循环显示下面两句试一试:

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

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

使用道具 举报

11#
ID:387014 发表于 2018-8-21 13:33 | 只看该作者
更换一个LCD屏,对比一下啦
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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