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
Diff: ACM1602NI.hpp
- Revision:
- 1:7c6b2df4e60b
- Parent:
- 0:d8048b36d982
- Child:
- 2:0936ba74019a
diff -r d8048b36d982 -r 7c6b2df4e60b ACM1602NI.hpp --- 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; }