找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 5976|回复: 16
收起左侧

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

  [复制链接]
回帖奖励 20 黑币 回复本帖可获得 2 黑币奖励! 每人限 1 次
ID:677520 发表于 2020-3-5 09:20 | 显示全部楼层 |阅读模式
如题,为什么会出现这种情况,百度上都没有相关的案例,是不是我的1602坏了抑或是程序问题
new image - 93d8a.jpg
回复

举报

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

举报

ID:702573 发表于 2020-3-5 10:18 | 显示全部楼层
感觉应该是线接错了,要么就是程序定义的口和你实际接的口不一样
回复

举报

ID:462827 发表于 2020-3-5 10:38 | 显示全部楼层
放到好的开发板和正确的例程上去试
回复

举报

ID:584814 发表于 2020-3-5 11:14 | 显示全部楼层
程序贴上来看看才知道是不是程序问题。如果程序没问题接线也没问题那就是坏了。
回复

举报

ID:702943 发表于 2020-3-5 16:56 | 显示全部楼层
应该是程序有问题,以前也遇到过这样的情况,如果屏幕是亮的,就没有坏
回复

举报

ID:703118 发表于 2020-3-5 20:00 | 显示全部楼层
看起来没问题能亮,像素也点亮了
回复

举报

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);
}
回复

举报

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

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

举报

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

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

举报

ID:677520 发表于 2020-3-6 12:48 | 显示全部楼层
东宁 发表于 2020-3-5 16:56
应该是程序有问题,以前也遇到过这样的情况,如果屏幕是亮的,就没有坏

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

举报

ID:677520 发表于 2020-3-6 12:53 | 显示全部楼层
换了其他程序,黑块数量会有变化关闭电源黑块还会停留一会再消失

断电后会显示一会

断电后会显示一会

换程序黑块数量变化

换程序黑块数量变化
回复

举报

ID:487821 发表于 2020-3-6 14:12 | 显示全部楼层
屏里导电层接触不良,拆下重装一下
回复

举报

ID:703392 发表于 2020-3-6 14:53 | 显示全部楼层

应该是程序有问题,
回复

举报

ID:433688 发表于 2020-3-6 18:11 | 显示全部楼层
你可以看看是不是接口接错了 LCD接线都很重要
回复

举报

ID:316880 发表于 2020-3-6 19:24 | 显示全部楼层
下载一个没有问题的程序进去就可以判断是不是液晶屏的问题了
回复

举报

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 单片机教程网

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