一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 2065|回复: 3

共享点亮光王12864液晶的经验。

[复制链接]
发表于 2014-1-23 01:59 | 显示全部楼层 |阅读模式
本帖最后由 40061589 于 2014-1-23 02:14 编辑

      前段时间买了几片光王12864液晶(NJU6676),看了一些资料终于把它点亮了,现在把一些经验给大家分享一下。
在供电电路中我用的是4倍升压,所用的电容电阻等元件是手头上现有的规格,原理图如下。程序这一块我用的是80时序,现贴出写指令、写数据、判忙、初始化等程序段。控制芯片我用的是CC1110,大家可以根据自己所用的芯片改一下程序。按照我这个原理图与程序肯定可以点亮屏。

电路部分:
    原理图中R8\R9很重要,我先用的2个510K的就不能点亮屏换为910K与3M就可以了,可调电阻没变200K。供电3.3V时实测电路各点的电压为:V5=Vout=-9.28V~-9.52V之间变化,V4=-7.82V~8.04V之间变化,V3=-6.47V~-6.66V之间变化,V2=0.46V~0.52V之间变化
V1=1.8V~1.82V之间变化,可调电阻所调的位置不同对以上各点的电压会有所影响,但应该要满足这个关系:V1>V2>V3>V4>V5=Vout,如果其中哪一个点的电压不正常,则检查LCD软排线与PCB是否接触正常或外接电容是否虚焊。

程序部分:
#define HIG 1
#define LOW 0
#define LCD_CS P0_7
#define LCD_RES P0_6
#define LCD_A0 P0_5
#define LCD_WR P0_4
#define LCD_RD P0_3
#define LCD_PS P0_1
#define LCD_C86 P0_0
#define LCD_DATA P1
#define NOP asm("NOP");asm("NOP");asm("NOP");asm("NOP");

void LCD_Reset(void)//复位程序

{
  LCD_C86=LOW;//8080MPU
  LCD_PS=HIG;//并行接口
  LCD_RES=LOW;
  delay_Xms(50);//延时50ms
  LCD_RES=HIG;
  delay_Xms(50);//延时50ms
}
void LCD_ini(void)//初始化程序
{
  LCD_Reset();
  LCD_Write_COM(0xa2); //LCD bias Select               
  LCD_Write_COM(0xa1);//ADC Select   
  LCD_Write_COM(0xc0);//Common Direction Select   
  LCD_Write_COM(0x40);//Initial display line
  LCD_Write_COM(0x81);//EVR mode set
  LCD_Write_COM(0x30); //Set EVR register 0x00 to 0x3f               
  LCD_Write_COM(0x2f); //Power control set
  LCD_Write_COM(0xa6);
  LCD_Write_COM(0xa4);//entire display on         
  LCD_Write_COM(0xe7);//lcd driver on           
  LCD_Write_COM(0xaf);//Display ON              
  LCD_Write_COM(0xad);
}

void LCD_Write_COM(uchar command)//8080并行写指令
{
  LCD_Busy();
  LCD_A0=LOW;
  LCD_CS=LOW;
  LCD_RD=HIG;
  LCD_WR=LOW;
  NOP;
  LCD_DATA=command;
  NOP;
  LCD_WR=HIG;
}
void LCD_Write_DATA(uchar data)//8080并行写数据
{
  //LCD_Busy();
  LCD_A0=HIG;
  LCD_CS=LOW;
  LCD_RD=HIG;
  LCD_WR=LOW;
  NOP;
  LCD_DATA=data;
  NOP;
  LCD_WR=HIG;
}
void LCD_Busy(void)//判忙
{
  uchar i;
  P1DIR=0x00;//P1端口配置为输入
  LCD_A0=LOW;
  LCD_CS=LOW;
  LCD_RD=LOW;
  LCD_WR=HIG;
  i=P1;
  while (i)
  {i=P1&(0x80);}
  P1DIR=0xff;//P1端口配置为输出
}
void Display_fill(uchar fill)  //全屏填充
{  
unsigned char page,column;  
for(page=0xB7;page>=0xB0;page--)  
    {  
     LCD_Write_COM(page);  //set page address   
     LCD_Write_COM(0x10);  //set Column address MSB   
     LCD_Write_COM(0x00);  //set column address LSB   
     for(column=0;column<131;column++)  
        {  
         LCD_Write_DATA(fill);  
        }  
    }  
}  



液晶正面.jpg
液晶背面.jpg
外接供电电路.JPG
发表于 2014-3-10 10:46 | 显示全部楼层
点亮了楼主上个图看看效果呗……
回复

使用道具 举报

 楼主| 发表于 2014-3-13 00:42 | 显示全部楼层
有的地方有伪影,不知道是怎么出现的。
IMAG0697.jpg
回复

使用道具 举报

发表于 2014-3-31 14:22 | 显示全部楼层
我的一直都没显示,只有背光亮。请问楼主用的什么MCU,能否把程序发我一份测试。谢谢!
回复

使用道具 举报

本版积分规则

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

GMT+8, 2025-10-31 10:29 , Processed in 0.033728 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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