TOPWAYのLM12832CというグラフィックLCDが入手できたので試してみたいと思います。大きさの割には解像度があり、バックライトもついていて視認性も悪くないです。
※注意:マイコンボードは3.3Vを使用して下さい。
使用機器は下記のとおり。他、パソコンや電源、PICKIT2も当然ながら必要です。使い方はいたってシンプル。lm12832ccw.cを頭でインクルードし、起動時にlcd_ini()で初期化し、lcd_bitmap8();で書き込みます。
プロジェクトファイルも含めたサンプル zt-16f194701_lm12832ccw.zip
接続ハーネスの図面 Harness_LM12832CCW.zip Harness_LM12832CCW.pdf
開発環境:MPLAB_IDE_8_92 + CCS-C PCMコンパイラVer.4.132
/*******************************************************************************
グラフィックLCDモジュール(TOPWAY LM12832C)用ライブラリ 2016/4/1作成
□提供元
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,<span style="color: #0000ff;">"ZEATEC co.,ltd.ジーテック ");
lcd_start(1);
printf(lcd_char,<span style="color: #0000ff;">"AN0=%04lumV , RA1=%u ",analog_value,port1_ra1);
lcd_start(2);
printf(lcd_char,<span style="color: #0000ff;">"TOPWEY LM12832CCW ");
lcd_start(3);
printf(lcd_char,<span style="color: #0000ff;">"Dot128x32 , Text21x4 ");
□接続方法
RE0 = DB0
RE1 = DB1
RE2 = DB2
RE3 = DB3
RE4 = DB4
RE5 = DB5
RE6 = DB6
RE7 = DB7
RF0 = W/R
RF1 = A0 1:DisplayData 0:ControlData
RF2 = /RES 1:Run 0:ini
上記以外の配線はLCDモジュール上またはハーネスによってVDDおよびVSSと接続する。
/CS = Vss
/RD = Vdd
BLA = Vdd
*******************************************************************************/
void lcd_ini();
void lcd_cmd();
void lcd_data();
void lcd_write();
int contrast_lavel = 0x28;
//LCDにコマンド送信
void lcd_cmd(int cmd){
output_bit(PIN_F1,0);// A0 0:Control data.
output_e(cmd);// DB0-7
output_bit(PIN_F0,!1);// /WR 0:Write enable input active.
//delay_cycles(4);//tah8 14nsec以上
output_bit(PIN_F0,!0);// /WR 0:Write enable input active.
}
//LCDにデータ送信
void lcd_data(int cmd){
output_bit(PIN_F1,1);// A0 1:Display data.
output_e(cmd);// DB0-7
output_bit(PIN_F0,!1);// /WR 0:Write enable input active.
//delay_cycles(4);//tah8 14nsec以上
output_bit(PIN_F0,!0);// /WR 0:Write enable input active.
}
//LCDを初期化
void lcd_ini(){
//初期値
output_bit(PIN_F2,!1);// /RES 0:stop.
output_bit(PIN_F1,0);// A0 1:Display data. 0:Control data.
output_bit(PIN_F0,!0);// /WR 0:Write enable input active.
//RESET
output_bit(PIN_F2,1);// /RES SET
output_bit(PIN_F2,0);// /RES RESET
delay_ms(10);
output_bit(PIN_F2,1);// /RES SET
delay_ms(100);
contrast_lavel = 0x28;//Default Contrast Level
lcd_cmd(0xaf);//Display ON
lcd_cmd(0x40);//Set display Start line=0
lcd_cmd(0xa0);//ADC = 0 :SEG1 -> SEG128
lcd_cmd(0xa6);//Normal display
lcd_cmd(0xa4);//Disible display all point
lcd_cmd(0xa3);//Bais = 1/5 (duty=1/33)
lcd_cmd(0xc8);//Common output mode select = reverse:C65->C1
lcd_cmd(0x2f);//Power control = all on
lcd_cmd(0x23);//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<4;i++){
lcd_cmd(0xb0 | i);//select page 0-7
lcd_cmd(0x10);//start form colum 0
lcd_cmd(0x00);//(tow byte command)
for(j=0;j<128;j++){
tmp_data = lcd_image8[(i*128)+j];
lcd_data(tmp_data);
}
}
}
©ZEATEC co.,ltd.