7 Segment LED Displaydriver, I2C interface, SAA1064
SAA1064.h
- Committer:
- wim
- Date:
- 2013-09-08
- Revision:
- 0:48adc4a70511
- Child:
- 1:79cb73f852da
File content as of revision 0:48adc4a70511:
/* SAA1064 - I2C LED Driver used in multiplex mode (4x 7 Segments and Decimal Point) * Copyright (c) 2013 Wim Huiskamp * * Released under the MIT License: http://mbed.org/license/mit * * version 0.2 Initial Release */ #ifndef _SAA1064_H #define _SAA1064_H //Address Defines for SAA1064 #define SAA1064_SA0 0x70 #define SAA1064_SA1 0x72 #define SAA1064_SA2 0x74 #define SAA1064_SA3 0x76 //Register Defines for SAA1064 #define SAA1064_CTRL 0x00 #define SAA1064_DIG1 0x01 #define SAA1064_DIG2 0x02 #define SAA1064_DIG3 0x03 #define SAA1064_DIG4 0x04 //Control Register Defines for SAA1064 //Static display (2 digits) or Multiplexed (4 digits) #define SAA1064_MPX 0x01 //Digits 1 and 2 On #define SAA1064_B0 0x02 //Digits 3 and 4 On #define SAA1064_B1 0x04 //Intensity of display #define SAA1064_INT0 0x00 #define SAA1064_INT1 0x10 #define SAA1064_INT2 0x20 #define SAA1064_INT3 0x30 #define SAA1064_INT4 0x40 #define SAA1064_INT5 0x50 #define SAA1064_INT6 0x60 #define SAA1064_INT7 0x70 //Default Mode: Multiplex On, All Digits On #define SAA1064_CTRL_DEF (SAA1064_MPX | SAA1064_B0 | SAA1064_B1) //Pin Defines for SAA1064 #define D_L0 0x01 #define D_L1 0x02 #define D_L2 0x04 #define D_L3 0x08 #define D_L4 0x10 #define D_L5 0x20 #define D_L6 0x40 #define D_L7 0x80 //Defines for Segments const char SAA1064_SEGM[] = {0x3F, //0 0x06, //1 0x5B, //2 0x4F, //3 0x66, //4 0x6D, //5 0x7D, //6 0x07, //7 0x7F, //8 0x6F, //9 0x77, //A 0x7C, //B 0x39, //C 0x5E, //D 0x79, //E 0x71}; //F #define SAA1064_DP 0x80 //Decimal Point #define SAA1064_MINUS 0x40 //Minus Sign #define SAA1064_BLNK 0x00 //Blank Digit #define SAA1064_ALL 0xFF //All Segments On /** Create an SAA1064 object connected to the specified I2C object and using the specified deviceAddress * * @param I2C &i2c the I2C port to connect to * @param char deviceAddress the address of the SAA1064 */ class SAA1064 { public: SAA1064(I2C *i2c, char deviceAddress = SAA1064_SA0); char read(); void write(char byte); void setIntensity(unsigned char intensity); void write(unsigned char digit1, unsigned char digit2, unsigned char digit3, unsigned char digit4); void writeInt(int value, unsigned char dp_digit=0, bool leading=true); protected: I2C *_i2c; unsigned char _slaveAddress; void _init(); }; #endif