一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 3125|回复: 12

关于光王12864的问题,求助!

[复制链接]
发表于 2013-7-28 10:37 | 显示全部楼层 |阅读模式
买了几块王老板的光王12864,调试了好几天都有没有点亮。串行并行,68,80时序我都写了,可是就是不行,命令我也是按照pdf里写的一条一条写的,可是就是不行。电路接口我用的是pdf里的电路。4倍压。屏一点反应也没有。搞的现在我都怀疑我的能力了。不知道有谁可以帮忙指点一下呢?谢谢!
 楼主| 发表于 2013-7-28 10:46 | 显示全部楼层
自己顶,顶,顶,顶
回复

使用道具 举报

发表于 2013-7-28 11:20 | 显示全部楼层
屡次调试失败,
电路和代码还都遮遮掩掩的,只字不提或者一笔带过
都不知道该说你啥好了……

网络求助不要搞的跟网络吸血一样
回复

使用道具 举报

 楼主| 发表于 2013-7-28 11:43 | 显示全部楼层
文句子 发表于 2013-7-28 11:20
屡次调试失败,
电路和代码还都遮遮掩掩的,只字不提或者一笔带过
都不知道该说你啥好了……

不是遮遮掩掩,更没有什么吸血的意思,我本想着先发个标题,等有人来看的时候,再具体说的。可能是我的原因。这里我承认错误。下面是我的原理图:
(1)本来板子的接口电路(C36,37,38,39,40用的是0.47uf,其它用的是1uf)。
QQ截图20130728112953.jpg
(2)参照PDF资料电路图及你提供的电路图作了一定的调整(加了两个电阻)。
QQ截图20130728113108.jpg QQ截图20130728114056.jpg
(3)程序:
串行:
/**
  * @brief  液晶写命令
  * @note   
  * @param  
  *@deprecated
  */
void vWrite_Cmd(uchar cmd)
{
    uchar data i,j;
    CS1=0;
    R_S=0;  
    SCK=1;
    for(i=0;i<8;i++)
    {
         j=cmd;
         SCK=0;
        //_nop_();
         SDA=cmd&0x80;
        //_nop_();
         SCK=1;         
         cmd=j<<1;
    }
        CS1=1;
    //    R_S=1;
}
/**
  * @brief  液晶写数据
  * @note   
  * @param  
  *@deprecated
  */
void vWrite_Data(uchar dat)   
{                           
    uchar data i,j;
    CS1=0;
    R_S=1;  
    SCK=1;
    for(i=0;i<8;i++)
    {
         j=dat;
         SCK=0;
        //_nop_();
         SDA=dat&0x80;
        //_nop_();
         SCK=1;         
         dat=j<<1;
    }
    CS1=1;
    //    R_S=0;
}
/**
  * @brief  液晶初始化
  * @note   
  * @param  
  *@deprecated
  */
void vLcd_Init()
{
   
    P4SW=0x70;
    RES=0;
    Delayms(3500);
    RES=1;
    Delayms(3200);
    P0=0x00;
    c86=0;
    ps=0;   
//  P1M1=0x00;
//  P1M0=0xff;
//  P3M1=0x00;
//  P3M0=0xff;
    P0M1=0x00;
    P0M0=0xff;
//  P2M1=0x00;
//  P2M0=0xff;
    P4SW=0x70;         
    vWrite_Cmd(0xa0);                 //normal scan R to L
    vWrite_Cmd(0xa4);                //entire display on
    vWrite_Cmd(0xa2);                //lce bias set
    vWrite_Cmd(0xc8);                 //inverse scan bottom to top
    vWrite_Cmd(0x2b);                //power control set
    vWrite_Cmd(0x20);                 //use to set value of internal resistor for electronic voltage regulator amplifier
    vWrite_Cmd(0x81);                 //access the electronic volume register
    vWrite_Cmd(0xe7);                //lcd driver on
    vWrite_Cmd(0xb0);                //page address set
    vWrite_Cmd(0x00);                //column address set
    vWrite_Cmd(0xaf);  
    vWrite_Cmd(0x40);                 //start com scan at line address 00H
    Clear();
}
(4)IO
                                               
sbit    CS1=            P1^3;
sbit    RES=            P1^2;
sbit    R_S=            P1^1;

sbit    SCK=             P0^6;
sbit    SDA=            P0^7;

sbit     c86=            P5^0;      //80 ,68时序选择
sbit     ps=                P5^1;        //串并口选择
sbit     bell=            P4^1;
sbit     led1=            P4^4;
sbit     led2=            P4^5;
bit     Flage1=            0;
(5)单片机用的是STC12C5A60S2,P0作为数据口,单片机5V供电;





回复

使用道具 举报

 楼主| 发表于 2013-7-28 11:55 | 显示全部楼层
并行模块68时序:
void vRead_Busy(){/*-----------检测数据线忙 最高位为1则为忙------------*/
    P0=0x00;
    a0=0;
    cs1=0;
    wr_rw=1;
    rd_EN=1;
    while(P0&0x80);
    nop();
    rd_EN=0;
}
void vDelay_Ms(unsigned int z){/*--------------------毫秒延时------------------*/
    unsigned int x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}
/**
  * @brief  液晶写命令
  * @note   
  * @param  
  *@deprecated
  */
void vWrite_Cmd(uchar cmd)
{  
   vRead_Busy();
   cs1=0;
   a0=0;//命令
   wr_rw=0;//写
   rd_EN=1;//ENABLE
   nop();
   P0=x;
   nop();
   rd_EN=0;
    // nop();
}
/**
  * @brief  液晶写数据
  * @note   
  * @param  
  *@deprecated
  */
void vWrite_Data(uchar dat)   
{
   vRead_Busy();     
   cs1=0;
   a0=1; //数据
   wr_rw=0;//写
   rd_EN=1;
   nop();nop(); nop();
   P0=dat;
   nop(); nop(); nop();
   rd_EN=0;
    // nop();
}
/**
  * @brief  画图
  * @note   
  * @param  
  *@deprecated
  */
void vDis_Map(unsigned char *p)//P 是图片数据的首地址
{
    unsigned char seg;
    unsigned char page;
    for(page=0xb0;page<0xb9;page++) //写页地址共8 页 0xb0----0xb8
    {
             vWrite_Cmd(page);
             vWrite_Cmd(0x10);                     //列地址,高低字节两次写入,从第0 列开始
             vWrite_Cmd(0x00);
    for(seg=0;seg<128;seg++)        //写128 列
    {
          vWrite_Data(*p++); }
    }
}


回复

使用道具 举报

发表于 2013-7-28 12:24 | 显示全部楼层
先给你avr和stm32的驱动代码,你自己移植到51上吧
并口驱动,80时序

抛开驱动代码先不说,
vr和v5的电压分配是比较敏感的,一定要仔细留意。
偏置电压差太多的话,显示内容不出来很正常。(其实应该是有一些微弱残影的)
比较取巧办法是调节lcd整体供电电压试试看,你根据自己情况选择从哪里先入手吧


stm32.rar (4.74 KB, 下载次数: 5, 售价: 1 人民币)
nju6676_avr.rar (5.74 KB, 下载次数: 10, 售价: 1 人民币)



我搭电路时清一色用的1u电容,因为没空给它凑0.47的
20130728726.jpg

评分

参与人数 1一乐金币 +100 收起 理由
yleee + 100 助人为乐

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-7-28 14:17 | 显示全部楼层
非常感谢。
(1)我移植了你的stm32的,可是不行,还是蓝屏的。没有什么反应。
Sun Jul 28 14-11-05.jpg Sun Jul 28 14-08-28.jpg
手机忘了带了,用电脑拍的。
(2)单片机电压那里我也用了稳压电源调的,也不行。vr和V5我用2M,2M中间串了一个50K的滑动变阻器调了,也不行。可能是我板子设计时,线间距为6mil太小了。


回复

使用道具 举报

 楼主| 发表于 2013-7-28 14:19 | 显示全部楼层
文句子 发表于 2013-7-28 12:24
先给你avr和stm32的驱动代码,你自己移植到51上吧
并口驱动,80时序

thanks,可是还是不行。
回复

使用道具 举报

发表于 2013-7-28 14:37 | 显示全部楼层
ki5lzv 发表于 2013-7-28 14:19
thanks,可是还是不行。

如果我是你,
在换另外一块屏碰碰运气前,
对照DS,核对一下v1,v2,v3,v4,v5,vout是否大致符合说明,Vlcd=vdd-v5大多少,以及配置引脚电平是否正确

战略上藐视它,战术上要重视它。
回复

使用道具 举报

发表于 2013-7-28 15:07 | 显示全部楼层
ki5lzv 发表于 2013-7-28 14:19
thanks,可是还是不行。

还有,必要时要把你移植后的代码片段扔上来

对你的代码仍然有点将信将疑的感觉,
像读忙那种东西可以考虑直接用延时代替,读忙只是优化时的一种手段,调试阶段,在时序未见效果时带上读忙判断无异于节外生枝。
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2026-3-5 09:10 , Processed in 0.041666 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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