SO1602A_i2c_oled

Fork of I2CLCD by Suga koubou

Committer:
okp_mh
Date:
Wed Jan 07 00:55:10 2015 +0000
Revision:
3:61518c45ea07
Parent:
2:bc4583ce560e
SO1602A_i2c_oled

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:b069b7027af2 1 /*
okini3939 1:bf21aa3f7cdc 2 * mbed library for I2C LCD
okini3939 2:bc4583ce560e 3 * Copyright (c) 2011 Hiroshi Suga
okini3939 0:b069b7027af2 4 * Released under the MIT License: http://mbed.org/license/mit
okini3939 1:bf21aa3f7cdc 5 *
okini3939 2:bc4583ce560e 6 * This product includes:
okini3939 1:bf21aa3f7cdc 7 * mbed TextLCD Library, for a 4-bit LCD based on HD44780
okini3939 1:bf21aa3f7cdc 8 * Copyright (c) 2007-2010, sford
okini3939 0:b069b7027af2 9 */
okini3939 2:bc4583ce560e 10
okini3939 2:bc4583ce560e 11 /** @file I2CLCD.h
okini3939 2:bc4583ce560e 12 * @brief I2C LCD library (mbed Phone Platform)
okini3939 2:bc4583ce560e 13 */
okini3939 0:b069b7027af2 14
okini3939 0:b069b7027af2 15 #ifndef I2CLCD_H
okini3939 0:b069b7027af2 16 #define I2CLCD_H
okini3939 0:b069b7027af2 17
okini3939 0:b069b7027af2 18 #include "mbed.h"
okini3939 0:b069b7027af2 19
okini3939 2:bc4583ce560e 20 /**
okini3939 2:bc4583ce560e 21 * @brief default I2C address
okini3939 2:bc4583ce560e 22 */
okp_mh 3:61518c45ea07 23 //#define I2CLCD_ADDR 0x7c
okp_mh 3:61518c45ea07 24
okp_mh 3:61518c45ea07 25 #define I2CLCD_ADDR 0x78 //SO1602AWWB
okini3939 2:bc4583ce560e 26
okini3939 2:bc4583ce560e 27 /**
okini3939 2:bc4583ce560e 28 * @brief LCD type
okini3939 2:bc4583ce560e 29 */
okini3939 0:b069b7027af2 30 enum I2CLCDType {
okini3939 0:b069b7027af2 31 LCD8x2,
okini3939 0:b069b7027af2 32 LCD16x1,
okini3939 0:b069b7027af2 33 LCD16x2,
okini3939 0:b069b7027af2 34 LCD16x2B,
okini3939 0:b069b7027af2 35 LCD16x4,
okini3939 0:b069b7027af2 36 LCD20x2,
okini3939 0:b069b7027af2 37 LCD20x4
okini3939 0:b069b7027af2 38 };
okini3939 0:b069b7027af2 39
okini3939 2:bc4583ce560e 40 /**
okini3939 2:bc4583ce560e 41 * @brief LCD config
okini3939 2:bc4583ce560e 42 */
okini3939 0:b069b7027af2 43 enum I2CLCDConfig {
okini3939 0:b069b7027af2 44 LCDCFG_ENABLE = 0x20,
okini3939 0:b069b7027af2 45 LCDCFG_PWMCOUNT = 0x10,
okini3939 0:b069b7027af2 46 LCDCFG_LED = 0x08,
okini3939 0:b069b7027af2 47 LCDCFG_3V = 0x04,
okini3939 0:b069b7027af2 48 LCDCFG_ADDR = 0x02,
okini3939 0:b069b7027af2 49 LCDCFG_INIT = 0x01
okini3939 0:b069b7027af2 50 };
okini3939 0:b069b7027af2 51
okini3939 2:bc4583ce560e 52 /**
okini3939 2:bc4583ce560e 53 * @brief I2CLCD class
okini3939 2:bc4583ce560e 54 */
okini3939 0:b069b7027af2 55 class I2CLCD : public Stream {
okini3939 0:b069b7027af2 56 public:
okini3939 2:bc4583ce560e 57 I2CLCD (PinName p_sda, PinName p_scl, int p_i2caddr = I2CLCD_ADDR, I2CLCDType p_type = LCD16x2, I2CLCDConfig p_config = LCDCFG_3V);
okini3939 2:bc4583ce560e 58 I2CLCD (I2C& p_i2c, int p_i2caddr = I2CLCD_ADDR, I2CLCDType p_type = LCD16x2, I2CLCDConfig p_config = LCDCFG_3V);
okini3939 0:b069b7027af2 59
okini3939 0:b069b7027af2 60 void locate (int, int);
okini3939 0:b069b7027af2 61 void cls ();
okini3939 0:b069b7027af2 62 void lcd_cfg (I2CLCDConfig);
okini3939 0:b069b7027af2 63
okini3939 0:b069b7027af2 64 protected:
okini3939 0:b069b7027af2 65 virtual int _putc (int);
okini3939 0:b069b7027af2 66 virtual int _getc ();
okini3939 0:b069b7027af2 67
okini3939 0:b069b7027af2 68 int address (int, int);
okini3939 0:b069b7027af2 69 int rows ();
okini3939 0:b069b7027af2 70 int cols ();
okini3939 2:bc4583ce560e 71 void init (int, I2CLCDType, I2CLCDConfig);
okini3939 2:bc4583ce560e 72 void lcd_out (char, char);
okini3939 2:bc4583ce560e 73 char lcd_in (char);
okini3939 0:b069b7027af2 74
okini3939 0:b069b7027af2 75 I2C i2c;
okini3939 2:bc4583ce560e 76 int i2caddr;
okini3939 0:b069b7027af2 77 I2CLCDType type;
okini3939 0:b069b7027af2 78 int x, y;
okini3939 0:b069b7027af2 79 };
okini3939 0:b069b7027af2 80
okini3939 0:b069b7027af2 81 #endif