薄型の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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
/******************************************************************************* 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.