信太朗 羽入田 / Mbed 2 deprecated TextLCD_FULL

Dependencies:   mbed

Revision:
3:d4b979f6f27e
Parent:
2:d2d66ce72529
Child:
4:0f29c512e03d
--- a/main.cpp	Sat Jun 08 06:31:15 2019 +0000
+++ b/main.cpp	Sat Jun 08 15:25:18 2019 +0000
@@ -6,76 +6,88 @@
 DigitalOut myled(P0_22);
 Serial pc(USBTX, USBRX);
 
+// TextLCDの使用宣言
 TextLCD lcd(p15,p16,p17,p18,p19,p20);  //接続ポートの設定(rs,e,d4,d5,d6,d7)
 
+
 int main()
 {
     
-    lcd.cls();
-    lcd.locate(0,0);
-    //          01234567890123456
+    lcd.init(); //各種設定を初期値に。画面も消去。カーソル位置(0,0)
+    
+    //  単純な文字列表示
     lcd.printf("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
+    
+    wait(1);
 
-    lcd.cursor_on();
-    lcd.blink_on();
-
+    // カーソル位置を(0,1)に指定
     lcd.locate(0,1);
     lcd.printf("abcdefghijklmnopqrstuvwxyz");
     
+    //表示内容はそのままで、カーソル位置を0,0に。画面のシフトも初期位置に
     lcd.home();
-    
     wait(1);
+
     lcd.noDisplay(); //ディスプレイ表示OFF
     
     lcd.printf("0123");//表示OFFのままprint
+    wait(1);
 
-    wait(1);
-    lcd.display();  //ディスプレイ表示ON(OFFのままprintしても反映されている)
+    lcd.display();  //ディスプレイ表示ON(画面OFFのままprintしても反映されている)
     
     wait(1);
+
     lcd.cursor();   //カーソル表示ON
     
-    lcd.blink();    //ブリンクON
+    lcd.blink();    //カーソルブリンクON
     
     wait(5);
     
-    lcd.noBlink();    //ブリンクOFF
+    lcd.noBlink();    //カーソルブリンクOFF
     
     lcd.noCursor();   //カーソル表示OFF
+
+
+    //表示内容はそのままで、画面を左にシフト 4回
+    for (int i = 0; i < 4; i++) {
+        lcd.shiftDisplayLeft();
+        wait(1);
+        }
+    //表示内容はそのままで、画面を右にシフト 4回
+    for (int i = 0; i< 4; i++) {
+        lcd.shiftDisplayRight();
+        wait(1);
+        }
+
+    lcd.cls(); //画面消去、カーソルは(0,0)へ
     
-    lcd.shiftDisplayLeft();
-    wait(1);
-    lcd.shiftDisplayLeft();
-    wait(1);
-    lcd.shiftDisplayLeft();
-    wait(1);
-    lcd.shiftDisplayRight();
-    wait(1);
-    lcd.shiftDisplayRight();
-    wait(1);
-    lcd.shiftDisplayRight();
-    wait(1);
-    lcd.cls();
+    //カーソル位置を10,0へ
     lcd.locate(10,0);
+    
+    //表示位置をカーソルから右方向へ設定(デフォルト)
     lcd.leftToRight();
     lcd.printf("5678");
     wait(1);
-    lcd.locate(3,0);
+
+    //カーソル位置を4,0へ
+    lcd.locate(4,0);
+    
+    //表示位置をカーソル位置から左方向へ設定
     lcd.rightToLeft();
-    lcd.printf("1234567890");
-    lcd.shiftDisplayRight();
-    lcd.shiftDisplayRight();
-    lcd.shiftDisplayRight();
+    lcd.printf("1234");      //画面上では "4321"とカーソル位置から左方向に表示される
+    wait(1);
     
+    //表示位置をカーソルから右方向へ設定(デフォルト
     lcd.leftToRight();
 
     lcd.cls();
     lcd.home();
     wait(1);
     
+    //オートスクロール カーソル位置に文字を表示する度に、設定した方向に画面をシフト
     lcd.AutoScroll();
     lcd.locate(8,0);
-    lcd.printf("1");
+    lcd.printf("1");  //わかりやすく1文字ずつ描画
     wait(1);
     lcd.printf("2");
     wait(1);
@@ -83,14 +95,48 @@
     wait(1);
     lcd.printf("4");
     wait(1);
+
+   
+    lcd.init();
+
+    // 表示する最大桁数を設定  1 〜 40(画面は16文字まで。DDRAMは最大40文字×2行)
+    lcd.set_max_cols(12);  //12文字で折返しになる設定
+    lcd.locate(4,0);
+    lcd.rightToLeft();
+    lcd.printf("1234567890123456789012");
+    wait(5);
+    
+    lcd.init();
+
+    // CGRAM(外字)の設定 bitを設定した配列を用意
+    char bell[8]  = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4};
+    char note[8]  = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0};
+    char clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0};
+    char heart[8] = {0x0,0xa,0x1f,0x1f,0xe,0x4,0x0};
+    char duck[8]  = {0x0,0xc,0x1d,0xf,0xf,0x6,0x0};
+    char check[8] = {0x0,0x1,0x3,0x16,0x1c,0x8,0x0};
+    char cross[8] = {0x0,0x1b,0xe,0x4,0xe,0x1b,0x0};
+    char retarrow[8] = {0x1,0x1,0x5,0x9,0x1f,0x8,0x4};
+    
+    //CGRAMに格納  0番〜7番までの8文字
+    lcd.createChar(0, bell);
+    lcd.createChar(1, note);
+    lcd.createChar(2, clock);
+    lcd.createChar(3, heart);
+    lcd.createChar(4, duck);
+    lcd.createChar(5, check);
+    lcd.createChar(6, cross);
+    lcd.createChar(7, retarrow);
+
+    lcd.home();
+    
+    //設定した外字を表示
+    for (int j=0; j<8; j++) {
+      lcd.putc(j);
+    }
     
     
-    lcd.noAutoScroll();
-    
-    
-    //lcd.printf("Demo is COMPLETE!");
-    
-    
+
    while(1) {
         myled = 1;
         wait(LED_TIME);