wuqihuihaoo 发表于 2011-2-23 15:10:55

一个12864屏,不知如何辨认脚位,只有9根线。

一个12864屏,不知如何辨认脚位,只有9根线。
http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_617900C2Y2FR.jpg
(原文件名:未命名12864.jpg)

gallle 发表于 2011-2-23 15:25:14

上边有COG代表是玻璃邦定的。控制芯片在玻璃上,你只要找到电源和地,还有通讯接口即可。一般这种有4bit和串行2种,具体得看芯片的功能。

Hamyou 发表于 2011-2-23 15:35:23

COG的屏,串行控制。
引脚可能为:
1:CS
2:RES
3: RS
4: SCK
5: SDA
6: VCC
7: GND
8: LED-
9: LED+

xzyang 发表于 2011-2-23 15:43:53

st7565控制器,串行的
就这几个脚,找找看
8,9肯定是背光,至于正反万用表量一下。

背光+
背光-
rs
clk
dat
cs
reset
+3.3V
gnd

tuowai 发表于 2011-2-23 15:55:07

回复【3楼】xzyang
st7565控制器,串行的
就这几个脚,找找看
8,9肯定是背光,至于正反万用表量一下。
背光+
背光-
rs
clk
dat
cs
reset
+3.3v
gnd
-----------------------------------------------------------------------

牛人啊,光看看背面就啥都清楚了!

bourne 发表于 2011-2-23 17:51:29

按ST7565引脚顺序是/CS, /RES, A0(RS), CLK, DAT, VDD, VSS
FPC上面应该是这个顺序来的,背光引脚用万用表测

Jigsaw 发表于 2011-2-23 17:54:38

LCD MODULES:WGM-12864COG-32E


MECHANICAL SPECIFICATION:
LCD TYPE:STN POSITIVE Y/G
NUMBER OF DOTS:128*64 DOT MATRIX
MODULE SIZE(W*H*T):93.0*57.0*12.0 MAX(MM)
VIEWING AREA(W*H):65.5*38.0(MM)
DOT SIZE(WXH):0.36*0.41
DOT PITCH(WXH):0.40*0.45
OPERATING VOLTAGE:65-85V AC 200-400HZ
LCD DUTY:1/65
LCD BIAS:1/9
Microprocessor interface: Parallel 6800
Pin outs connection: LINE BANK CONTOCT
LCD controller: NT7532
VIEWING DIRECTION:6



楼主应该先放狗搜一搜
我稍微搜了下,你可以进一步搜,应该有相关的datasheet

wuqihuihaoo 发表于 2011-2-23 20:33:19

谢谢各位大侠的解答!我量了一下,有可能是2楼的脚位排列。

zhengyang 发表于 2011-2-23 20:58:14

都是牛人!

Hamyou 发表于 2011-2-23 21:09:23

传一个这个屏的驱动,测试过,没问题

#ifndef __12864COG_H__
#define __12864COG_H__

#define uchar unsigned char
#define uint unsigned int


#define DISPLAY_ON 0xAF
#define DISPLAY_OFF 0xAE
#define DISPLAY_START_LINE 0x40   //0
#define DISPLAY_PAGE 0xB0
#define DISPLAY_ADC_L 0xA0    //the LSB is first
#define DISPLAY_ADC_M 0xA1
#define DISPLAY_REVERSE_OFF 0xA6
#define DISPLAY_REVERSE_ON 0xA7
#define DISPLAY_ENTIRE_ON 0xA5
#define DISPLAY_ENTIRE_OFF 0xA4
#define DISPLAY_SHL_NOM 0xC0
#define DISPLAY_SHL_REV 0xC8

#define LCD_POWER_CV 0x2C
#define LCD_POWER_RV 0x2E
#define LCD_POWER_FV 0x2F

#define LCD_REPOWER_1 0x81
#define LCD_REPOWER_2 0x31
#define LCD_RESISTOR 0x20

#define LCD_RESET 0xE2
#define DISPLAY_COLUMN_MSB 0x10    //0
#define DISPLAY_COLUMN_LSB 0x00                        //0

sbitLCD_CS=P1^0;
sbitLCD_RES=P1^1;
sbitLCD_RS=P1^2;
sbitLCD_SCK=P1^3;
sbitLCD_SDA=P1^4;

#define LCD_CS_H LCD_CS=1
#define LCD_CS_L LCD_CS=0

#define LCD_RES_HLCD_RES=1
#define LCD_RES_LLCD_RES=0

#define LCD_RS_H   LCD_RS=1
#define LCD_RS_L   LCD_RS=0

#define LCD_SCK_HLCD_SCK=1
#define LCD_SCK_LLCD_SCK=0

#define LCD_SDA_HLCD_SDA=1
#define LCD_SDA_LLCD_SDA=0





void Write_DAT(uchar dat);
void Write_CMD(uchar com);
void Initialize_LCD(void);
void Write_word(uchar x,uchar y,uchar dat[]);
void Write_char(uchar x,uchar y,uchar dat[]);
void Displaychars(uchar x,uchar y,uchar dat[]);
void Displaywords(uchar x,uchar y,uchar dat[]);
void Clr_LCD(void);

/*******************************************************************************
*函数名:延时函数
*功能:延时
*输入:uchar n(延时长度)
*输出:无
*调用函数:无
*版本:1.0
*
*******************************************************************************/
void Delayus(uchar n)
{
   for(;n>0;n--);

}



/*******************************************************************************
*函数名:写数据函数
*功能:写一个数据到液晶
*输入:uchar com(数据)
*输出:无
*调用函数:延时函数Delay()
*版本:1.0
*
*******************************************************************************/


/*******************发送数据***********************/
void Write_DAT(uchar dat)
{
    uchar i;
    LCD_RS_H;
    LCD_CS_L;
        LCD_SCK_L;
    for(i=0;i<8;i++)
    {
               if(dat&0x80) LCD_SDA_H;
      else         LCD_SDA_L;
                   LCD_SCK_H;
          //Delayus(5);
               LCD_SCK_L;
                   dat=dat<<1;
    }
        LCD_CS_H;
}

/*******************************************************************************
*函数名:写指令函数
*功能:写一个指令到液晶
*输入:uchar com(命令)
*输出:无
*调用函数:延时函数Delay()
*版本:1.0
*
*******************************************************************************/


/*******************发送命令***********************/
void Write_CMD(uchar com)
{
        uchar i;
        LCD_RS_L;
        LCD_CS_L;
        LCD_SCK_L;
        for(i=0;i<8;i++)
           {
            if(com&0x80) LCD_SDA_H;
      else         LCD_SDA_L;
                   LCD_SCK_H;
          //Delayus(5);
               LCD_SCK_L;
               com=com<<1;
        }
        LCD_CS_H;
}

/*******************************************************************************
*函数名:初始化函数
*功能:启动液晶,初始化液晶
*输入:无
*输出:无
*调用函数:写数据函数Write_DAT(),写命令函数Write_CMD(),延时函数Delay()
*版本:1.0
*
*******************************************************************************/

void Initialize_LCD(void)
{
        LCD_RES_L;
        delayms(100);
        LCD_RES_H;
        Write_CMD(DISPLAY_ADC_L);
        Write_CMD(DISPLAY_SHL_NOM);
        Write_CMD(0xA2);
        Write_CMD(LCD_POWER_CV);
        delayms(100);
        Write_CMD(LCD_POWER_RV);
        delayms(100);
        Write_CMD(LCD_POWER_FV);
        Write_CMD(LCD_REPOWER_1);
        Write_CMD(LCD_REPOWER_2);
        Write_CMD(LCD_RESISTOR);
        Write_CMD(DISPLAY_START_LINE+32);
        Write_CMD(DISPLAY_SHL_REV);
        Write_CMD(DISPLAY_ON);       
}

void Write_oneDat(uchar x,uchar y,uchar p)
{
        uchar COH,COL;
        COH=DISPLAY_COLUMN_MSB + x/16;
        COL=DISPLAY_COLUMN_LSB + x%16;
        Write_CMD(COH);
        Write_CMD(COL);
        Write_CMD(DISPLAY_PAGE + y-1);
        Write_DAT(p);
       

}


/*******************************************************************************
*函数名:写字符函数
*功能:写字符函数,写一个字符到固定的位置
*输入:uchar c 字符的列号; uchar l 字符的行号; uchar dat[] 字符数据
*输出:无
*调用函数:写数据函数Write_DAT(),写命令函数Write_CMD()
*版本:1.0
*
*******************************************************************************/



void Write_char(uchar x,uchar y,uchar *p)
{
        uchar i,COH,COL;
        COH=DISPLAY_COLUMN_MSB + x/16;
        COL=DISPLAY_COLUMN_LSB + x%16;
        Write_CMD(COH);
        Write_CMD(COL);
        Write_CMD(DISPLAY_PAGE + 2*(y-1));
        for(i=0;i<8;i++)
        {
                Write_DAT(*(p+i));
        }
        Write_CMD(COH);
        Write_CMD(COL);
        Write_CMD(DISPLAY_PAGE + 2*(y-1) + 1);
        for(i=0;i<8;i++)
        {
                Write_DAT(*(p+i+8));
        }
       
}
void Write_word(uchar x,uchar y,uchar *p)
{
        uchar i,COH,COL;
        COH=DISPLAY_COLUMN_MSB + x/16;
        COL=DISPLAY_COLUMN_LSB + x%16;
        Write_CMD(COH);
        Write_CMD(COL);
        Write_CMD(DISPLAY_PAGE + 2*(y-1));
        for(i=0;i<16;i++)
        {
                Write_DAT(*(p+i));
        }
        Write_CMD(COH);
        Write_CMD(COL);
        Write_CMD(DISPLAY_PAGE + 2*(y-1) + 1);
        for(i=0;i<16;i++)
        {
                Write_DAT(*(p+i+16));
        }
       
}
void Write_words(uchar x,uchar y,uchar num,uchar *p)
{
        uchar i;
        for(i=0;i<num;i++)
        {
           Write_word(x,y,p);
           x+=16;
           p+=32;
        }
}


/*******************************************************************************
*函数名:清屏函数
*功能:将液晶清屏液晶
*输入:无
*输出:无
*调用函数:写数据函数Write_DAT(),写命令函数Write_CMD()
*版本:1.0
*
*******************************************************************************/


void Clr_LCD(void)
{
        uchar i,j;
        Write_CMD(DISPLAY_COLUMN_MSB);
        Write_CMD(DISPLAY_COLUMN_LSB);
        for(i=0;i<9;i++)
        {
                Write_CMD(DISPLAY_PAGE + i);
                Write_CMD(DISPLAY_COLUMN_MSB);
                Write_CMD(DISPLAY_COLUMN_LSB);
                for(j=0;j<132;j++)
                {
                        Write_DAT(0x00);
                }
        }
}
#endif

suncq 发表于 2011-2-23 23:02:55

lz在哪买的?给个链接

wuqihuihaoo 发表于 2011-2-24 08:46:12

回复【10楼】suncq
-----------------------------------------------------------------------

在电话机上拆的。

wuqihuihaoo 发表于 2011-2-24 08:53:15

回复【9楼】Hamyou
-----------------------------------------------------------------------

谢谢9楼的资料!

n_mos 发表于 2011-2-24 16:01:45

刚好手上有几个屏,好资料   收了!   谢谢

xuhui798 发表于 2011-2-26 12:30:11

mark备用,

lzdyfsyd 发表于 2011-3-25 23:02:32

回复【13楼】n_mos
-----------------------------------------------------------------------

你好。能绐我一个编译好的HEX 吗?我复制了那一个C文件,但是报错,,我有一堆这个屏(用在移动电话机上的,还有外壳,0现在那个电话没有什么用了,,,

Rapido 发表于 2011-3-25 23:40:40

回复【15楼】lzdyfsyd
回复【13楼】n_mos
-----------------------------------------------------------------------
你好。能绐我一个编译好的hex 吗?我复制了那一个c文件,但是报错,,我有一堆这个屏(用在移动电话机上的,还有外壳,0现在那个电话没有什么用了,,,
-----------------------------------------------------------------------

带GSM模块的话有价值...电话上图看看

dreamyou 发表于 2011-3-26 00:20:32

神人到处都有啊。

lzdyfsyd 发表于 2011-4-2 23:06:40

回复【16楼】Rapido
-----------------------------------------------------------------------

中国移动 敏迅 GT1000   这是一个很强大的模块,不是通用的那一种,

nihao_x 发表于 2012-2-3 17:19:52

我有一块 wgm-12864cog-41 ,点亮了.
/*===========================================================================
Filename: CP_LCD.C
Version : 2005-1-21
Note    : WGM-12864COG-41 V3.0驱动程序
Hardware: XTAL=7.158MHz(3.579MHz倍频)
============================================================================*/

/*============================================================================
;        WGM-12864COG-41 VER2.0 serial LCD dirver program
;        author zhaofei,modification date 04-3-23
;        copyright ningbo land communicatins equipment co.,ltd,2004-03
=============================================================================*/
#define LCD_GLOBAL
#include <stdarg.h>
#include"..\inc\Dotlib.h"
#include"..\inc\config.h"

                                        ////0123456789012345
uint8        code EmptyTable[] = "                ";
void Delay1us(uint8 n)
{
        while(n--)
        {
                _nop_();
        }
}
/*================================================================================
;        func        data serial out
;        intern function
;        call        no
;        calledInitialLCD()   InitialLCD1() ClearLCD()putHZ()PutASCII()
;        modification author zhaofei    modification date 04-03-11
=================================================================================*/
void lcd_wr(uint8 ComDatFlag,uint8 OutData)
{
        uint8 j;
        if(ComDatFlag)
        {
      LCDA0 = 1;
        }
        else
        {
                LCDA0 = 0;
        }
       
       
        for(j=0;j<8;j++)
        {
      LCDSCL = 0;
                //Delay1us(1);
                _nop_();

                if((OutData&0x80)==0x80)
            LCDSDA = 1;
                else
                        LCDSDA = 0;
                //Delay1us(1);
                _nop_();
                OutData<<=1;
      LCDSCL = 1;
                //Delay1us(2);
                _nop_();
                _nop_();
        }
}

//void OpenLcdBackLight(void)
//{
//    //Clr_Pin_X(PIN1,LEDON);        //低电平点亮背光
//    LEDON = 1;
//    LcdBackLightOpenTime = LCD_BLIGHT_OPEN_TIME;
//}
//
//void CloseLcdBackLight(void)
//{
//    //Set_Pin_X(PIN1,LEDON);
//    LEDON = 0;
//}

void init_LCD(void)
{       
   
    LCDCS = 1;       
//    LCDRST = 1;       
        LCDA0 = 0;       
    LCDSCL = 1;          
        LCDSDA = 0;
    OpenLcdBackLight();
    //Clr_Pin_X(PIN1,LEDON);
//    LcdBackLightOpenTime = 0xffff;

        Delay1us(5);
//        LCDRST = 0;
//        Delay1ms(10);
//    LCDRST = 1;
//        Delay1ms(10);
       
        LCDCS = 0;
//        Delay10ms(1);
    lcd_wr(LCD_COMMAND,0xA2);                //置液晶显示驱动偏压比D0=0=1/9               
    lcd_wr(LCD_COMMAND,0xA0);                //显示缓冲区地址与段输出对应关系D0=0=正常 =1=按Y轴反向//a0//a1
    lcd_wr(LCD_COMMAND,0xC8);                //置公共端输出扫描方向D3=0=正常 =1=按X轴反向   //c0//c
                        
    lcd_wr(LCD_COMMAND,0x2F);                //打开供电电源                  
    Delay1ms(5);

    lcd_wr(LCD_COMMAND,0x25);// v5:Rb/Ra,20-27粗调,越小越淡               
    Delay1ms(5);
   
        lcd_wr(LCD_COMMAND,0x81);                //BIT2-BIT0=V5电压调节,选择内部电阻比例//25//23      
        ReadBytesFMEEPROM(LCDCONTRAST_Adds,1);
        lcd_wr(LCD_COMMAND,EEPROMDataBuf);        //uLCDContrast);                //V5=1,微调,越小越淡0-3f   0x30            
        Delay1ms(10);

    lcd_wr(LCD_COMMAND,0xA4);                //D0=0=正常显示/D0=1=全亮            
    lcd_wr(LCD_COMMAND,0xA6);                //正显
    lcd_wr(LCD_COMMAND,0xAF);                //液晶显示开/关D0=1=开   
                  
    lcd_wr(LCD_COMMAND,0x60);                //GO 33 LINE         
    Delay1ms(5);              
    LCDCS = 1;
   
    Delay1ms(5);

}

void SetLCDContrast( uchar n)                //设置对比度
{
       
        LCDCS = 1;       
//    LCDRST = 1;       

        Delay1us(5);
//        LCDRST = 0;
//        Delay1ms(10);
//    LCDRST = 1;
//        Delay1ms(10);
        LCDCS = 0;
        Delay1ms(10);
    lcd_wr(LCD_COMMAND,0x81);                //BIT2-BIT0=V5电压调节,选择内部电阻比例//25//23      
    if(n>0x3f)        n = uLCDContrast;               
    lcd_wr(LCD_COMMAND,n);                //V5=1,微调,越小越淡0-3f   0x30            
    Delay1ms(5);
    LCDCS = 1;
    Delay1ms(10);
}


void putASCII( int8 chASC, uint8 reserve )
{
        /*该函数用来显示一个ASCII码字符*/
        uint8 i;
        uint16 ASC_index, MAXLEN;
       
        if ( chASC == '\n' )
        {
                chCursorSiteNow_X = 0;
                chCursorSiteNow_Y += 16;
                if ( chCursorSiteNow_Y > Y_SIZE - 1 )
                {
                        chCursorSiteNow_Y = 0;
                }
                return;
        }
       
        if ( chCursorSiteNow_X + 8 > X_SIZE )   //如果剩下的位置不够显示一个ASCII码字符,则换行
        {
                chCursorSiteNow_X = 0;
                chCursorSiteNow_Y += 16;
                if ( chCursorSiteNow_Y > Y_SIZE - 1 )
                {
                        chCursorSiteNow_Y = 0;
                }
        }
       
        MAXLEN = sizeof( ASCIITAB ) / sizeof( lattice8_16 );
        for ( ASC_index = 0; ASC_index < MAXLEN; ++ASC_index )
        {
                if ( ASCIITAB[ ASC_index ].index == chASC )
                        break;
        }
       
        if ( ASC_index < MAXLEN )
        {
      LCDCS = 0;
       
                set_address( chCursorSiteNow_X, chCursorSiteNow_Y );
       
                if ( reserve )
                {
                        for ( i = 0; i < 8; i++ )
                        {
                                lcd_wr( LCD_DATA, ASCIITAB[ ASC_index ].TABLE[ i ]^0xff );
                        }
                }
                else
                {
                        for ( i = 0; i < 8; i++ )
                        {
                                lcd_wr( LCD_DATA, ASCIITAB[ ASC_index ].TABLE[ i ] );
                        }
                }       
       
                set_address( chCursorSiteNow_X, chCursorSiteNow_Y + 8 );
       
                if ( reserve )
                {
                        for ( i = 0; i < 8; i++, chCursorSiteNow_X++ )
                        {
                                lcd_wr( LCD_DATA, ASCIITAB[ ASC_index ].TABLE[ i + 8 ]^0xff );
                        }
                }
                else
                {
                        for ( i = 0; i < 8; i++, chCursorSiteNow_X++ )
                        {
                                lcd_wr( LCD_DATA, ASCIITAB[ ASC_index ].TABLE[ i + 8 ] );
                        }
                }
               
      LCDCS = 1;
        }
}


void putHZ( uint8 *str, uint8 reserve )
{
        /*该函数用来显示一个汉字*/
        uint8   iHZ_GB2312[ 2 ];
        uint16hz_index, MAXLEN;
        uint8i;
       
        MAXLEN = sizeof( HZTAB ) / sizeo

nihao_x 发表于 2012-2-3 17:22:01

/**********************************************************************************************
*   
*        文件名:        lcd.h
*12864 Serial LCD, contains two documents: lcd.c with lcd.h. call void printLCD (uint8 x, uint8 y, uint8* fmt, ...), can be shown in the string sent to the LCD screen display
***********************************************************************************************/

#include "..\inc\ctype.h"
#include "..\inc\SST89x5x4.H"

#ifdef LCD_GLOBAL
        #define LCD_EXTERN
#else
        #define LCD_EXTERNextern
#endif

#define LCD_DATA      1
#define LCD_COMMAND   0


#define HZ_SIZE   180                  
#define X_SIZE      128               
#define Y_SIZE      64


//dat                        D0                P0_0
//Clk                        D1                P0_1
//CS                        D2                P0_2
//D/C                        D3                P0_3
//RST                        RST               
//VCC                        VCC               
//LED+                CLCD1        P1_7

//LCD管脚定义
//#define                LCDRST               
#define                LCDA0               P0_3
#define         LCDCS               P0_2
#define         LCDSCL               P0_1
#define                LCDSDA               P0_0
#define         LEDON                P1_7                //低电平时背光亮

#define    OpenLcdBackLight()        LEDON = 1; LcdBackLightOpenTime = 20
#define    CloseLcdBackLight()        LEDON = 0




#define uLCDContrast            0x36   //0x30                   //液晶对比度
#define WARNINFOTIME            0x03   
//显示警告信息倒计时器    //显示告警信息持续(保护不被其他显示程序打断)时间

//LCD_EXTERN uint8 xdata LCDContrast;                 //对比度

//LCD_EXTERN uint8 xdata WarnTimer;                  
LCD_EXTERN uint8 xdata chCursorSiteNow_X;
LCD_EXTERN uint8 xdata chCursorSiteNow_Y;

LCD_EXTERNuint8 xdata SystemInitFlag;
LCD_EXTERNuint8 xdata SystemInitCount;

#define LCD_BLIGHT_OPEN_TIME    1260        //*10mS
LCD_EXTERNuint8 data LcdBackLightOpenTime;
//volatile
LCD_EXTERN void lcd_wr(uint8 ComDatFlag,uint8 Data);
//LCD_EXTERN void OpenLcdBackLight(void);
//LCD_EXTERN void CloseLcdBackLight(void);
LCD_EXTERN void init_LCD(void);
LCD_EXTERN void ClearLcd(void);
LCD_EXTERN void putASCII(int8 chASC,uint8 Rev);
LCD_EXTERN void set_address(uint8 x, uint8 y);
LCD_EXTERN void setxy(uint8 x, uint8 y);

LCD_EXTERN void printLCD(uint8 x,uint8 y,uint8 *fmt, ... );

LCD_EXTERN void reprintLCD( uint8 x,uint8 y,uint8 *fmt, ... );
LCD_EXTERN void draw_bmp( uint8 x, uint8 y,uint8 num );
//LCD_EXTERN void LcdReDisp(uint8 x1,uint8 x2,uint8 y1,uint8 y2);

//LCD_EXTERN void LCDDispLine0(uint8 no,uint8 *str,uint8 Length);
//LCD_EXTERN void LCDDispLine1(uint8 no,uint8 *str,uint8 Length);
//LCD_EXTERN void LCDDispLine2(uint8 no,uint8 *str,uint8 Length);
//LCD_EXTERN void LCDDispLine3(uint8 no,uint8 *str,uint8 Length);
//LCD_EXTERN void DispWarnInfo(uint8 *pL2, uint8 *pL3);
//LCD_EXTERN void DispWarnInfoShort(uint8 *pL2, uint8 *pL3);

LCD_EXTERN void ClearLcdLine(uint8 Oy);
//LCD_EXTERN void ClearLcdLine123(void);

LCD_EXTERN void draw_irr(uint8 x,uint8 y,uchar irr, bool reserve); //2006-11-27 18:43 chxd
LCD_EXTERN void SetLCDContrast( uchar n);                //设置对比度
LCD_EXTERN void draw_spk_bmp(uint8 x,uint8 y,uint8 num);        //显示声音音量,0~3,

角度361 发表于 2012-3-26 14:38:51

mark,多谢分享{:victory:}

sensitiveplant 发表于 2012-3-28 20:22:34

Hamyou 发表于 2011-2-23 21:09 static/image/common/back.gif
传一个这个屏的驱动,测试过,没问题

#ifndef __12864COG_H__


好强大!

sensitiveplant 发表于 2012-3-28 20:25:38

Hamyou 发表于 2011-2-23 21:09 static/image/common/back.gif
传一个这个屏的驱动,测试过,没问题

#ifndef __12864COG_H__


很好很强大。



www.360suos.com
页: [1]
查看完整版本: 一个12864屏,不知如何辨认脚位,只有9根线。