打印
[51单片机]

求助,EDM12864P液晶无法显示?

[复制链接]
1135|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yjzengli|  楼主 | 2015-1-15 15:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、无法点亮背光。
2、无法显示,不知那错误了。
程序如下:
#include <reg52.h>   

#define uchar unsigned char   
#define uint  unsigned int

#define LCM P0    //D0~D7
#define LED P1

sbit P_CS1=P2^3;   //CS1   15
sbit P_CS2=P2^4;   //CS2   16
sbit P_RST=P2^5;   //RST   17
   
sbit P_DI=P2^0;   //RS     4
sbit P_RW=P2^1;   //RWL    5
sbit P_E=P2^2;    //CE     6

//sbit LED = P1;

void delay(uint k);
void write(uchar dd,uchar di,uchar cs);
uchar read(uchar di,uchar cs);
void reset();
void wdata(uchar dd,uchar x,uchar y);
void set_line(uchar i);
void lcd_init(void);
void dison_off(uchar c);
uchar lcd_busy(void);

void main()
{
        uchar i,dd;
        dd = 0xff;
        while (1)
        {
                LED = 0xff;
                LCM = 0x00;
                lcd_init();
                delay(1000);
                for(i=0;i<8;i++){
                        lcd_busy();
                        delay(1000);
                        wdata(dd,2,i);
                        delay(2000);
                }
                delay(5000);
        }
}

uchar lcd_busy(void)
{
        uchar c;
        c = read(0,1);
        LED = c;
        return 0x80&&c;
}
       
void dison_off(uchar c)
{
        uchar com;
        com = 0x3e + c;
        write(com,0,1);
        write(com,0,0);       
}
       
void lcd_init(void)
{
  reset();   
  set_line(0);
        dison_off(1);
}
       
void wdata(uchar dd,uchar x,uchar y)
{
        uchar cs,com;
        if (y>=64){
                cs = 0;
                y = y-64;
        }else{
          cs = 1;
        }

        com = 0xb8 + x%8;
        write(com,0,cs); //set page

        com = 0x40 + x%64;
        write(com,0,cs); //set y
       
        //com = 0x80 + (0x3F && y);
        //write(com,0,cs); //set column
       
        write(dd,1,cs);
}

void write(uchar dd,uchar di,uchar cs)
{
        P_E = 0;
        P_RW = 0;
        P_CS1 = cs;
        P_CS2 = !P_CS1;
        P_DI = di;
        delay(1);
        P_E = 1;
        LCM = dd;
        delay(1);
        P_E = 0;
        delay(1);
}

uchar read(uchar di,uchar cs)
{
        uchar dd;
        P_E = 0;
        P_RW = 1;
        P_CS1 = (cs && 0x01);
        P_CS2 = (cs && 0x02);
        P_DI = di;
        delay(2);
        P_E = 1;
        dd = LCM;
        P_E = 0;       
        return dd;
}

void reset()   
{   
        P_RST=0;   
  delay(20);   
  P_RST=1;   
  delay(20);   
}

//设定起始行   
void set_line(uchar i)   
{   
        i = 0xc0+i;   
  write(i,0,1);   
}     

void delay(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}       

EDM12864P的资料

edm12864p.pdf

521.25 KB

相关帖子

沙发
JY-DX-JY| | 2015-1-15 16:06 | 只看该作者
无法点亮背光
1.电路问题
2.液晶坏啦。

使用特权

评论回复
板凳
yjzengli|  楼主 | 2015-1-15 17:18 | 只看该作者
谢谢回答。
测量电流时,接通瞬间看到一些显示,不知能否证明未坏。
另外程序是自己写的,不知能否显示?

使用特权

评论回复
地板
yjzengli|  楼主 | 2015-1-15 17:26 | 只看该作者
我的开发板是TX-1C型单片机实验板。
程序中读液晶状态数据,用直接显示LED显示,发现RST为1,不知是什么原因?

使用特权

评论回复
5
JY-DX-JY| | 2015-1-15 17:32 | 只看该作者
开发板例程背光亮不亮?能不能显示?原理图?

使用特权

评论回复
6
yjzengli|  楼主 | 2015-1-15 18:05 | 只看该作者
开发板和液晶不配套,买时不懂。
接线图如下:

接线图.png (35.04 KB )

接线图.png

使用特权

评论回复
7
JY-DX-JY| | 2015-1-15 18:11 | 只看该作者
我们公司12864原理图:

使用特权

评论回复
8
ningling_21| | 2015-1-15 19:54 | 只看该作者
yjzengli 发表于 2015-1-15 18:05
开发板和液晶不配套,买时不懂。
接线图如下:

LCD初始化还要不断的执行?
初始化程序也不对
  问题不少

使用特权

评论回复
9
yjzengli|  楼主 | 2015-1-15 21:02 | 只看该作者
ningling_21 发表于 2015-1-15 19:54
LCD初始化还要不断的执行?
初始化程序也不对
  问题不少

谢谢关心。
确实不应循环执行初始化,明天改一下。
初始化程序存在什么问题,请指教,谢谢。

使用特权

评论回复
10
yjzengli|  楼主 | 2015-1-15 21:10 | 只看该作者
JY-DX-JY 发表于 2015-1-15 18:11
我们公司12864原理图:

不同的12864接线图是有差别的吧,贵公司的是大连EDM12864P吗?
我看过大连EDM12864A资料,也有所不同。

使用特权

评论回复
11
ningling_21| | 2015-1-15 21:19 | 只看该作者
yjzengli 发表于 2015-1-15 21:02
谢谢关心。
确实不应循环执行初始化,明天改一下。
初始化程序存在什么问题,请指教,谢谢。

一个用过的LCD初始化程序,供参考
/*------------------初始化LCD屏--------------------------*/ 
void init_lcd()
{
  delay(100);
  CS1=1;
  CS2=1;
  delay(100);
  write_com(Disp_Off);
  write_com(Page_Add+0);
  write_com(Start_Line+0);
  write_com(Col_Add+0);
  write_com(Disp_On);
}

使用特权

评论回复
12
yjzengli|  楼主 | 2015-1-15 22:20 | 只看该作者
ningling_21 发表于 2015-1-15 21:19
一个用过的LCD初始化程序,供参考

谢谢,看资料CS1=1,CS2=0是选左半屏,CS1=0,CS2=1是选右半屏,都是1可以吗?
是EDM12864P的程序吗?有全部代码吗?

使用特权

评论回复
13
ningling_21| | 2015-1-16 08:11 | 只看该作者
yjzengli 发表于 2015-1-15 22:20
谢谢,看资料CS1=1,CS2=0是选左半屏,CS1=0,CS2=1是选右半屏,都是1可以吗?
是EDM12864P的程序吗?有全 ...

驱动程序,供参考
LCD128x64.rar (2.07 KB)

使用特权

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

本版积分规则

1

主题

12

帖子

0

粉丝