nokia5110 LCD表示テスト
2016.10.31 by JH7UBC
ヤフオクで購入したnokia5110 84×48LCDモジュールです。価格は約500円でした。
現在出回っているnokia5110には、基板が赤のもの(今回の物)と青のものとがあります。
ハードウェア
Arduino UNOとの接続方法です。
RST,DC,DIN,CLKへの接続は、nokia5110側が3.3Vですので、レベル変換用に74HC4050を入れます。
Arduino | nokia5110 | ||
D11 | 4050 | 1 | RST |
GND | ---- | 2 | CE |
D10 | 4050 | 3 | DC |
D9 | 4050 | 4 | DIN |
D8 | 4050 | 5 | CLK |
3V3 | ---- | 6 | VCC |
GND | ---- | 7 | LIGHT |
GND | ---- | 8 | GND |
ブレッドボードに回路を組み、Arduino UNOとジャンパー線で接続します。
サンプルスケッチでArduinoロゴマークを表示した画面です。
ソフトウェア(スケッチ)
nokia5110には、PHILIPS社製のPCD8544という48×84pixels matrix LCD contrpllerが搭載されています。
このチップは、SPI(Serial Peripheral Interface)で動作します。
コントロールと表示をスケッチで書くこともできますが、Arduino用のライブラリが、いくつか公開されています。
今回は、Rinky-Drink Electronicsというサイトで公開されているLCD5110_Basicというライブラリを使います。
上記サイトからLCD5110_Basic.zipをダウンロードして解凍し、Arduinoのライブラリに登録します。
SmallFont | キャラクタを6×8pixel で表示します。 |
MidiumNumbers | 数字を12×16pixel で表示します。 |
BigNumbers | 数字を14×24pixel1 で表示します。 |
LCD5110_Basicで利用できる関数は、次の表とおりです。
Function | 説明 | 例 |
---|---|---|
LCD5110(SCK,MOSI(DIN),DC,RST,CS); | Arduinoとnokia5110の接続方法を指定します。 | LCD5110 myGLCD(8,9,10,11,12); |
InitLCD([contrast]); | 初期化します。contrastは省略するとデフォルトで70です。 | myGLCD.Init(); |
setContrast(contrast); | コントラストをセットします。 | myGLCD.setContrast(70); |
enableSleep(); | 表示をスリープモードにします。(画面を消します) | myGLCD.enableSleep(); |
disabSleep(); | スリープモードから復帰し、画面を再表示します。 | myGLCD.disabeSleep(); |
clrScr(); | 画面をクリアします。 | myGLCD.clrScr(); |
clrRow(row[start-x[,end-x]]); | 1行クリアします。(部分クリア可) | myGLCD.clrRow(5,42); |
invert(mode); | 画面を白黒反転します。true=invert fales=normal | myGLCD.invert(true); |
print(st,x,y); | 文字を表示します。xには、LEFT,CENTER,RIGHTを使うことができます。 | myGLCD.print("Hello,World",CENTER,0); |
printNumI(num,x,y,[,length[,filler]]); | 整数を表示します。 | myGLCD.printNumI(num,CENTER,0); |
printNumF(num,dec,x,y,[,devider[,length[,filler]]]); | 浮動小数点型の数値を表示します。decは小数点以下の桁数。 | myGLCD.printNumF(num,3,CENTER,0); |
setFont(fontname); | フォントをセットします。 | myGLCD.setFont(SmallFont); |
invertText(mode); | テキストを反転表示します。 | myGLCD.inverText(true); |
drawBitmap(x,y,data,sx,sy); | bitmapデータを表示します。 | myGLCD.drawBitmap(0,0,bitmap,32,32); |
SmallFont,MidiumNumbers,BigNumbersでキャラクタ、数字を表示したスケッチの例です。
こんな風に表示されます。
この後、Arduino nanoとnokia5110との接続テストを行いました。
レベル変換に使った74HC4050を入れなくとも動作することが分かりました。
50MHzのリグを想定した表示をしてみました。