
CU-Uシリーズ(キャラクタLCD互換 I/F対応モジュール)に表示させる
CU-Uシリーズ(キャラクタLCD互換 I/F対応モジュール)に表示させる
今回は、文字表示型表示管モジュールを4ビットパラレル接続でつないでみました。基板はグラフィックLCD互換I/Fで作ったものを流用しています。
電源はArduinoの5Vより供給できます。
使用部品
- 蛍光表示管モジュール
CU24025-UW1J
キャラクタタイプLCDモジュールのコンパチブルモデル、4ビットパラレル接続。 - Arduino本体
Arduino Uno R3
Arduino本体で、もっとも販売数が多いそうです。 - その他
ピンヘッダ・ソケット、半田・配線材料 等
適切なものをご用意ください。
回路図

サンプルスケッチ(サンプルプログラム)
「スケッチ」とは、本開発環境でのプログラムを指します。下記はVFDモジュールを表示させるためのサンプルスケッチです。 スケッチのダウンロードはこちら
/*
** VFDシールド プログラム
**
** ノリタケ伊勢電子製 CU-Uを4ビットパラレルで
** つないでみました。
**
**
*/
// ピン配置
int vfd_RS = 7; // VFDコネクタ 4番ピン
int vfd_E = 6; // VFDコネクタ 6番ピン
int vfd_D7 = 5; // VFDコネクタ 14番ピン
int vfd_D6 = 4; // VFDコネクタ 13番ピン
int vfd_D5 = 3; // VFDコネクタ 12番ピン
int vfd_D4 = 2; // VFDコネクタ 11番ピン
// 作成した関数のプロトタイプ
void vfd_command(unsigned char onebyte);
void vfd_write(unsigned char message[],int L);
void vfd_put(unsigned char onebyte);
// the setup routine runs once when you press reset:
// リセット後に1回だけ実行されるプログラム
void setup() {
// initialize the digital pins
pinMode(vfd_RS, OUTPUT);
pinMode(vfd_E, OUTPUT);
pinMode(vfd_D7, OUTPUT);
pinMode(vfd_D6, OUTPUT);
pinMode(vfd_D5, OUTPUT);
pinMode(vfd_D4, OUTPUT);
digitalWrite(vfd_E, LOW);
vfd_command(0x33); // ensure 8bit mode
vfd_command(0x33); // ensure 8bit mode
vfd_command4(0x20); // change to 4bit mode
vfd_put(0x00); //100% brightness
vfd_command(0x08);
vfd_command(0x01);
vfd_command(0x0f);
vfd_command(0x06);
}
// the loop routine runs over and over again forever:
// 繰り返し実行されるプログラム
void loop() {
int i;
i=0;
while(1){
vfd_command(0x01);
delay(10);
vfd_command(0x80);
delay(1);
vfd_put(0x48);
vfd_put(0x65);
vfd_put(0x6c);
vfd_put(0x6c);
vfd_put(0x6f);
if(i==1) {vfd_put(0x31); i=0;} else {vfd_put(0x30); i=1;}
delay(2000);
}
}
void vfd_put(unsigned char onebyte)
{
digitalWrite(vfd_RS, HIGH);
digitalWrite(vfd_E, LOW);
if((onebyte & 0x80 ) != 0) { digitalWrite(vfd_D7, HIGH);} else { digitalWrite(vfd_D7, LOW); }
if((onebyte & 0x40 ) != 0) { digitalWrite(vfd_D6, HIGH);} else { digitalWrite(vfd_D6, LOW); }
if((onebyte & 0x20 ) != 0) { digitalWrite(vfd_D5, HIGH);} else { digitalWrite(vfd_D5, LOW); }
if((onebyte & 0x10 ) != 0) { digitalWrite(vfd_D4, HIGH);} else { digitalWrite(vfd_D4, LOW); }
delay(1);
digitalWrite(vfd_E, HIGH);
delay(1);
digitalWrite(vfd_E, LOW);
if((onebyte & 0x8 ) != 0) { digitalWrite(vfd_D7, HIGH);} else { digitalWrite(vfd_D7, LOW); }
if((onebyte & 0x4 ) != 0) { digitalWrite(vfd_D6, HIGH);} else { digitalWrite(vfd_D6, LOW); }
if((onebyte & 0x2 ) != 0) { digitalWrite(vfd_D5, HIGH);} else { digitalWrite(vfd_D5, LOW); }
if((onebyte & 0x1 ) != 0) { digitalWrite(vfd_D4, HIGH);} else { digitalWrite(vfd_D4, LOW); }
delay(1);
digitalWrite(vfd_E, HIGH);
delay(1);
digitalWrite(vfd_E, LOW);
}
void vfd_command(unsigned char onebyte)
{
digitalWrite(vfd_RS, LOW);
digitalWrite(vfd_E, LOW);
if((onebyte & 0x80 ) != 0) { digitalWrite(vfd_D7, HIGH);} else { digitalWrite(vfd_D7, LOW); }
if((onebyte & 0x40 ) != 0) { digitalWrite(vfd_D6, HIGH);} else { digitalWrite(vfd_D6, LOW); }
if((onebyte & 0x20 ) != 0) { digitalWrite(vfd_D5, HIGH);} else { digitalWrite(vfd_D5, LOW); }
if((onebyte & 0x10 ) != 0) { digitalWrite(vfd_D4, HIGH);} else { digitalWrite(vfd_D4, LOW); }
delay(1);
digitalWrite(vfd_E, HIGH);
delay(1);
digitalWrite(vfd_E, LOW);
if((onebyte & 0x8 ) != 0) { digitalWrite(vfd_D7, HIGH);} else { digitalWrite(vfd_D7, LOW); }
if((onebyte & 0x4 ) != 0) { digitalWrite(vfd_D6, HIGH);} else { digitalWrite(vfd_D6, LOW); }
if((onebyte & 0x2 ) != 0) { digitalWrite(vfd_D5, HIGH);} else { digitalWrite(vfd_D5, LOW); }
if((onebyte & 0x1 ) != 0) { digitalWrite(vfd_D4, HIGH);} else { digitalWrite(vfd_D4, LOW); }
delay(1);
digitalWrite(vfd_E, HIGH);
delay(1);
digitalWrite(vfd_E, LOW);
}
void vfd_command4(unsigned char onebyte)
{
digitalWrite(vfd_RS, LOW);
digitalWrite(vfd_E, LOW);
if((onebyte & 0x80 ) != 0) { digitalWrite(vfd_D7, HIGH);} else { digitalWrite(vfd_D7, LOW); }
if((onebyte & 0x40 ) != 0) { digitalWrite(vfd_D6, HIGH);} else { digitalWrite(vfd_D6, LOW); }
if((onebyte & 0x20 ) != 0) { digitalWrite(vfd_D5, HIGH);} else { digitalWrite(vfd_D5, LOW); }
if((onebyte & 0x10 ) != 0) { digitalWrite(vfd_D4, HIGH);} else { digitalWrite(vfd_D4, LOW); }
delay(1);
digitalWrite(vfd_E, HIGH);
delay(1);
digitalWrite(vfd_E, LOW);
}