EDM12864P液晶无法显示

[复制链接]
41|16
| 2018-11-9 09:34 | 显示全部楼层

无法点亮背光
1.电路问题
2.液晶坏啦。
 楼主 | 2018-11-9 09:49 | 显示全部楼层
谢回答。
测量电流时,接通瞬间看到一些显示,不知能否证明未坏。
| 2018-11-9 09:52 | 显示全部楼层
程序是自己写的?
 楼主 | 2018-11-9 09:55 | 显示全部楼层


是啊,不知能否显示?
 楼主 | 2018-11-9 10:00 | 显示全部楼层

我的开发板是TX-1C型单片机实验板。
程序中读液晶状态数据,用直接显示LED显示,发现RST为1,不知是什么原因?
| 2018-11-9 10:04 | 显示全部楼层
开发板例程背光亮不亮?能不能显示?原理图?
 楼主 | 2018-11-9 10:09 | 显示全部楼层
开发板和液晶不配套,买时不懂。
| 2018-11-9 10:11 | 显示全部楼层

#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--);
}        
| 2018-11-9 10:15 | 显示全部楼层

LCD初始化还要不断的执行?
初始化程序也不对
  问题不少
 楼主 | 2018-11-9 10:19 | 显示全部楼层

确实不应循环执行初始化,改一下。
初始化程序存在什么问题,请指教,谢谢。
| 2018-11-9 10:22 | 显示全部楼层
一个用过的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);
}
 楼主 | 2018-11-9 10:24 | 显示全部楼层

谢谢,看资料CS1=1,CS2=0是选左半屏,CS1=0,CS2=1是选右半屏,都是1可以吗?
是EDM12864P的程序吗?
| 2018-11-9 10:27 | 显示全部楼层
初始化LCD屏加上去试试对比看看,
| 2018-11-9 10:30 | 显示全部楼层


看了下代码,感觉是找不到什么问题了。楼主再看看吧
| 2018-11-9 10:32 | 显示全部楼层
初始化应该没问题,写和读也看不出什么问题啊。。不知道是什么出现的原因。。
 楼主 | 2018-11-9 10:35 | 显示全部楼层
搞定了,呵呵,犯了低级错误……结贴啦,多谢各位
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

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