打印

1602液晶的使用碰到问题

[复制链接]
3404|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yushiqian2012|  楼主 | 2012-5-4 10:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
帮同学焊了一个单片机与液晶的小板子,液晶是LCD1602,单片机时STC89C52,现在我检查了好几遍,也都焊上了,引脚也对,可是总是液晶显示一竖条一竖条的,初始化的时候也没有反应。用的程序是商家给的测试程序。我当时担心是P0的10k太大,换了5.1k的,还是老样子。

89c52+lcd1602.rar

50.12 KB

相关帖子

沙发
abc375414256| | 2012-5-4 10:31 | 只看该作者
搞不懂。

使用特权

评论回复
板凳
ayb_ice| | 2012-5-4 10:36 | 只看该作者
这种程序网上大把的
PROTEUS的官方演示也有

使用特权

评论回复
地板
yushiqian2012|  楼主 | 2012-5-4 10:37 | 只看该作者
我知道,我只是怀疑我的硬件有问题,帮我看看电路呗

使用特权

评论回复
5
yushiqian2012|  楼主 | 2012-5-4 10:37 | 只看该作者
是不是因为51的驱动电流不够啊

使用特权

评论回复
6
logokfu| | 2012-5-4 10:41 | 只看该作者
不是P0口10K上拉电阻的问题,是你把液晶屏第5管脚接地了。错误接法。

使用特权

评论回复
7
ayb_ice| | 2012-5-4 10:41 | 只看该作者
我给你个文件,包含SCH与HEX文件,STC89C52应该可以用的按我的原理图接即可,只需要连LCD相关部分即可

LCD1602.rar

33.6 KB

使用特权

评论回复
8
logokfu| | 2012-5-4 10:53 | 只看该作者
不是P0口10K上拉电阻的问题,是你把液晶屏第5管脚接地了。错误接法。
107026
**kfu 发表于 2012-5-4 10:41

也不能说是错误接法,这样接的话就不能读忙了。程序需要准确的把握延时才行的。

使用特权

评论回复
9
yushiqian2012|  楼主 | 2012-5-4 10:55 | 只看该作者
o,对,我忘了改了,当时我发现这个问题了。。。是直接连的单片机的WR端,可是也不行啊

使用特权

评论回复
10
ayb_ice| | 2012-5-4 10:59 | 只看该作者
99.99%还是程序的问题,或者硬件与实际软件接口不符

使用特权

评论回复
11
logokfu| | 2012-5-4 11:16 | 只看该作者
o,对,我忘了改了,当时我发现这个问题了。。。是直接连的单片机的WR端,可是也不行啊
yushiqian2012 发表于 2012-5-4 10:55
如果你现在的硬件环境和你的原理图是一致的话,在不改变的硬件的情况下,改下程序就可以了。主要是初始化程序。这个最关键。初始化不好,永远显示不出来。

使用特权

评论回复
12
yushiqian2012|  楼主 | 2012-5-4 11:27 | 只看该作者
可谓是程序是给的例程啊,我看着也挺好的,没啥问题。

使用特权

评论回复
13
宋业科| | 2012-5-4 11:49 | 只看该作者
我怀疑1602坏了。

使用特权

评论回复
14
ningling_21| | 2012-5-4 12:57 | 只看该作者
注意调节对比度,电位器接法好像不对...

使用特权

评论回复
15
mcb8295014| | 2012-5-4 13:48 | 只看该作者
先看下显示有没有底色
如果没有底色的话 把你那个电位器调节一些
楼上说的电位器接法不对是有可能的

使用特权

评论回复
16
yushiqian2012|  楼主 | 2012-5-4 17:05 | 只看该作者
显示有底色,并且有一束一束的黑杠杠。。。

使用特权

评论回复
17
logokfu| | 2012-5-4 17:19 | 只看该作者
软件初始化问题。没有初始化成功。

使用特权

评论回复
18
joing1999| | 2012-5-7 23:15 | 只看该作者
发个例程给你试试,1602通用的
#include <reg52.h>

#define uint  unsigned int
#define uchar unsigned char

#define comm  0
#define dat   1

sbit  e = P3^2;   //input enable;
sbit rw = P3^1;   //H=read; L=write;
sbit rs = P3^0;   //H=data; L=command;

uchar code tab1[]={
"NS:WWW.RXLCD.COM"
"TEL:020-62619437"
};

//===========延时函数===============
void delay (int ms)   //delay time
{
  int i,j;
  for(i=0;i<ms;i++)
    for(j=0;j<123;j++);
}

//=======写命令或者数据子函数=======
void wr_lcd (uchar dat_comm,uchar content)
{
  if(dat_comm)
   {
    rs=1;   //data
    rw=0;   //write
   }
  else
   {
    rs=0;   //command
    rw=0;   //write
   }
  P1=content;   //output data or comm
  e=1;
  delay(1);
  e=0;
}

//==========初始化=============
void init_lcd (void)
{
  wr_lcd (comm,0x01);  /*清屏,地址指针指向00H*/
  wr_lcd (comm,0x06);  /*光标的移动方向*/
  wr_lcd (comm,0x0c);  /*开显示,关光标*/
  wr_lcd (comm,0x38);  /*8位接口两行显示模式*/
}
//==========显示字符============
void chrt_disp (uchar code *chrt)
{
  uchar i,j;
  wr_lcd (comm,0x80);
  for (j=0;j<2;j++)
  {
    for (i=0;i<16;i++)
    wr_lcd (dat,chrt[j*16+i]);
    wr_lcd (comm,0xc0);
  }
}

//==========自做字模==============
void cgram_wr (uchar zm_data1,uchar zm_data2)
{
  uchar i,j;
  wr_lcd (comm,0x40);
  for(j=0;j<8;j++)
  {
    for(i=0;i<4;i++)
    {
      wr_lcd (dat,zm_data1);
      wr_lcd (dat,zm_data2);
    }
  }
}

//=========显示自做字模==========
void cgram_disp (void)
{
  uchar i,j;
  wr_lcd (comm,0x80);
  for (j=0;j<2;j++)
  {
    for (i=0;i<8;i++)
    wr_lcd (dat,i);
    for (i=0;i<8;i++)
    wr_lcd (dat,i);
    wr_lcd (comm,0xc0);
  }
}

/*----------主程序------------*/
void main ()
{
  init_lcd ();
  while (1)
  {
    chrt_disp (tab1);
    delay (2000);
    cgram_wr (0x1f,0x1f);
    cgram_disp();
    delay (2000);
    cgram_wr (0x15,0x15);
    cgram_disp();
    delay (2000);
    cgram_wr (0x1f,0x00);
    cgram_disp();
    delay (2000);
    cgram_wr (0x15,0x0a);
    cgram_disp();
    delay (2000);
  }
}

使用特权

评论回复
19
hiWZY| | 2012-5-7 23:26 | 只看该作者
谢谢楼主分享了~~~~~~~~呵呵






------------------------------------------------------------------------------------www.kindleyz.com

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:不需要别人来证明自己,自己的态度更重要

45

主题

354

帖子

0

粉丝