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
ACM1602NI.hpp@0:d8048b36d982, 2014-10-20 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Mon Oct 20 03:01:24 2014 +0000
- Revision:
- 0:d8048b36d982
- Child:
- 1:7c6b2df4e60b
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:d8048b36d982 | 1 | //------------------------------------------------------- |
MikamiUitOpen | 0:d8048b36d982 | 2 | // Class for LCD, ACM1602NI (Header) |
MikamiUitOpen | 0:d8048b36d982 | 3 | // |
MikamiUitOpen | 0:d8048b36d982 | 4 | // Default pin assignments |
MikamiUitOpen | 0:d8048b36d982 | 5 | // D14 SDA ---- to pin5 of LCD module |
MikamiUitOpen | 0:d8048b36d982 | 6 | // D15 SCL ---- to pin4 of LCD module |
MikamiUitOpen | 0:d8048b36d982 | 7 | // |
MikamiUitOpen | 0:d8048b36d982 | 8 | // Assignment of I2C ports |
MikamiUitOpen | 0:d8048b36d982 | 9 | // SDA SCL |
MikamiUitOpen | 0:d8048b36d982 | 10 | // I2C1 PB_7 or PB_9(D14) PB_6(D10) or PB_8(D15) |
MikamiUitOpen | 0:d8048b36d982 | 11 | // I2C2 PB_3(D3) PB_10(D6) |
MikamiUitOpen | 0:d8048b36d982 | 12 | // I2C3 PB_4(D5) or PC_9 PA_8(D7) |
MikamiUitOpen | 0:d8048b36d982 | 13 | // |
MikamiUitOpen | 0:d8048b36d982 | 14 | // 2014/09/13, Copyright (c) 2014 MIKAMI, Naoki |
MikamiUitOpen | 0:d8048b36d982 | 15 | //------------------------------------------------------- |
MikamiUitOpen | 0:d8048b36d982 | 16 | // I2C_TypeDef: See stm32f401xe.h on following URL |
MikamiUitOpen | 0:d8048b36d982 | 17 | // http://mbed.org/users/mbed_official/code/mbed/file/ |
MikamiUitOpen | 0:d8048b36d982 | 18 | // 552587b429a1/TARGET_NUCLEO_F401RE |
MikamiUitOpen | 0:d8048b36d982 | 19 | //------------------------------------------------------- |
MikamiUitOpen | 0:d8048b36d982 | 20 | |
MikamiUitOpen | 0:d8048b36d982 | 21 | #ifndef ACM1602NI_HPP |
MikamiUitOpen | 0:d8048b36d982 | 22 | #define ACM1602NI_HPP |
MikamiUitOpen | 0:d8048b36d982 | 23 | |
MikamiUitOpen | 0:d8048b36d982 | 24 | #include "mbed.h" |
MikamiUitOpen | 0:d8048b36d982 | 25 | |
MikamiUitOpen | 0:d8048b36d982 | 26 | namespace Mikami |
MikamiUitOpen | 0:d8048b36d982 | 27 | { |
MikamiUitOpen | 0:d8048b36d982 | 28 | class Acm1602Ni |
MikamiUitOpen | 0:d8048b36d982 | 29 | { |
MikamiUitOpen | 0:d8048b36d982 | 30 | public: |
MikamiUitOpen | 0:d8048b36d982 | 31 | // Constructor |
MikamiUitOpen | 0:d8048b36d982 | 32 | Acm1602Ni(PinName sda = D14, // SDA |
MikamiUitOpen | 0:d8048b36d982 | 33 | PinName scl = D15, // SCL |
MikamiUitOpen | 0:d8048b36d982 | 34 | uint32_t clock = 100000, // clock: 100 kHz |
MikamiUitOpen | 0:d8048b36d982 | 35 | bool cursor = false, // cursor: off |
MikamiUitOpen | 0:d8048b36d982 | 36 | bool blink = false); // blink: off |
MikamiUitOpen | 0:d8048b36d982 | 37 | // Return false if LCD is not connected |
MikamiUitOpen | 0:d8048b36d982 | 38 | bool GetOk() { return connected_; } |
MikamiUitOpen | 0:d8048b36d982 | 39 | // All clear |
MikamiUitOpen | 0:d8048b36d982 | 40 | bool Clear(); |
MikamiUitOpen | 0:d8048b36d982 | 41 | // Send command |
MikamiUitOpen | 0:d8048b36d982 | 42 | bool WriteCmd(uint8_t cmd) { return LcdTx(0x00, cmd); } |
MikamiUitOpen | 0:d8048b36d982 | 43 | // Write character |
MikamiUitOpen | 0:d8048b36d982 | 44 | void WriteChar(char data) { LcdTx(0x80, data); } |
MikamiUitOpen | 0:d8048b36d982 | 45 | // Specify display position, x: 0 - 15, y: 0, 1 |
MikamiUitOpen | 0:d8048b36d982 | 46 | void SetXY(uint8_t x = 0, uint8_t y = 0) |
MikamiUitOpen | 0:d8048b36d982 | 47 | { WriteCmd(x + y*0x40 | 0x80);} |
MikamiUitOpen | 0:d8048b36d982 | 48 | // Write string from specified position |
MikamiUitOpen | 0:d8048b36d982 | 49 | void WriteString(const char str[], |
MikamiUitOpen | 0:d8048b36d982 | 50 | uint8_t x = 0, uint8_t y = 0); |
MikamiUitOpen | 0:d8048b36d982 | 51 | // Clear of specified line |
MikamiUitOpen | 0:d8048b36d982 | 52 | void ClearLine(uint8_t line) |
MikamiUitOpen | 0:d8048b36d982 | 53 | { WriteString(" ", 0, line); } |
MikamiUitOpen | 0:d8048b36d982 | 54 | |
MikamiUitOpen | 0:d8048b36d982 | 55 | private: |
MikamiUitOpen | 0:d8048b36d982 | 56 | // Object of I2C |
MikamiUitOpen | 0:d8048b36d982 | 57 | I2C i2c_; |
MikamiUitOpen | 0:d8048b36d982 | 58 | |
MikamiUitOpen | 0:d8048b36d982 | 59 | // Slave address of ACM1602NI (0x50) |
MikamiUitOpen | 0:d8048b36d982 | 60 | // left-justified 7-bit address |
MikamiUitOpen | 0:d8048b36d982 | 61 | static const uint8_t LCD_ADDRESS_ = 0x50 << 1; |
MikamiUitOpen | 0:d8048b36d982 | 62 | |
MikamiUitOpen | 0:d8048b36d982 | 63 | // Set false if LCD is not connected |
MikamiUitOpen | 0:d8048b36d982 | 64 | bool connected_; |
MikamiUitOpen | 0:d8048b36d982 | 65 | |
MikamiUitOpen | 0:d8048b36d982 | 66 | // Pointer of I2C |
MikamiUitOpen | 0:d8048b36d982 | 67 | I2C_TypeDef* myI2c_; |
MikamiUitOpen | 0:d8048b36d982 | 68 | |
MikamiUitOpen | 0:d8048b36d982 | 69 | bool LcdTx(uint8_t cmdData, uint8_t data); |
MikamiUitOpen | 0:d8048b36d982 | 70 | bool Start(); |
MikamiUitOpen | 0:d8048b36d982 | 71 | |
MikamiUitOpen | 0:d8048b36d982 | 72 | // Forbid to use copy constructor |
MikamiUitOpen | 0:d8048b36d982 | 73 | Acm1602Ni(const Acm1602Ni&); |
MikamiUitOpen | 0:d8048b36d982 | 74 | // Forbid to use substitution operator |
MikamiUitOpen | 0:d8048b36d982 | 75 | Acm1602Ni& operator=(const Acm1602Ni&); |
MikamiUitOpen | 0:d8048b36d982 | 76 | |
MikamiUitOpen | 0:d8048b36d982 | 77 | // For check contents of register |
MikamiUitOpen | 0:d8048b36d982 | 78 | bool Check(uint32_t rg, uint16_t value) |
MikamiUitOpen | 0:d8048b36d982 | 79 | { return value == (rg & value); } |
MikamiUitOpen | 0:d8048b36d982 | 80 | |
MikamiUitOpen | 0:d8048b36d982 | 81 | void TxDR(uint8_t data) { myI2c_->DR = data; } |
MikamiUitOpen | 0:d8048b36d982 | 82 | void SetCR1(uint16_t data) { myI2c_->CR1 |= data; } |
MikamiUitOpen | 0:d8048b36d982 | 83 | }; |
MikamiUitOpen | 0:d8048b36d982 | 84 | } |
MikamiUitOpen | 0:d8048b36d982 | 85 | #endif // ACM1602NI_HPP |