Class library for LCD character display ACM1602NI using I2C on Nucleo. Nucleo 用 I2C 接続の LCD キャラクタ・ディスプレー ACM1602Ni 用のクラス・ライブラリ.

Dependents:   UIT2_VariableFIR_LPFHPF UIT2_VariableFIR_LPF UIT2_InputSW_LCD ADDA_Prototype_PollingSW ... more

Revision:
1:7c6b2df4e60b
Parent:
0:d8048b36d982
Child:
2:0936ba74019a
--- a/ACM1602NI.hpp	Mon Oct 20 03:01:24 2014 +0000
+++ b/ACM1602NI.hpp	Sat Nov 08 09:28:45 2014 +0000
@@ -1,5 +1,5 @@
 //-------------------------------------------------------
-//  Class for LCD, ACM1602NI (Header)
+//  Class for LCD, ACM1602Ni (Header)
 //
 //  Default pin assignments
 //      D14  SDA ---- to pin5 of LCD module
@@ -11,7 +11,7 @@
 //      I2C2   PB_3(D3)           PB_10(D6)
 //      I2C3   PB_4(D5) or PC_9   PA_8(D7)
 //
-//  2014/09/13, Copyright (c) 2014 MIKAMI, Naoki
+//  2014/10/14, Copyright (c) 2014 MIKAMI, Naoki
 //-------------------------------------------------------
 //  I2C_TypeDef: See stm32f401xe.h on following URL
 //  http://mbed.org/users/mbed_official/code/mbed/file/
@@ -45,26 +45,23 @@
         // Specify display position, x: 0 - 15, y: 0, 1
         void SetXY(uint8_t x = 0, uint8_t y = 0)
         { WriteCmd(x + y*0x40 | 0x80);}
+        // Write string
+        void WriteString(const char str[]);
         // Write string from specified position
-        void WriteString(const char str[],
-                         uint8_t x = 0, uint8_t y = 0);
+        void WriteStringXY(const char str[], uint8_t x, uint8_t);
         // Clear of specified line
         void ClearLine(uint8_t line)
-        { WriteString("                 ", 0, line); }
+        { WriteStringXY("                 ", 0, line); }
 
     private:
-        // Object of I2C
-        I2C i2c_;
-
         // Slave address of ACM1602NI (0x50)
         //      left-justified 7-bit address
         static const uint8_t LCD_ADDRESS_ = 0x50 << 1;
 
-        // Set false if LCD is not connected
-        bool connected_;
-        
-        // Pointer of I2C
-        I2C_TypeDef* myI2c_;
+        I2C i2c_;               // Object of I2C
+        I2C_TypeDef* myI2c_;    // Pointer of I2C
+
+        bool connected_;        // false: LCD is not connected
 
         bool LcdTx(uint8_t cmdData, uint8_t data);
         bool Start();
@@ -74,9 +71,14 @@
         // Forbid to use substitution operator
         Acm1602Ni& operator=(const Acm1602Ni&);
 
-        // For check contents of register
-        bool Check(uint32_t rg, uint16_t value)
-        { return value == (rg & value); }
+        // For check contents of SR2
+        bool CheckSR2(uint16_t value)
+        { return value == (myI2c_->SR2 & value); }
+
+        // For check contents of SR1 and SR2
+        bool CheckSR12(uint16_t v1, uint16_t v2)
+        { return (v1 == (myI2c_->SR1 & v1)) &&
+                 (v2 == (myI2c_->SR2 & v2)); }
 
         void TxDR(uint8_t data) { myI2c_->DR = data; }
         void SetCR1(uint16_t data) { myI2c_->CR1 |= data; }