nokia5110 LCD表示テスト
2016.10.31 by JH7UBC


ヤフオクで購入したnokia5110 84×48LCDモジュールです。価格は約500円でした。
現在出回っているnokia5110には、基板が赤のもの(今回の物)と青のものとがあります。


ハードウェア


8Pのヘッダピンがついてきましたので、はんだ付けしました。

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のライブラリに登録します。

LCD5110_Basicで使えるフォントは、次の3つです。
 SmallFont キャラクタを6×8pixel で表示します。 
 MidiumNumbers  数字を12×16pixel で表示します。
 BigNumbers  数字を14×24pixel1 で表示します。

これらのフォントは、DefaultFontsというCファイルに格納されていますので、スケッチのフォルダと同じフォルダに置きます。    

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);
 
まず、#include<LCD5110_Basic.h>でライブラリをインクルードします。
次に、LCD5110(DCK,MOSI,DC,RST,CS);で接続を指定し、
externでフォントを宣言します。

setup()で、myGLCD.Init();で初期化し、myGLCD.setFont();でフォントを指定します。
これで、準備完了です。

SmallFont,MidiumNumbers,BigNumbersでキャラクタ、数字を表示したスケッチの例です。

こんな風に表示されます。

この後、Arduino nanoとnokia5110との接続テストを行いました。
レベル変換に使った74HC4050を入れなくとも動作することが分かりました。
50MHzのリグを想定した表示をしてみました。

inserted by FC2 system