Demo Clock with Nucleo-F303RE and Starter Shield

Dependents:   Nucleo_StarterShileld_Clock mojo main job ... more

TM1636.h

Committer:
rogerzuber
Date:
2017-05-18
Revision:
0:864e710889fa
Child:
1:e4450fb0849a

File content as of revision 0:864e710889fa:

//  Author:Frankie.Chu
//  Date:9 April,2012
//
//  This library is free software; you can redistribute it and/or
//  modify it under the terms of the GNU Lesser General Public
//  License as published by the Free Software Foundation; either
//  version 2.1 of the License, or (at your option) any later version.
//
//  This library is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
//  Lesser General Public License for more details.
//
//  You should have received a copy of the GNU Lesser General Public
//  License along with this library; if not, write to the Free Software
//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
//
//  Modified record:
//
/*******************************************************************************/

#ifndef TM1636_h
#define TM1636_h
#include "mbed.h"
#include <inttypes.h>

//************definitions for TM1636*********************
#define ADDR_AUTO  0x40
#define ADDR_FIXED 0x44

#define STARTADDR  0xc0 
/**** definitions for the clock point of the digit tube *******/
#define POINT_ON   1
#define POINT_OFF  0
/**************definitions for brightness***********************/
#define  BRIGHT_DARKEST 0
#define  BRIGHT_TYPICAL 2
#define  BRIGHTEST      7

//--------------------------------------------------------//
//Special characters index of tube table
#define INDEX_NEGATIVE_SIGN	16
#define INDEX_BLANK			17

#define LOW  0
#define HIGH 1

class TM1636
{
public:
  uint8_t Cmd_SetData;
  uint8_t Cmd_SetAddr;
  uint8_t Cmd_DispCtrl;
  bool _PointFlag;     										// _PointFlag=1:the clock point on
  uint8_t _brightness;
  TM1636(PinName Clk, PinName Data);
  void init(void);        									// To clear the display
  void writeByte(int8_t wr_data);							// write 8bit data to tm1637
  void start(void);											// send start bits
  void stop(void); 											// send stop bits
  void display(int8_t DispData[]);
  void display(uint8_t BitAddr,int8_t DispData);
  void clearDisplay(void);
  void set(uint8_t = BRIGHT_TYPICAL,uint8_t = 0x40,uint8_t = 0xc0);	//To take effect the next time it displays.
  void point(bool PointFlag);								// whether to light the clock point ":".To take effect the next time it displays.
  void coding(int8_t DispData[]); 
  int8_t coding(int8_t DispData); 
  inline void setBrightness(uint8_t brightness) {
  	_brightness = brightness;
  }
  inline uint8_t getBrightness(){
    return _brightness;
  }
private:
  DigitalInOut Clkpin;
  DigitalInOut Datapin;
};
#endif