打印

我的液晶无显示,全黑,除了背光,怎么回事?

[复制链接]
1801|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fanny309|  楼主 | 2008-11-7 20:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#include <absacc.h>
#include "intrins.h"

typedef unsigned int  WORD;
typedef unsigned char BYTE;

sbit wdi=P1^7;
sbit lcd_bg=P1^6;
sbit en =P2^7; // 读写使能
sbit rw =P2^6; // 读写 选择
sbit di =P2^5; // 数据指令 选择
sbit cs1 =P2^4; // 片选1,
sbit cs2 =P2^3; // 片选2,

//#define LCD12864DataPort P0

const BYTE CHAR_0[5]={0x3E,0x51,0x49,0x45,0x3E};

void port_ini(void)
{
  cs1=1;
  cs2=1;
  _nop_();
  _nop_();
  en=1;
  _nop_();
  _nop_();
  en=0;
  _nop_();
  _nop_();
}
void write_command( BYTE nByte )
{
 rw=0;
 di=0;
 _nop_();
 _nop_();
 P0=nByte;
 en=1;
 _nop_();
 _nop_();
 en=0;
 _nop_();
 _nop_();
}
void write_char( BYTE nByte, BYTE CS11, BYTE CS22 )
{
 if(CS11) cs1=1;
 else cs1=0;

 if(CS22) cs2=1;
 else cs2=0;

 di=1;
 rw=0;

 P0=nByte;
 en=1;
 _nop_();
 _nop_();
 en=0;
 _nop_();
 _nop_();

}
void clear_lcd( void )
{
 BYTE i,j;
 for(i=0;i<8;i++)
    {
        write_command(i|0xB8);
        write_command(0x40);
        for(j=0;j<128;j++)
        {
            if(j<=63) write_char(0,1,0);
            else write_char(0,0,1);
            _nop_();
        }
    }
}
void display_char( BYTE *chr, BYTE nRow, BYTE nCol )
{
  BYTE i,tmpCol;
    
    write_command(0xB8|nRow);
    tmpCol=nCol;
    for(i=0;i<5;i++)
    {
        if(tmpCol<=63)
        {
            write_command(0x40|tmpCol);
            write_char(chr,1,0);
        }
        else
        {
            write_command(0x40|(tmpCol-64));
            write_char(chr,0,1);
        }
        tmpCol++;
    }
}

void delay()
{
 BYTE m,n;
 for(m=0;m<200;m++)
 {
  for(n=0;n<500;n++);
 }
}


void main()
{
   lcd_bg=0;
   port_ini();
   write_command(0xc0);
   write_command(0x3f);
   clear_lcd();
   display_char((BYTE *)&CHAR_0[0],4,20);

   while(1)
   {
   wdi=!wdi;
  delay();
  }
  
}
程序如上
不知是不是程序的问题

相关帖子

沙发
fanny309|  楼主 | 2008-11-7 20:18 | 只看该作者

附图

使用特权

评论回复
板凳
yjh0201| | 2008-11-7 20:19 | 只看该作者

建议你看看信号线是否正确

建议你看看信号线是否正确,我以前把线焊反了,就是你那现象。

使用特权

评论回复
地板
fanny309|  楼主 | 2008-11-7 20:24 | 只看该作者

什么线焊错了?

焊反了?LCD的20根线吗?

使用特权

评论回复
5
呆板书生| | 2008-11-8 08:51 | 只看该作者

mcu复位电路似乎有问题

使用特权

评论回复
6
vwwj| | 2008-11-8 09:16 | 只看该作者

建议先读取LCD内部版本号或其他信息比对

  这样先确认排除通信问题

使用特权

评论回复
7
fanny309|  楼主 | 2008-11-8 09:24 | 只看该作者

如何读取或对比?

使用特权

评论回复
8
xwj| | 2008-11-8 10:19 | 只看该作者

液晶的上电复位、初始化指令等都是很慢的,要适当延时

像你这样快可是不行的哦
   write_command(0xc0);
   write_command(0x3f);
   clear_lcd();

使用特权

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

本版积分规则

14

主题

30

帖子

0

粉丝