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

2020-02-04 09:24发布

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

(原文件名:未命名12864.jpg)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
nihao_x
1楼-- · 2020-02-07 01:42
我有一块 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  "..incDotlib.h"
#include  "..incconfig.h"

                                        ////0123456789012345
uint8        code EmptyTable[] = "                ";
void Delay1us(uint8 n)
{
        while(n--)
        {
                _nop_();
        }
}
/*================================================================================
;        func        data serial out
;        intern function
;        call        no
;        called  InitialLCD()   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[0]);        //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 == ' ' )
        {
                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[0] == 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 ];
        uint16  hz_index, MAXLEN;
        uint8  i;
       
        MAXLEN = sizeof( HZTAB ) / sizeo
nihao_x
2楼-- · 2020-02-07 02:07
 精彩回答 2  元偷偷看……
角度361
3楼-- · 2020-02-07 05:59
mark,多谢分享
sensitiveplant
4楼-- · 2020-02-07 11:39
Hamyou 发表于 2011-2-23 21:09
传一个这个屏的驱动,测试过,没问题

#ifndef __12864COG_H__

好强大!
sensitiveplant
5楼-- · 2020-02-07 15:20
Hamyou 发表于 2011-2-23 21:09
传一个这个屏的驱动,测试过,没问题

#ifndef __12864COG_H__

很好很强大。



www.360suos.com

一周热门 更多>