7segment SPI LED module from DF Robot.com

Dependents:   spi7seg_test

Committer:
morecat_lab
Date:
Sun Feb 08 06:46:20 2015 +0000
Revision:
2:27cc28619363
Parent:
1:fcb72bd26532
correct spell mistake

Who changed what in which revision?

UserRevisionLine numberNew contents of line
morecat_lab 0:f0806724e7c9 1 /*
morecat_lab 0:f0806724e7c9 2 SpiLED.h - mbed library for Serial seven segment LED driver.
morecat_lab 0:f0806724e7c9 3 This library is for Serial-in pararel-out shift register (HC595) and 7 Segiemnt LED module
morecat_lab 0:f0806724e7c9 4 Copyright 20145 by morecat_lab
morecat_lab 0:f0806724e7c9 5
morecat_lab 0:f0806724e7c9 6 This library is distributed in the hope that it will be useful,
morecat_lab 0:f0806724e7c9 7 but WITHOUT ANY WARRANTY; without even the implied warranty of
morecat_lab 0:f0806724e7c9 8 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
morecat_lab 0:f0806724e7c9 9 */
morecat_lab 0:f0806724e7c9 10
morecat_lab 0:f0806724e7c9 11 #ifndef SPI7SEG_H
morecat_lab 0:f0806724e7c9 12 #define SPI7SEG_H
morecat_lab 0:f0806724e7c9 13
morecat_lab 0:f0806724e7c9 14 #include <Timer.h>
morecat_lab 0:f0806724e7c9 15 #include "mbed.h"
morecat_lab 0:f0806724e7c9 16
morecat_lab 0:f0806724e7c9 17 // LED PIN ASSIGN
morecat_lab 0:f0806724e7c9 18 //
morecat_lab 0:f0806724e7c9 19 // P G F E D C B A
morecat_lab 0:f0806724e7c9 20 //
morecat_lab 0:f0806724e7c9 21 // A
morecat_lab 0:f0806724e7c9 22 // --
morecat_lab 0:f0806724e7c9 23 // F|__|B
morecat_lab 0:f0806724e7c9 24 // E|G |C
morecat_lab 0:f0806724e7c9 25 // -- .P
morecat_lab 0:f0806724e7c9 26 // D
morecat_lab 0:f0806724e7c9 27
morecat_lab 0:f0806724e7c9 28 #define NUM_PAT_0 0xc0
morecat_lab 0:f0806724e7c9 29 #define NUM_PAT_1 0xf9
morecat_lab 0:f0806724e7c9 30 #define NUM_PAT_2 0xa4
morecat_lab 0:f0806724e7c9 31 #define NUM_PAT_3 0xb0
morecat_lab 0:f0806724e7c9 32 #define NUM_PAT_4 0x99
morecat_lab 0:f0806724e7c9 33 #define NUM_PAT_5 0x92
morecat_lab 0:f0806724e7c9 34 #define NUM_PAT_6 0x82
morecat_lab 0:f0806724e7c9 35 #define NUM_PAT_7 0xf8
morecat_lab 0:f0806724e7c9 36 #define NUM_PAT_8 0x80
morecat_lab 0:f0806724e7c9 37 #define NUM_PAT_9 0x90
morecat_lab 0:f0806724e7c9 38 #define NUM_PAT_A 0x88
morecat_lab 0:f0806724e7c9 39 #define NUM_PAT_B 0x83
morecat_lab 1:fcb72bd26532 40 #define NUM_PAT_C 0xc6
morecat_lab 0:f0806724e7c9 41 #define NUM_PAT_D 0xa1
morecat_lab 0:f0806724e7c9 42 #define NUM_PAT_E 0x86
morecat_lab 0:f0806724e7c9 43 #define NUM_PAT_F 0x8e
morecat_lab 0:f0806724e7c9 44
morecat_lab 0:f0806724e7c9 45 /**
morecat_lab 0:f0806724e7c9 46 * Spi Seven segment LED driver library (8 digit)
morecat_lab 0:f0806724e7c9 47 */
morecat_lab 0:f0806724e7c9 48 class Spi7Seg
morecat_lab 0:f0806724e7c9 49 {
morecat_lab 0:f0806724e7c9 50 private:
morecat_lab 2:27cc28619363 51 DigitalOut _dataPin, _clockPin, _latchPin;
morecat_lab 0:f0806724e7c9 52 char _buffer[8];
morecat_lab 0:f0806724e7c9 53 int _numOfDigs;
morecat_lab 0:f0806724e7c9 54 bool _zeroSupress;
morecat_lab 0:f0806724e7c9 55 Timer timer;
morecat_lab 0:f0806724e7c9 56 public:
morecat_lab 0:f0806724e7c9 57 static const int numConv[16];
morecat_lab 0:f0806724e7c9 58 /**
morecat_lab 0:f0806724e7c9 59 * create an 8 digit SPI driven seven segment driver
morecat_lab 0:f0806724e7c9 60 *
morecat_lab 0:f0806724e7c9 61 * @param PinName a Pin No for segment data
morecat_lab 0:f0806724e7c9 62 * @param PinName b Pin No for segment clock
morecat_lab 2:27cc28619363 63 * @param PinName c Pin No for segment latch
morecat_lab 0:f0806724e7c9 64      */
morecat_lab 2:27cc28619363 65 Spi7Seg(PinName data,PinName clock,PinName latch);
morecat_lab 0:f0806724e7c9 66
morecat_lab 0:f0806724e7c9 67 /**
morecat_lab 0:f0806724e7c9 68 * start driver
morecat_lab 0:f0806724e7c9 69 */
morecat_lab 0:f0806724e7c9 70 void begin(void);
morecat_lab 0:f0806724e7c9 71
morecat_lab 0:f0806724e7c9 72 /**
morecat_lab 0:f0806724e7c9 73 * get a charcter pattern from a number
morecat_lab 0:f0806724e7c9 74 *
morecat_lab 0:f0806724e7c9 75 * @param i number
morecat_lab 0:f0806724e7c9 76 *
morecat_lab 0:f0806724e7c9 77 * @returns bit pattern of number i
morecat_lab 0:f0806724e7c9 78 *
morecat_lab 0:f0806724e7c9 79 */
morecat_lab 0:f0806724e7c9 80 char segCh(char i);
morecat_lab 0:f0806724e7c9 81
morecat_lab 0:f0806724e7c9 82 /**
morecat_lab 0:f0806724e7c9 83 * turn on DP
morecat_lab 0:f0806724e7c9 84 *
morecat_lab 0:f0806724e7c9 85 * @param d dight
morecat_lab 0:f0806724e7c9 86 *
morecat_lab 0:f0806724e7c9 87 */
morecat_lab 0:f0806724e7c9 88 void setDot(int d);
morecat_lab 0:f0806724e7c9 89
morecat_lab 0:f0806724e7c9 90 /**
morecat_lab 0:f0806724e7c9 91 * turn off DP
morecat_lab 0:f0806724e7c9 92 *
morecat_lab 0:f0806724e7c9 93 * @param d dight
morecat_lab 0:f0806724e7c9 94 *
morecat_lab 0:f0806724e7c9 95 */
morecat_lab 0:f0806724e7c9 96 void clearDot(int d);
morecat_lab 0:f0806724e7c9 97
morecat_lab 0:f0806724e7c9 98 /**
morecat_lab 0:f0806724e7c9 99 * write a number to LED
morecat_lab 0:f0806724e7c9 100 *
morecat_lab 0:f0806724e7c9 101 * @param n number
morecat_lab 0:f0806724e7c9 102 *
morecat_lab 0:f0806724e7c9 103 */
morecat_lab 0:f0806724e7c9 104 void writeNum(long n);
morecat_lab 0:f0806724e7c9 105
morecat_lab 0:f0806724e7c9 106 /**
morecat_lab 0:f0806724e7c9 107 * write numbers to each dight of 8 dight LED
morecat_lab 0:f0806724e7c9 108 *
morecat_lab 0:f0806724e7c9 109 * @param d1 digit 1 number
morecat_lab 0:f0806724e7c9 110 * @param d2 digit 2 number
morecat_lab 0:f0806724e7c9 111 * @param d3 digit 3 number
morecat_lab 0:f0806724e7c9 112 * @param d4 digit 4 number
morecat_lab 0:f0806724e7c9 113 * @param d5 digit 5 number
morecat_lab 0:f0806724e7c9 114 * @param d6 digit 6 number
morecat_lab 0:f0806724e7c9 115 * @param d7 digit 7 number
morecat_lab 0:f0806724e7c9 116 * @param d8 digit 8 number
morecat_lab 0:f0806724e7c9 117 *
morecat_lab 0:f0806724e7c9 118 */
morecat_lab 0:f0806724e7c9 119 void writeNum(char d1, char d2, char d3, char d4, char d5, char d6, char d7, char d8);
morecat_lab 0:f0806724e7c9 120
morecat_lab 0:f0806724e7c9 121 /**
morecat_lab 0:f0806724e7c9 122 * zero supress: tell driver not to display 0 in the left
morecat_lab 0:f0806724e7c9 123 *
morecat_lab 0:f0806724e7c9 124 */
morecat_lab 0:f0806724e7c9 125 void supressZero();
morecat_lab 0:f0806724e7c9 126
morecat_lab 0:f0806724e7c9 127 /**
morecat_lab 0:f0806724e7c9 128 * control zero supress bit
morecat_lab 0:f0806724e7c9 129 *
morecat_lab 0:f0806724e7c9 130 * @param t, 1:supress on, 0:supress off
morecat_lab 0:f0806724e7c9 131 *
morecat_lab 0:f0806724e7c9 132 */
morecat_lab 0:f0806724e7c9 133 void setZeroSupress(bool t);
morecat_lab 0:f0806724e7c9 134
morecat_lab 0:f0806724e7c9 135 /**
morecat_lab 0:f0806724e7c9 136 * write hex number to LED
morecat_lab 0:f0806724e7c9 137 *
morecat_lab 0:f0806724e7c9 138 * @param n (long)number
morecat_lab 0:f0806724e7c9 139 *
morecat_lab 0:f0806724e7c9 140 */
morecat_lab 0:f0806724e7c9 141 void writeHex(long n);
morecat_lab 0:f0806724e7c9 142
morecat_lab 0:f0806724e7c9 143 /**
morecat_lab 0:f0806724e7c9 144 * write patterns to each dight of 8 dight LED
morecat_lab 0:f0806724e7c9 145 *
morecat_lab 0:f0806724e7c9 146 * @param d1 digit 1 pattern
morecat_lab 0:f0806724e7c9 147 * @param d2 digit 2 pattern
morecat_lab 0:f0806724e7c9 148 * @param d3 digit 3 pattern
morecat_lab 0:f0806724e7c9 149 * @param d4 digit 4 pattern
morecat_lab 0:f0806724e7c9 150 * @param d5 digit 5 pattern
morecat_lab 0:f0806724e7c9 151 * @param d6 digit 6 pattern
morecat_lab 0:f0806724e7c9 152 * @param d7 digit 7 pattern
morecat_lab 0:f0806724e7c9 153 * @param d8 digit 8 pattern
morecat_lab 0:f0806724e7c9 154 *
morecat_lab 0:f0806724e7c9 155 */
morecat_lab 0:f0806724e7c9 156 void writeRawData(char d1, char d2, char d3, char d4, char d5, char d6, char d7, char d8);
morecat_lab 0:f0806724e7c9 157
morecat_lab 0:f0806724e7c9 158 void write(uint8_t x, uint8_t y, uint8_t value);
morecat_lab 0:f0806724e7c9 159
morecat_lab 0:f0806724e7c9 160 /**
morecat_lab 0:f0806724e7c9 161 * write patterns to a dight
morecat_lab 0:f0806724e7c9 162 *
morecat_lab 0:f0806724e7c9 163 * @param d digit
morecat_lab 0:f0806724e7c9 164 *
morecat_lab 0:f0806724e7c9 165 * @param value pattern
morecat_lab 0:f0806724e7c9 166 *
morecat_lab 0:f0806724e7c9 167 */
morecat_lab 0:f0806724e7c9 168 void write(uint8_t d, uint8_t value);
morecat_lab 0:f0806724e7c9 169
morecat_lab 0:f0806724e7c9 170 /**
morecat_lab 0:f0806724e7c9 171 * Clear LED buffer
morecat_lab 0:f0806724e7c9 172 */
morecat_lab 0:f0806724e7c9 173 void clear(void);
morecat_lab 0:f0806724e7c9 174
morecat_lab 0:f0806724e7c9 175 /**
morecat_lab 0:f0806724e7c9 176 * Update LED (by internal clock)
morecat_lab 0:f0806724e7c9 177 *
morecat_lab 0:f0806724e7c9 178 * @returns sync = 1, if digit == 0
morecat_lab 0:f0806724e7c9 179 *
morecat_lab 0:f0806724e7c9 180 */
morecat_lab 0:f0806724e7c9 181 void update(void);
morecat_lab 0:f0806724e7c9 182
morecat_lab 0:f0806724e7c9 183 /**
morecat_lab 0:f0806724e7c9 184 * keep updating LED for specified period
morecat_lab 0:f0806724e7c9 185 *
morecat_lab 0:f0806724e7c9 186 * @param ms period (ms)
morecat_lab 0:f0806724e7c9 187 *
morecat_lab 0:f0806724e7c9 188 */
morecat_lab 0:f0806724e7c9 189 void updateWithDelay(int ms);
morecat_lab 0:f0806724e7c9 190
morecat_lab 0:f0806724e7c9 191 };
morecat_lab 0:f0806724e7c9 192
morecat_lab 0:f0806724e7c9 193 #endif // SPI7SEG.h