找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助,关于LCD1602的显示问题和如何判断是否损坏

  [复制链接]
回帖奖励 20 黑币 回复本帖可获得 2 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
如题,为什么会出现这种情况,百度上都没有相关的案例,是不是我的1602坏了抑或是程序问题

new image - 93d8a.jpg (58.92 KB, 下载次数: 27)

new image - 93d8a.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:342451 发表于 2020-3-5 10:15 | 只看该作者
最简单快捷的方法就是,随便下载个历程,照着别人的代码接下线,如果不能正常的执行,就是LCD坏了,反之检查你的代码。
回复

使用道具 举报

板凳
ID:702573 发表于 2020-3-5 10:18 | 只看该作者
感觉应该是线接错了,要么就是程序定义的口和你实际接的口不一样
回复

使用道具 举报

地板
ID:462827 发表于 2020-3-5 10:38 | 只看该作者
放到好的开发板和正确的例程上去试
回复

使用道具 举报

5#
ID:584814 发表于 2020-3-5 11:14 | 只看该作者
程序贴上来看看才知道是不是程序问题。如果程序没问题接线也没问题那就是坏了。
回复

使用道具 举报

6#
ID:702943 发表于 2020-3-5 16:56 | 只看该作者
应该是程序有问题,以前也遇到过这样的情况,如果屏幕是亮的,就没有坏
回复

使用道具 举报

7#
ID:703118 发表于 2020-3-5 20:00 | 只看该作者
看起来没问题能亮,像素也点亮了
回复

使用道具 举报

8#
ID:677520 发表于 2020-3-6 12:45 | 只看该作者
这是程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P2^2;
sbit lcdrw=P2^1;
sbit lcden=P2^0;
uchar table1[]="AT89C51";
uchar table2[]="STC89C52RC";

void delay_ms(uint z)
{
   uint i,j;
   for(i=z;i>0;i--)
      for(j=110;j>0;j--);
}

void write_com(uchar com)  //写指令
{
       
                lcdrw=0;
                lcdrs=0;                        
        P0=com;   //将指令赋给P0
        lcden=1;  //高脉冲                     
        delay_ms(5);
        lcden=0;                     
}

void write_dat(uchar dat)  //写数据
{
       
        lcdrs=1;
                lcdrw=0;
        P0=dat;   //数据赋给P0
        lcden=1;  //高脉冲
        delay_ms(5);
        lcden=0;
}

void init()
{        lcden=0;
        write_com(0x01);
        delay_ms(20);       
        write_com(0x06);
        delay_ms(20);
        write_com(0x0C);
        delay_ms(20);
        write_com(0x38);
        delay_ms(20);
}

void main()
{
        uchar i;
        init();
       
        write_com(0x80);
        for(i=0;i<7;i++)  
                write_dat(table1[i]);
        delay_ms(10000);
       
        write_com(0x80);
        for(i=0;i<10;i++)  
       write_dat(table2[i]);
   
        while(1);
}
回复

使用道具 举报

9#
ID:677520 发表于 2020-3-6 12:46 | 只看该作者
之一知足 发表于 2020-3-5 10:15
最简单快捷的方法就是,随便下载个历程,照着别人的代码接下线,如果不能正常的执行,就是LCD坏了,反之检 ...

谢谢回答,我试过别人的代码,也有改接线,区别在于右边黑的多少
回复

使用道具 举报

10#
ID:677520 发表于 2020-3-6 12:47 | 只看该作者
秋易老 发表于 2020-3-5 10:18
感觉应该是线接错了,要么就是程序定义的口和你实际接的口不一样

感谢回复,接线检查过很多次了,也试过其他程序,没有解决
回复

使用道具 举报

11#
ID:677520 发表于 2020-3-6 12:48 | 只看该作者
东宁 发表于 2020-3-5 16:56
应该是程序有问题,以前也遇到过这样的情况,如果屏幕是亮的,就没有坏

应该不是程序问题,换了好几个程序都不行
回复

使用道具 举报

12#
ID:677520 发表于 2020-3-6 12:53 | 只看该作者
换了其他程序,黑块数量会有变化关闭电源黑块还会停留一会再消失

关闭.jpg (1016.27 KB, 下载次数: 31)

断电后会显示一会

断电后会显示一会

变化.jpg (60.06 KB, 下载次数: 34)

换程序黑块数量变化

换程序黑块数量变化
回复

使用道具 举报

13#
ID:487821 发表于 2020-3-6 14:12 | 只看该作者
屏里导电层接触不良,拆下重装一下
回复

使用道具 举报

14#
ID:703392 发表于 2020-3-6 14:53 | 只看该作者

应该是程序有问题,
回复

使用道具 举报

15#
ID:433688 发表于 2020-3-6 18:11 | 只看该作者
你可以看看是不是接口接错了 LCD接线都很重要
回复

使用道具 举报

16#
ID:316880 发表于 2020-3-6 19:24 | 只看该作者
下载一个没有问题的程序进去就可以判断是不是液晶屏的问题了
回复

使用道具 举报

17#
ID:213173 发表于 2020-3-7 10:49 | 只看该作者
Carbon1 发表于 2020-3-6 12:45
这是程序
#include
#define uchar unsigned char

楼主的程序没有什么明显毛病,出现这种现象应该是LCD初始化失败。要仔细检查硬件! VCC是电压否正常、纹波是否过大、晶振频率是否合适、振荡电容大小是否合适、复位电路是否正常。特别是要检查面包板接触不良。
初始化程序稍微调整一下:
void init()
{
        lcden=0;
        delay_ms(20);
        write_com(0x38);
        write_com(0x38);
        write_com(0x38);
        delay_ms(20);
        write_com(0x01);
        delay_ms(20);        
        write_com(0x0C);
        delay_ms(20);
        write_com(0x06);
        delay_ms(20);
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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