I2C 接続の LCD AQM1602XA-RN-GBW 用のライブラリ. Library for LCD 1602XA-RN-GBW connected using I2C interface.

Dependents:   UIT2_MovingAv_Intr UIT2_VariableFIR UIT2_VowelSynthesizer UIT2_ALE_LeakyLMS ... more

Committer:
MikamiUitOpen
Date:
Fri Sep 04 06:50:54 2015 +0000
Revision:
5:c44a3beb21f2
Parent:
4:c943f05b7843
Child:
6:01336babcccd
6

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:f177013dc4fc 1 //-------------------------------------------------------
MikamiUitOpen 0:f177013dc4fc 2 // Class for LCD, AQM1602XA-RN-GBW (Header)
MikamiUitOpen 0:f177013dc4fc 3 //
MikamiUitOpen 5:c44a3beb21f2 4 // Default pin assignments for Nucleo
MikamiUitOpen 0:f177013dc4fc 5 // D14 SDA ---- to pin4 of LCD module
MikamiUitOpen 0:f177013dc4fc 6 // D15 SCL ---- to pin3 of LCD module
MikamiUitOpen 0:f177013dc4fc 7 //
MikamiUitOpen 5:c44a3beb21f2 8 // 2015/09/04, Copyright (c) 2015 MIKAMI, Naoki
MikamiUitOpen 0:f177013dc4fc 9 //-------------------------------------------------------
MikamiUitOpen 0:f177013dc4fc 10
MikamiUitOpen 0:f177013dc4fc 11 #ifndef AQM1602I2C_HPP
MikamiUitOpen 0:f177013dc4fc 12 #define AQM1602I2C_HPP
MikamiUitOpen 0:f177013dc4fc 13
MikamiUitOpen 0:f177013dc4fc 14 #include "mbed.h"
MikamiUitOpen 1:18cd1c4212c3 15 #include <string>
MikamiUitOpen 0:f177013dc4fc 16
MikamiUitOpen 0:f177013dc4fc 17 namespace Mikami
MikamiUitOpen 0:f177013dc4fc 18 {
MikamiUitOpen 0:f177013dc4fc 19 class Aqm1602
MikamiUitOpen 0:f177013dc4fc 20 {
MikamiUitOpen 0:f177013dc4fc 21 public:
MikamiUitOpen 0:f177013dc4fc 22 // Constructor
MikamiUitOpen 5:c44a3beb21f2 23 #if defined(STM32F4) || defined(STM32L0)
MikamiUitOpen 0:f177013dc4fc 24 Aqm1602(PinName sda = D14, // SDA
MikamiUitOpen 0:f177013dc4fc 25 PinName scl = D15, // SCL
MikamiUitOpen 0:f177013dc4fc 26 uint32_t clock = 100000, // clock: 100 kHz
MikamiUitOpen 0:f177013dc4fc 27 bool cursor = false, // cursor: off
MikamiUitOpen 0:f177013dc4fc 28 bool blink = false); // blink: off
MikamiUitOpen 5:c44a3beb21f2 29 // Default constructor is defined for only Nucleo
MikamiUitOpen 5:c44a3beb21f2 30 #else
MikamiUitOpen 5:c44a3beb21f2 31 Aqm1602(PinName sda, // SDA
MikamiUitOpen 5:c44a3beb21f2 32 PinName scl, // SCL
MikamiUitOpen 5:c44a3beb21f2 33 uint32_t clock = 100000, // clock: 100 kHz
MikamiUitOpen 5:c44a3beb21f2 34 bool cursor = false, // cursor: off
MikamiUitOpen 5:c44a3beb21f2 35 bool blink = false); // blink: off
MikamiUitOpen 5:c44a3beb21f2 36 #endif
MikamiUitOpen 3:414f98234c94 37 // Return false if LCD is not connected
MikamiUitOpen 3:414f98234c94 38 bool IsConnected() { return connected_; }
MikamiUitOpen 3:414f98234c94 39
MikamiUitOpen 0:f177013dc4fc 40 // All clear
MikamiUitOpen 4:c943f05b7843 41 bool Clear();
MikamiUitOpen 1:18cd1c4212c3 42
MikamiUitOpen 0:f177013dc4fc 43 // Send command
MikamiUitOpen 3:414f98234c94 44 bool WriteCmd(uint8_t cmd) { return LcdTx(0x00, cmd); }
MikamiUitOpen 1:18cd1c4212c3 45
MikamiUitOpen 0:f177013dc4fc 46 // Write character (Not 0x80 but 0x40)
MikamiUitOpen 3:414f98234c94 47 bool WriteChar(char data) { return LcdTx(0x40, data); }
MikamiUitOpen 1:18cd1c4212c3 48
MikamiUitOpen 0:f177013dc4fc 49 // Specify display position, x: 0 - 7, y: 0, 1
MikamiUitOpen 0:f177013dc4fc 50 void SetXY(uint8_t x = 0, uint8_t y = 0)
MikamiUitOpen 0:f177013dc4fc 51 { WriteCmd(x + y*0x40 | 0x80);}
MikamiUitOpen 1:18cd1c4212c3 52
MikamiUitOpen 0:f177013dc4fc 53 // Write string
MikamiUitOpen 0:f177013dc4fc 54 void WriteString(const char str[]);
MikamiUitOpen 1:18cd1c4212c3 55 void WriteString(const string str) { WriteString(str.c_str()); }
MikamiUitOpen 1:18cd1c4212c3 56
MikamiUitOpen 0:f177013dc4fc 57 // Write string from specified position
MikamiUitOpen 2:f496f85ce6f2 58 void WriteStringXY(const char str[], uint8_t x, uint8_t y);
MikamiUitOpen 1:18cd1c4212c3 59 void WriteStringXY(const string str, uint8_t x, uint8_t y)
MikamiUitOpen 1:18cd1c4212c3 60 { WriteStringXY(str.c_str(), x, y); }
MikamiUitOpen 1:18cd1c4212c3 61
MikamiUitOpen 0:f177013dc4fc 62 // Clear of specified line
MikamiUitOpen 0:f177013dc4fc 63 void ClearLine(uint8_t line);
MikamiUitOpen 1:18cd1c4212c3 64
MikamiUitOpen 0:f177013dc4fc 65 void SetContrast(uint8_t c);
MikamiUitOpen 0:f177013dc4fc 66
MikamiUitOpen 0:f177013dc4fc 67 private:
MikamiUitOpen 3:414f98234c94 68 // Slave address of AQM1602A
MikamiUitOpen 0:f177013dc4fc 69 // left-justified 7-bit address
MikamiUitOpen 0:f177013dc4fc 70 static const uint8_t LCD_ADDRESS_ = 0x7C;
MikamiUitOpen 0:f177013dc4fc 71 static const uint8_t N_CHR = 16;
MikamiUitOpen 0:f177013dc4fc 72
MikamiUitOpen 0:f177013dc4fc 73 I2C i2c_; // Object of I2C
MikamiUitOpen 3:414f98234c94 74 bool connected_; // false: LCD is not connected
MikamiUitOpen 0:f177013dc4fc 75
MikamiUitOpen 3:414f98234c94 76 bool LcdTx(uint8_t cmdData, uint8_t data);
MikamiUitOpen 0:f177013dc4fc 77
MikamiUitOpen 0:f177013dc4fc 78 // Forbid to use copy constructor
MikamiUitOpen 0:f177013dc4fc 79 Aqm1602(const Aqm1602&);
MikamiUitOpen 0:f177013dc4fc 80 // Forbid to use substitution operator
MikamiUitOpen 0:f177013dc4fc 81 Aqm1602& operator=(const Aqm1602&);
MikamiUitOpen 0:f177013dc4fc 82 };
MikamiUitOpen 0:f177013dc4fc 83 }
MikamiUitOpen 3:414f98234c94 84 #endif // AQM1602I2C_HPP