找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 582|回复: 9
收起左侧

为啥lcd1602一直显示白色方块

[复制链接]
ID:1143623 发表于 2025-3-3 22:44 | 显示全部楼层 |阅读模式
一直显示白色方块
程序如下
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int

sbit E=P0^7;                //1602使能引脚
                //1602读写引脚        
sbit RS=P0^6;

uchar tab1[]=" www.51hei.com  ";  //要显示什么就在这儿改
uchar tab2[]="LCD1602 test ok!";  //[size=15.5555562973022px]要显示什么就在这儿改




void delay(uint del)   //延时1ms
      {
         uint i,j;
         for(i=0;i<del;i++)
            for(j=0;j<=168;j++);
      }
//---------------------------------------------------------
void writecmd(uchar com)  
       {
         E=0;       //为什么要写这一条呢,看看时序图就清楚了
         RS=0;

         P2 = com;   
         delay(2);  //延时一下会稳定很多,后面一条也是一样的
         E=1;  
         delay(2);
         E=0;
       }
//--------------------------------------------------------
void writedata(uchar dat)  
       {
         E=0;       //为什么要写这一条呢,看看时序图就清楚了
         RS=1;

         P2 = dat;   
         delay(2);  //延时一下会稳定很多,后面一条也是一样的
         E=1;  
         delay(2);
         E=0;
       }
//-----------------------------------------------------
void init(void)              
    {
       delay(15);
       writecmd(0x38);
       delay(5);
       writecmd(0x38);
       delay(5);
       writecmd(0x38);
       writecmd(0x38);
       writecmd(0x08);
       writecmd(0x01);
       writecmd(0x06);
       writecmd(0x0c);
     }
//----------------------------------------------------------

void main()
{         
           uchar j;
           init();
           writecmd(0x80);    //告诉液晶在哪个地方显示 (设置地址指针)//80H+00
           for(j=0;j<16;j++)  //有16个字符,要循环16次
           {
            writedata(tab1[j]);
                 delay(2);
           }
           writecmd(0x80+0x40); //再设置第二行的起始位置80H+40H

           for(j=0;j<16;j++)   //有16个字符,要循环16次
           { writedata(tab2[j]);
                  delay(2);
           }
           while(1);         //让液晶显示就一直停在这里。

}

$XL7OO$Q_OGJ9]@E3B3VF]R.png
IMG_20250303_224311.jpg
回复

使用道具 举报

ID:1143623 发表于 2025-3-3 23:26 | 显示全部楼层
DB接的P2口
回复

使用道具 举报

ID:1133081 发表于 2025-3-4 06:04 | 显示全部楼层
虽然这个程序写的不算好但能用,楼主测试失败可能是软件的端口配置与硬件不符。程序中1602的数据口接P2,E=P0^7;, RS=P0^6;,RW没有使用,也就是硬件中RW接地。如果楼主的学习板上RW接在某端口,必须定义RW=Px^x;并在程序中赋值RW=0;。
回复

使用道具 举报

ID:1143623 发表于 2025-3-4 13:23 | 显示全部楼层
WL0123 发表于 2025-3-4 06:04
虽然这个程序写的不算好但能用,楼主测试失败可能是软件的端口配置与硬件不符。程序中1602的数据口接P2,E= ...

怎么修改
回复

使用道具 举报

ID:1144789 发表于 2025-3-4 14:26 | 显示全部楼层
背光那个用滑动电阻调一下阻值
回复

使用道具 举报

ID:258566 发表于 2025-3-4 17:35 | 显示全部楼层
屏幕截图 2025-03-04 173233.png 代码没问题,补充一点,rs e 有没有上拉。
回复

使用道具 举报

ID:1133081 发表于 2025-3-5 07:12 | 显示全部楼层

软件都是基于硬件条件编写的,不是随便找一个程序就能用。要根据手头实际电路做相应修改,你的原理图只是最小系统,没有画出与1602的连接关系。要按实际连接关系改。具体改法在前文已经说的很清除。
回复

使用道具 举报

ID:584814 发表于 2025-3-7 13:04 | 显示全部楼层
一问不要在短时间内多次提
回复

使用道具 举报

ID:1025635 发表于 2025-3-9 19:25 | 显示全部楼层
背光那个可调电阻调一下阻值即可。
回复

使用道具 举报

ID:1133081 发表于 2025-3-10 11:43 | 显示全部楼层
zpxm01 发表于 2025-3-9 19:25
背光那个可调电阻调一下阻值即可。

楼主软件写的是两排都要显示,如果是能显示但对比度调整不当会是两排白色方块。这种现象是典型的1602初始化失败的反映。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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