标题: 求助,关于LCD1602的显示问题和如何判断是否损坏 [打印本页]

作者: Carbon1    时间: 2020-3-5 09:20
标题: 求助,关于LCD1602的显示问题和如何判断是否损坏
如题,为什么会出现这种情况,百度上都没有相关的案例,是不是我的1602坏了抑或是程序问题

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

new image - 93d8a.jpg

作者: 之一知足    时间: 2020-3-5 10:15
最简单快捷的方法就是,随便下载个历程,照着别人的代码接下线,如果不能正常的执行,就是LCD坏了,反之检查你的代码。
作者: 秋易老    时间: 2020-3-5 10:18
感觉应该是线接错了,要么就是程序定义的口和你实际接的口不一样
作者: hantu    时间: 2020-3-5 10:38
放到好的开发板和正确的例程上去试
作者: man1234567    时间: 2020-3-5 11:14
程序贴上来看看才知道是不是程序问题。如果程序没问题接线也没问题那就是坏了。
作者: 东宁    时间: 2020-3-5 16:56
应该是程序有问题,以前也遇到过这样的情况,如果屏幕是亮的,就没有坏
作者: max13124    时间: 2020-3-5 20:00
看起来没问题能亮,像素也点亮了
作者: Carbon1    时间: 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);
}
作者: Carbon1    时间: 2020-3-6 12:46
之一知足 发表于 2020-3-5 10:15
最简单快捷的方法就是,随便下载个历程,照着别人的代码接下线,如果不能正常的执行,就是LCD坏了,反之检 ...

谢谢回答,我试过别人的代码,也有改接线,区别在于右边黑的多少
作者: Carbon1    时间: 2020-3-6 12:47
秋易老 发表于 2020-3-5 10:18
感觉应该是线接错了,要么就是程序定义的口和你实际接的口不一样

感谢回复,接线检查过很多次了,也试过其他程序,没有解决
作者: Carbon1    时间: 2020-3-6 12:48
东宁 发表于 2020-3-5 16:56
应该是程序有问题,以前也遇到过这样的情况,如果屏幕是亮的,就没有坏

应该不是程序问题,换了好几个程序都不行
作者: Carbon1    时间: 2020-3-6 12:53
换了其他程序,黑块数量会有变化关闭电源黑块还会停留一会再消失

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

断电后会显示一会

断电后会显示一会

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

换程序黑块数量变化

换程序黑块数量变化

作者: faguiq    时间: 2020-3-6 14:12
屏里导电层接触不良,拆下重装一下
作者: qcm755    时间: 2020-3-6 14:53

应该是程序有问题,
作者: 诗酒赎春风    时间: 2020-3-6 18:11
你可以看看是不是接口接错了 LCD接线都很重要
作者: 余生不负    时间: 2020-3-6 19:24
下载一个没有问题的程序进去就可以判断是不是液晶屏的问题了
作者: wulin    时间: 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);
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1