Parallel to I2C for Intelligent LED Display module PD2435~7 / PD3535~7 / PD4435~7 (OSRAM)
Dependents: i2cleddisp_sample WeatherPlatform_20110408 WeatherPlatform WeatherStation
I2CLEDDisp.h@0:eae10b76cd72, 2010-10-21 (annotated)
- Committer:
- okini3939
- Date:
- Thu Oct 21 11:51:14 2010 +0000
- Revision:
- 0:eae10b76cd72
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:eae10b76cd72 | 1 | /* |
okini3939 | 0:eae10b76cd72 | 2 | * mbed library for I2C LED Display |
okini3939 | 0:eae10b76cd72 | 3 | * Copyright (c) 2010 Hiroshi Suga |
okini3939 | 0:eae10b76cd72 | 4 | * Released under the MIT License: http://mbed.org/license/mit |
okini3939 | 0:eae10b76cd72 | 5 | * |
okini3939 | 0:eae10b76cd72 | 6 | * This product includes: |
okini3939 | 0:eae10b76cd72 | 7 | * mbed TextLCD Library, for a 4-bit LCD based on HD44780 |
okini3939 | 0:eae10b76cd72 | 8 | * Copyright (c) 2007-2010, sford |
okini3939 | 0:eae10b76cd72 | 9 | */ |
okini3939 | 0:eae10b76cd72 | 10 | |
okini3939 | 0:eae10b76cd72 | 11 | #ifndef I2CLEDDisp_H |
okini3939 | 0:eae10b76cd72 | 12 | #define I2CLEDDisp_H |
okini3939 | 0:eae10b76cd72 | 13 | |
okini3939 | 0:eae10b76cd72 | 14 | #include "mbed.h" |
okini3939 | 0:eae10b76cd72 | 15 | |
okini3939 | 0:eae10b76cd72 | 16 | #define I2CLEDDisp_ADDR 0x78 |
okini3939 | 0:eae10b76cd72 | 17 | |
okini3939 | 0:eae10b76cd72 | 18 | enum I2CLEDDispType { |
okini3939 | 0:eae10b76cd72 | 19 | LEDDISP4x1 = 1, |
okini3939 | 0:eae10b76cd72 | 20 | LEDDISP4x1x2 = 2, |
okini3939 | 0:eae10b76cd72 | 21 | LEDDISP4x1x3 = 3, |
okini3939 | 0:eae10b76cd72 | 22 | LEDDISP4x1x4 = 4 |
okini3939 | 0:eae10b76cd72 | 23 | }; |
okini3939 | 0:eae10b76cd72 | 24 | |
okini3939 | 0:eae10b76cd72 | 25 | enum I2CLEDDispConfig { |
okini3939 | 0:eae10b76cd72 | 26 | LEDDISPCFG_ENABLE = 0x80, |
okini3939 | 0:eae10b76cd72 | 27 | LEDDISPCFG_SPEED = 0x40, |
okini3939 | 0:eae10b76cd72 | 28 | LEDDISPCFG_ADDR1 = 0x20, |
okini3939 | 0:eae10b76cd72 | 29 | LEDDISPCFG_ADDR0 = 0x10, |
okini3939 | 0:eae10b76cd72 | 30 | LEDDISPCFG_INIT = 0x08 |
okini3939 | 0:eae10b76cd72 | 31 | }; |
okini3939 | 0:eae10b76cd72 | 32 | |
okini3939 | 0:eae10b76cd72 | 33 | enum I2CLEDDispControl { |
okini3939 | 0:eae10b76cd72 | 34 | LEDDISP_CONTROL_B0 = 0x00, |
okini3939 | 0:eae10b76cd72 | 35 | LEDDISP_CONTROL_B25 = 0x01, |
okini3939 | 0:eae10b76cd72 | 36 | LEDDISP_CONTROL_B50 = 0x02, |
okini3939 | 0:eae10b76cd72 | 37 | LEDDISP_CONTROL_B100 = 0x03, |
okini3939 | 0:eae10b76cd72 | 38 | LEDDISP_CONTROL_AC = 0x00, |
okini3939 | 0:eae10b76cd72 | 39 | LEDDISP_CONTROL_AB = 0x04, |
okini3939 | 0:eae10b76cd72 | 40 | LEDDISP_CONTROL_ABC = 0x08, |
okini3939 | 0:eae10b76cd72 | 41 | LEDDISP_CONTROL_ACC = 0x0c, |
okini3939 | 0:eae10b76cd72 | 42 | LEDDISP_CONTROL_ATTRIB = 0x10, |
okini3939 | 0:eae10b76cd72 | 43 | LEDDISP_CONTROL_BLINK = 0x20, |
okini3939 | 0:eae10b76cd72 | 44 | LEDDISP_CONTROL_TEST = 0x40, |
okini3939 | 0:eae10b76cd72 | 45 | LEDDISP_CONTROL_CLEAR = 0x80 |
okini3939 | 0:eae10b76cd72 | 46 | }; |
okini3939 | 0:eae10b76cd72 | 47 | |
okini3939 | 0:eae10b76cd72 | 48 | class I2CLEDDisp : public Stream { |
okini3939 | 0:eae10b76cd72 | 49 | public: |
okini3939 | 0:eae10b76cd72 | 50 | I2CLEDDisp (PinName p_sda, PinName p_scl, int p_i2caddr = I2CLEDDisp_ADDR, I2CLEDDispType p_type = LEDDISP4x1, I2CLEDDispControl p_ctrl = LEDDISP_CONTROL_B100); |
okini3939 | 0:eae10b76cd72 | 51 | I2CLEDDisp (I2C& p_i2c, int p_i2caddr = I2CLEDDisp_ADDR, I2CLEDDispType p_type = LEDDISP4x1, I2CLEDDispControl p_ctrl = LEDDISP_CONTROL_B100); |
okini3939 | 0:eae10b76cd72 | 52 | |
okini3939 | 0:eae10b76cd72 | 53 | void locate (int, int); |
okini3939 | 0:eae10b76cd72 | 54 | void cls (); |
okini3939 | 0:eae10b76cd72 | 55 | void disp_cfg (I2CLEDDispConfig); |
okini3939 | 0:eae10b76cd72 | 56 | |
okini3939 | 0:eae10b76cd72 | 57 | protected: |
okini3939 | 0:eae10b76cd72 | 58 | virtual int _putc (int); |
okini3939 | 0:eae10b76cd72 | 59 | virtual int _getc (); |
okini3939 | 0:eae10b76cd72 | 60 | |
okini3939 | 0:eae10b76cd72 | 61 | int address (int, int); |
okini3939 | 0:eae10b76cd72 | 62 | int rows (); |
okini3939 | 0:eae10b76cd72 | 63 | int cols (); |
okini3939 | 0:eae10b76cd72 | 64 | void init (int, I2CLEDDispType, I2CLEDDispControl); |
okini3939 | 0:eae10b76cd72 | 65 | void disp_out (int, int); |
okini3939 | 0:eae10b76cd72 | 66 | int disp_in (int); |
okini3939 | 0:eae10b76cd72 | 67 | |
okini3939 | 0:eae10b76cd72 | 68 | I2C i2c; |
okini3939 | 0:eae10b76cd72 | 69 | int i2caddr, addr; |
okini3939 | 0:eae10b76cd72 | 70 | I2CLEDDispType type; |
okini3939 | 0:eae10b76cd72 | 71 | I2CLEDDispControl ctrl; |
okini3939 | 0:eae10b76cd72 | 72 | int x, y; |
okini3939 | 0:eae10b76cd72 | 73 | }; |
okini3939 | 0:eae10b76cd72 | 74 | |
okini3939 | 0:eae10b76cd72 | 75 | #endif |