株式会社ジーテック

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

キャラクタLCDモジュール(AQM1602XA・AQM0802XA)によるテキスト表示

薄型のLCDモジュールが出回り始めたので早速試してみました。

使用機器

使用機器は下記のとおり。他、パソコンや電源、PICKIT2も当然ながら必要です。

I2C接続小型キャラクタLCDモジュール
Xiamen Zettler Electronics Co., Ltd.
AQM1602A-RN-GBW,AQM0802A-RN-GBW
※接続する際にはピッチ変換基板を利用しています。

マイコンボード(PIC16F1947搭載) ZEATEC co.,ltd.
ZT-PIC16F194701(3.3V仕様)

接続

接続に関してはいたって簡単。CPUボードにあらかじめ必要回路が実装されているため4本の足を伸ばして接続するだけ。今回はデュポン(QIコネクタ)コネクタを使用して配線しました。AQM0802A-RN-GBWの基板上では1,2を短絡しています。
LCDのほうは記入する都合で不規則に並んでいるので要注意です。

AQM1602A・AQM0802A用ライブラリ aqmxx02a.zip

プロジェクトファイルも含めたサンプル aqmxx02_sample.zip

開発環境:MPLAB_IDE_8_92 + CCS-C PCMコンパイラVer.4.132

/*******************************************************************************
LCDモジュール(aqmxx02a-RN-GBW)用ライブラリ 2015/2/12作成

□提供元
ZEATEC co.,ltd. 

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

□使用方法
aqmxx02a_init(5)をスタートアップに入れて下さい。カッコ内は使用電圧を指定します。3.3Vの時は
3と指定してください。setcursor_aqmxx02a(0,0)で表示位置を指定し、aqmxx02a_puts("アイウエオabc")
で任意の文字列を指定する。
I2Cはハードウェア制御を推奨とし、宣言例は下記のとおり。

#use i2c(MASTER, SDA=PIN_C4, SCL=PIN_C3,SLOW,FORCE_HW)//FAST=400kbps SLOW=100kbps
ピンアサインはPIC16F1947で使用した場合とします。

*******************************************************************************/
void aqmxx02a_init(int volt);
void aqmxx02a_setcursor(int col, int row);
void aqmxx02a_cmd(unsigned char c);
void aqmxx02a_puts(char s);
void aqmxx02a_clear();

void aqmxx02a_init(int volt){
    aqmxx02a_cmd(0x38) ;
    // function set: データ線は8本・表示は2行・フォントは5x8ドット
    aqmxx02a_cmd(0x39) ;
    // function set: 拡張コマンドの設定を有効にする
    aqmxx02a_cmd(0x14) ;
    // Internal OSC frequency: バイアスの選択と内部OSC周波数の調整
    if(volt == 3){
        //コントラスト調整(3.3V)
        aqmxx02a_cmd(0x70) ;
        // Contrast set: コントラスト調整データ(下位4ビット)
        aqmxx02a_cmd(0x56) ;
        // Contrast set: 昇圧回路有効、コントラスト調整データ(上位2ビット)
    }else{
        //コントラスト調整(5V)
        aqmxx02a_cmd(0x7A) ;
        // Contrast set: コントラスト調整データ(下位4ビット)
        aqmxx02a_cmd(0x54) ;
        // Contrast set: 昇圧回路有効、コントラスト調整データ(上位2ビット) 
    }
    aqmxx02a_cmd(0x6C) ;
    // Follower control: フォロア回路をON、増幅率の調整を行う
    delay_ms(200) ;   // 電力が安定するまで待つ
    aqmxx02a_cmd(0x38) ;
    // function set: 拡張コマンドを設定を無効にする
    aqmxx02a_cmd(0x0C) ;     
    // display control: 画面表示はON・カーソル表示はOFF・カーソル点滅はOFF
    aqmxx02a_cmd(0x01) ;     
    // Clear Display: 画面全体に20Hのスペースで表示、カーソルはcol=0,row=0に移動
    delay_us(1100) ;  
    // LCDが処理(1.08ms)するのを待ちます
}

void aqmxx02a_setcursor(int col, int row){
    int row_offsets[] = { 0x00, 0x40 };

    aqmxx02a_cmd(0x80 | (col + row_offsets[row])) ; 
    // Set DDRAM Adddress : 00H-07H,40H-47H
}

void aqmxx02a_cmd(char c){
    //スタートコンディションを発行する
    i2c_start();
    //LCDのアドレス
    i2c_write(0x7c);
    // control byte の送信(コマンドを指定)
    i2c_write(0b10000000);
    // data byte の送信
    i2c_write(c);
    // ストップコンディションを発行する
    i2c_stop();
    //delay_us(27);
}

void aqmxx02a_puts(char s){
    //スタートコンディションを発行する
    i2c_start();
    //LCDのアドレス
    i2c_write(0x7c);
    //control byte の送信(データを指定)
    i2c_write(0b01000000);
    //data byte の送信
    i2c_write(s);
    //ストップコンディションを発行する
    i2c_stop();
}

©ZEATEC co.,ltd.