标题: LCD1602上电后只显示第一排的方块,初始化应该没问题 [打印本页]

作者: Conlin不喝饮料    时间: 2019-8-21 11:41
标题: LCD1602上电后只显示第一排的方块,初始化应该没问题
请问大佬们,为什么液晶上电后只显示第一排的方块。初始化应该没问题,下面代码,帮帮忙,急!!!

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<string.h>

  3. sbit rs=P0^7;
  4. sbit rw=P0^6;
  5. sbit en=P0^5;

  6. char t0[]="HELLO WORLD!";
  7. char t1[]="HELLO NEUSOFT!";
  8. int i;

  9. void delay(int z);
  10. void write_cmd(char cmd);
  11. void write_data(char dt);
  12. void init();

  13. void main()
  14. {
  15.         init();
  16. //        write_data('1');
  17.         for(i=0;i<strlen(t0);i++)
  18.         {
  19.                 write_data(t0[i]);
  20.                 delay(20);
  21.         }
  22.         while(1);
  23. }

  24. void init()
  25. {
  26.         write_cmd(0x38);
  27.         write_cmd(0x0c);
  28.         write_cmd(0x06);
  29.         write_cmd(0x01);
  30.         write_cmd(0x80);}

  31. void write_data(char dt)
  32. {
  33.          
  34.         rs=1;
  35.         rw=0;
  36.         P2=dt;

  37.         delay(5);
  38.         en=1;
  39.         delay(5);
  40.         en=0;
  41. }

  42. void write_cmd(char cmd)
  43. {
  44.         
  45.         rs=0;
  46.         rw=0;
  47.         P2=cmd;

  48.         delay(5);
  49.         en=1;
  50.         delay(5);
  51.         en=0;
  52. }

  53. void delay(int z)
  54. {
  55.         int x,y;
  56.         for(x=z;x>0;x--)
  57.                 for(y=110;y>0;y--);
  58. }
复制代码



作者: wj_yuq    时间: 2019-8-21 12:30
调LCD的驱动电压试试没有?就是原理图中的电位器,管对比度的,对比度过大就会全是小方块。
作者: wulin    时间: 2019-8-21 12:59
程序没有问题只能说没有语法和逻辑问题,不代表没有时间问题。主时钟频率和延时函数对LCD1602驱动码的时序影响很大。这是典型的初始化失败的现象。
作者: gb302    时间: 2019-8-21 13:25
第一行和第二行的地址是不一样的,具体请看1602的手册
作者: jiangkeqin_sy    时间: 2019-8-21 14:39
有显示,不过对比度调错了,调节R15
作者: 999994    时间: 2019-8-21 14:42
void main() {         init(); //        write_data('1');          for(i=0;i<strlen(t0);i++)         {                 write_data(t0[i]);                 delay(20);         }         while(1); }
作者: 999994    时间: 2019-8-21 14:43
你程序只让第一行显示 第二行当然不会显示啦
作者: Conlin不喝饮料    时间: 2019-8-21 18:26
wj_yuq 发表于 2019-8-21 12:30
调LCD的驱动电压试试没有?就是原理图中的电位器,管对比度的,对比度过大就会全是小方块。

调过了,都拧坏了还是一样...
作者: Conlin不喝饮料    时间: 2019-8-21 18:28
gb302 发表于 2019-8-21 13:25
第一行和第二行的地址是不一样的,具体请看1602的手册

这个我知道,我是想让第一行显示hello world,我在模拟电路上试过是可以的,但是用在这就不行了
作者: Conlin不喝饮料    时间: 2019-8-21 18:29
999994 发表于 2019-8-21 14:42
void main() {         init(); //        write_data('1');          for(i=0;i

??请问你这是什么意思,看不懂...
作者: Conlin不喝饮料    时间: 2019-8-21 18:30
999994 发表于 2019-8-21 14:43
你程序只让第一行显示 第二行当然不会显示啦

这个当然知道鸭,我代码就是只让第一行显示hello world
作者: Conlin不喝饮料    时间: 2019-8-21 18:30
本帖最后由 Conlin不喝饮料 于 2019-8-21 18:47 编辑
wulin 发表于 2019-8-21 12:59
程序没有问题只能说没有语法和逻辑问题,不代表没有时间问题。主时钟频率和延时函数对LCD1602驱动码的时序 ...

不是很懂...能再准确的说一下吗,请问我应该怎么样初始化...
作者: 无声默片    时间: 2019-8-21 20:33
将第一行程序显示位置的代码改一下,放到第二行试一试
作者: 107056    时间: 2019-8-21 22:12
你会不会是插反了。。。,我有块一样的板
作者: 107056    时间: 2019-8-21 22:12
1602反过来插试试
作者: 107056    时间: 2019-8-21 22:15
而且这个板数码管跟1602不能同时用,用的时候要拔跳线帽的
作者: m182892    时间: 2019-8-22 08:58
1602插反了不会烧,但是输入电流会变大,模块发热,这是我曾经碰到过的。
作者: Conlin不喝饮料    时间: 2019-8-22 09:03
107056 发表于 2019-8-21 22:12
你会不会是插反了。。。,我有块一样的板

没有,我也试过反着插,你有没有测试程序,能不能发给我
作者: Conlin不喝饮料    时间: 2019-8-22 09:04
107056 发表于 2019-8-21 22:15
而且这个板数码管跟1602不能同时用,用的时候要拔跳线帽的

对,不能同时使用
作者: Conlin不喝饮料    时间: 2019-8-22 09:09
107056 发表于 2019-8-21 22:12
1602反过来插试试

你是反着插的吗,你的可以用吗?我太难了
作者: Host    时间: 2019-8-22 09:43
最好和你的数码管分开使用,不然会有影响的
作者: Conlin不喝饮料    时间: 2019-8-22 13:35
Host 发表于 2019-8-22 09:43
最好和你的数码管分开使用,不然会有影响的

这个数码管关不了,他有一些管口和液晶共用
作者: 107056    时间: 2019-8-22 15:38
Conlin不喝饮料 发表于 2019-8-22 13:35
这个数码管关不了,他有一些管口和液晶共用

你J1跳线帽拔了数码管跟1602应该就不会共用了
作者: 韦孟祥    时间: 2019-8-23 14:57
我说一下自己的看法啊,lcd1602不都是先写命令,然后再写数据的吗,main函数里面你没有写命令,你可以试一下,然后你确定了你的开发板与那个图是对应的吗
作者: Conlin不喝饮料    时间: 2019-9-4 14:22
韦孟祥 发表于 2019-8-23 14:57
我说一下自己的看法啊,lcd1602不都是先写命令,然后再写数据的吗,main函数里面你没有写命令,你可以试一 ...

命令已经在初始化函数里面写了噢,这个图也是对的,我要裂开来了....
作者: Conlin不喝饮料    时间: 2019-9-4 14:35
107056 发表于 2019-8-22 15:38
你J1跳线帽拔了数码管跟1602应该就不会共用了

拔了跳线帽确实数码管没显示了,但是液晶还是只是上电状态...太难了
作者: 孤独的狼吃羊    时间: 2020-12-1 11:44
同样的问题,想问问你解决了吗= =
作者: rayin    时间: 2020-12-2 09:10
初始化代码没有执行到1602就会导致第一行显示全黑,需要检查RW,E,rs,P2是否与单片机引脚可靠连接,且51单片机的P0口必须要有上拉10k电阻,3条控制信号线接到了P0上了,没有10K电阻就会有问题。
作者: 小文文    时间: 2020-12-2 09:51
你这是调的过亮了。
作者: gagaga123    时间: 2020-12-13 23:16
同样问题,想问问解决了没
作者: ibrohimz    时间: 2020-12-14 00:45
volarge current is low, repair your IC




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