株式会社ジーテック

制御機器を小ロット多品種で設計製作

グラフィックLCDモジュール(LM6059BCW)を使ってみる

TOPWAYのLM6059BCWというグラフィックLCDが入手できたので試してみたいと思います。大きさの割には解像度があり、バックライトもついていて視認性も悪くないです。

※注意:マイコンボードは3.3Vを使用して下さい。

OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA
使用機器

使用機器は下記のとおり。他、パソコンや電源、PICKIT2又はPICKIT3も当然ながら必要です。使い方はいたってシンプル。lm6059bcw.cを頭でインクルードし、起動時にlcd_ini()で初期化し、lcd_write(lcd_image);で書き込みます。表示内容はlcd_imageの中身を更新するかlcd_start(0);で行を指定してprintf(lcd_char,”abcdefghijklmnopqrstu”);でテキストを表示します。その他詳細はソースをご確認ください。

使用機器は下記のとおり。他、パソコンや電源、PICKIT2又はPICKIT3も当然ながら必要です。使い方はいたってシンプル。lm6059bcw.cを頭でインクルードし、起動時にlcd_ini()で初期化し、lcd_write(lcd_image);で書き込みます。表示内容はlcd_imageの中身を更新するかlcd_start(0);で行を指定してprintf(lcd_char,”abcdefghijklmnopqrstu”);でテキストを表示します。その他詳細はソースをご確認ください。

LCDのデータシート LM6059BCW.zip
マイコンボード(PIC16F1947搭載)
ZEATEC co.,ltd. ZT-PIC16F194701(3.3V仕様)

プロジェクトファイルも含めたサンプル 
zt-16f194701_lm6059bcw.zip    
接続ハーネスの図面 
Harness_LM6059BCW-1.zip Harness_LM6059BCW-1.pdf    
開発環境:MPLAB_IDE_8_92 + CCS-C PCMコンパイラVer.4.132

/*******************************************************************************
グラフィックLCDモジュール(TOPWAY LM6059BCW)用ライブラリ 2016/10/29作成

□提供元
ZEATEC co.,ltd. 

□ご利用について
転載・無断使用可です。このライブラリを使用した上での不具合等に関しては、いかなる内容におい
ても一切の責任を追わないものとします。

□使用方法
lcd_ini()をスタートアップに入れ、用途に合わせて下記を定期的(0.1sec単位ぐらい)に実行する。
フォントのデータはfont_data.cを修正することで記号なども追加できます。イメージデータの場合は、
image_data.cデータを修正してください。1バイト単位のデータ作成は伊藤 哲雅様作のLCD_Imageが
便利です。

1バイト単位のビットマップデータの場合 lcd_bitmap8();
4バイト単位のビットマップデータの場合 lcd_bitmap32();
テキストの場合は行番号を指定してからテキストを送信。
lcd_start(0);
printf(lcd_char,"///////////////////// ");
lcd_start(1);
printf(lcd_char,"/  ZEATEC co.,ltd.  / ");
lcd_start(2);
printf(lcd_char,"/      ジーテック       / ");
lcd_start(3);
printf(lcd_char,"/                   / ");
lcd_start(4);
printf(lcd_char,"/AN0=%04lumV , RA1=%u / ",analog_value,port1_ra1);
lcd_start(5);
printf(lcd_char,"/TOPWEY LM6059BCW   / ");
lcd_start(6);
printf(lcd_char,"/Dot128x64,Text21x8 / ");
lcd_start(7);
printf(lcd_char,"///////////////////// ");

□接続方法
RE0 = DB0
RE1 = DB1
RE2 = DB2
RE3 = DB3
RE4 = DB4
RE5 = DB5
RE6 = DB6
RE7 = DB7
RF0 = /RES 1:Run 0:ini
RF1 = A0 1:DisplayData 0:ControlData
RF2 = E

上記以外の配線はLCDモジュール上またはハーネスによってVDDおよびVSSと接続する。
/CS1 = Vss
R/W = Vss
BLA = Vdd

*****************************************************************************************/

int const contrast_lavel = 0x18;

//LCDにコマンド送信
void lcd_cmd(int cmd){

    output_bit(PIN_F1,0);// A0 0:Control data.
    output_e(cmd);// DB0-7
    output_bit(PIN_F2,1);// E Enable trigger
    output_bit(PIN_F2,0);// E Enable trigger
}

//LCDにデータ送信
void lcd_data(int cmd){

    output_bit(PIN_F1,1);// A0 0:Control data.
    output_e(cmd);// DB0-7
    output_bit(PIN_F2,1);// E Enable trigger
    output_bit(PIN_F2,0);// E Enable trigger
}

//LCDを初期化
void lcd_ini(){

    //初期値
    output_bit(PIN_F0,!0);// /RES 0:stop.
    output_bit(PIN_F1,1);// A0 1:Display data. 0:Control data.
    output_bit(PIN_F2,0);// E Enable trigger

    //hardware reset LCD module
    output_bit(PIN_F0,1);// /RES SET
    output_bit(PIN_F0,0);// /RES RESET
    delay_ms(1);
    output_bit(PIN_F0,1);// /RES SET
    delay_ms(1);
    
    lcd_cmd(0xaf);//Display ON
    lcd_cmd(0x40);//Set display Start line=0
    lcd_cmd(0xa0);//ADC = 0:Normal 1:Reverse
    lcd_cmd(0xa6);//Normal display
    lcd_cmd(0xa4);//Disible display all point
    lcd_cmd(0xa2);//Bais = 0xa2:1/9 0xa3:1/7
    lcd_cmd(0xc8);//SHL Select 0xc8:Flipped in y direction 0xc0:Normal display

    lcd_cmd(0x2f);//Power control = all on
    lcd_cmd(0x26);//RA/RB setting

    lcd_cmd(0xf8);//Booster Rabit = 4x
    lcd_cmd(0x00);//(tow byte command)

    lcd_cmd(0x81);//E-Vol setting
    lcd_cmd(contrast_lavel);//(tow byte command)
}

void lcd_start(int row){
    lcd_cmd(0xb0+row);//select page 0-3
    lcd_cmd(0x10);//start form colum 4
    lcd_cmd(0x00);//(tow byte command)
}

void lcd_char(char c){
    lcd_data(font[c-0x20][0]);
    lcd_data(font[c-0x20][1]);
    lcd_data(font[c-0x20][2]);
    lcd_data(font[c-0x20][3]);
    lcd_data(font[c-0x20][4]);
    lcd_data(0x00);
}

//表示データ送信
void lcd_bitmap8(){

    int tmp_data;
    long i,j;

    for(i=0;i<8;i++){
        lcd_cmd(0xb0 | i);//select page 0-7
        lcd_cmd(0x10);//start form colum 4
        lcd_cmd(0x00);//(tow byte command)
        for(j=0;j<128;j++){
            tmp_data = lcd_image8[(i*128)+j];
            //tmp_data=lcd_image[0];
            //tmp_data=(*(lcd_image+(i*132)+j));
            lcd_data(tmp_data);
        }
    }
}

©ZEATEC co.,ltd.