このライブラリは1桁から8桁までのSeven segment Numeric LEDを制御します。 LEDはanode commonとcathode common を使用することができます。 LEDの表示は1秒で表示をスムースに切り替えるモードと、直ぐに切り替えるモードの2つのモードを選択することができます。 This library to control the Seven segment Numeric LED 8 digit of 1. You can use the LED cathode common and anode common. Switch mode LED display and a second displayed a smooth, you can choose two modes to switch modes quickly.

Dependents:   kitchenTimer_Clock kitchenTimer LPC1114FN28_kitchenTimer_Clock SevenSegmentLedSample ... more

Committer:
suupen
Date:
Fri Dec 27 23:23:34 2013 +0000
Revision:
6:a1eb5de4146f
Parent:
5:a7ba72bf10ba
This edition, was modified to perform in the Library side dynamic output processing.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
suupen 0:5410d6e2bce7 1 /* mbed Seven segment LED (Maximum four digit) Library
suupen 0:5410d6e2bce7 2 * Copyright (c) 2011 suupen
suupen 0:5410d6e2bce7 3 *
suupen 0:5410d6e2bce7 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
suupen 0:5410d6e2bce7 5 * of this software and associated documentation files (the "Software"), to deal
suupen 0:5410d6e2bce7 6 * in the Software without restriction, including without limitation the rights
suupen 0:5410d6e2bce7 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
suupen 0:5410d6e2bce7 8 * copies of the Software, and to permit persons to whom the Software is
suupen 0:5410d6e2bce7 9 * furnished to do so, subject to the following conditions:
suupen 0:5410d6e2bce7 10 *
suupen 0:5410d6e2bce7 11 * The above copyright notice and this permission notice shall be included in
suupen 0:5410d6e2bce7 12 * all copies or substantial portions of the Software.
suupen 0:5410d6e2bce7 13 *
suupen 0:5410d6e2bce7 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
suupen 0:5410d6e2bce7 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
suupen 0:5410d6e2bce7 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
suupen 0:5410d6e2bce7 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
suupen 0:5410d6e2bce7 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
suupen 0:5410d6e2bce7 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
suupen 0:5410d6e2bce7 20 * THE SOFTWARE.
suupen 0:5410d6e2bce7 21 */
suupen 0:5410d6e2bce7 22
suupen 0:5410d6e2bce7 23
suupen 1:3429249e30f9 24 //***********************************************************************/
suupen 1:3429249e30f9 25 //* */
suupen 1:3429249e30f9 26 //* ledDynamic.h */
suupen 5:a7ba72bf10ba 27 //* --------- V1.0 : 4digit(4com) display */
suupen 5:a7ba72bf10ba 28 //* --------- V2.0 : 8digit(8com) display */
suupen 5:a7ba72bf10ba 29 //* @SS131130 V2.1 : HYOJI MODE NO TUIKA (smooth or hard) */
suupen 6:a1eb5de4146f 30 //* @SS131223 V2.2 : Run the library side dynamic output processing */
suupen 1:3429249e30f9 31 //* */
suupen 1:3429249e30f9 32 //***********************************************************************/
suupen 0:5410d6e2bce7 33 #ifndef _SEVENSEGLED_H
suupen 0:5410d6e2bce7 34 #define _SEVENSEGLED_H
suupen 0:5410d6e2bce7 35
suupen 0:5410d6e2bce7 36 /** Seven segment Numeric LED control class
suupen 0:5410d6e2bce7 37 *
suupen 0:5410d6e2bce7 38 * Example:
suupen 0:5410d6e2bce7 39 * @code
suupen 0:5410d6e2bce7 40 * //-----------------------------------------------------------------------------
suupen 0:5410d6e2bce7 41 * //sevenSegmentLed Library Example
suupen 0:5410d6e2bce7 42 * //
suupen 1:3429249e30f9 43 * //This program by one every second counts, do a 8-digit seven-segment LED display.
suupen 0:5410d6e2bce7 44 * //
suupen 5:a7ba72bf10ba 45 * // <compile option>
suupen 5:a7ba72bf10ba 46 * // SevenSegLed.h "USECOM4" : YUKO JI SAIDAI 4COM. MUKO JI SAIDAI 8COM.
suupen 5:a7ba72bf10ba 47 * //
suupen 0:5410d6e2bce7 48 * //seven segment numeric LED Display : LTC4627P
suupen 0:5410d6e2bce7 49 * // http://www.excesssolutions.com/mas_assets/acrobat/ES5721.pdf
suupen 0:5410d6e2bce7 50 * //
suupen 0:5410d6e2bce7 51 * // LTC4627T Resister mbed
suupen 0:5410d6e2bce7 52 * // Pin No Function [ohm] Function
suupen 0:5410d6e2bce7 53 * // ---------------------------------------------------------------------------
suupen 0:5410d6e2bce7 54 * // 1 Common Anode Digit 1 - P29
suupen 0:5410d6e2bce7 55 * // 2 Common Anode Digit 2 - P13
suupen 0:5410d6e2bce7 56 * // 3 Cathode D 200 P22
suupen 0:5410d6e2bce7 57 * // 4 Common Anode L1,L2,L3 - -
suupen 0:5410d6e2bce7 58 * // 5 Cathode E 200 P24
suupen 0:5410d6e2bce7 59 * // 6 Common Anode Digit 3 - P25
suupen 0:5410d6e2bce7 60 * // 7 Cathode D.p. 200 P30
suupen 0:5410d6e2bce7 61 * // 8 Common Anode Digit 4 - P27
suupen 0:5410d6e2bce7 62 * // 9 No Connection - -
suupen 0:5410d6e2bce7 63 * // 10 No Pin - -
suupen 0:5410d6e2bce7 64 * // 11 Cathode F 200 P16
suupen 0:5410d6e2bce7 65 * // 12 No Pin - -
suupen 0:5410d6e2bce7 66 * // 13 Cathode C,L3 200 P17
suupen 0:5410d6e2bce7 67 * // 14 Cathode A,L1 200 P14
suupen 0:5410d6e2bce7 68 * // 15 Cathode G 200 P19
suupen 0:5410d6e2bce7 69 * // 16 Cathode B,L2 200 P20
suupen 0:5410d6e2bce7 70 * //---------------------------------------------------------------------------
suupen 0:5410d6e2bce7 71 * #include "mbed.h"
suupen 0:5410d6e2bce7 72 * #include "SevenSegLed.h"
suupen 0:5410d6e2bce7 73 *
suupen 0:5410d6e2bce7 74 * // common type (0:anode common 1:cathode common)
suupen 0:5410d6e2bce7 75 * // |
suupen 0:5410d6e2bce7 76 * // | display mode (0:smooth 1:hard)
suupen 0:5410d6e2bce7 77 * // | |
suupen 1:3429249e30f9 78 * // | | segA segB segC segD segE segF segG segP com1 com2 com3 com4 (com5,com6,com7,com8 = NC)
suupen 0:5410d6e2bce7 79 * // | | | | | | | | | | | | | |
suupen 0:5410d6e2bce7 80 * SevenSegLed segmentled(0, 0, p14, p20, p17, p22, p24, p16, p19, p30, p29, p13, p25, p27);
suupen 0:5410d6e2bce7 81 *
suupen 0:5410d6e2bce7 82 *
suupen 0:5410d6e2bce7 83 * // 1 2 3 4digit
suupen 0:5410d6e2bce7 84 * // | | | |
suupen 0:5410d6e2bce7 85 * uint8_t D_7seg[4] = {0, 0, 0, 0}; // seven segment digit number (0x00:"0", 0x01:"1", ... , 0x09:"9", 0x0A:"A", ... , 0x0F:"F", other:" ")
suupen 0:5410d6e2bce7 86 * uint8_t D_dot[4] = {0, 0, 0, 0}; // seven segment digit dotpoint. (0:off 1:on)
suupen 0:5410d6e2bce7 87 *
suupen 0:5410d6e2bce7 88 *
suupen 0:5410d6e2bce7 89 * Timer timer; // 1second timer
suupen 0:5410d6e2bce7 90 *
suupen 0:5410d6e2bce7 91 * int main() {
suupen 0:5410d6e2bce7 92 * uint16_t counter = 0;
suupen 0:5410d6e2bce7 93 *
suupen 0:5410d6e2bce7 94 * timer.start();
suupen 0:5410d6e2bce7 95 *
suupen 0:5410d6e2bce7 96 * while(1) {
suupen 0:5410d6e2bce7 97 * // After one second to start the process
suupen 0:5410d6e2bce7 98 * if(timer.read_ms() >= 1000){
suupen 0:5410d6e2bce7 99 * timer.reset();
suupen 0:5410d6e2bce7 100 * counter++;
suupen 0:5410d6e2bce7 101 *
suupen 0:5410d6e2bce7 102 * // Display digit data updates
suupen 0:5410d6e2bce7 103 * D_7seg[0] = (uint8_t)((counter & 0xF000) >> 12);
suupen 0:5410d6e2bce7 104 * D_7seg[1] = (uint8_t)((counter & 0x0F00) >> 8);
suupen 0:5410d6e2bce7 105 * D_7seg[2] = (uint8_t)((counter & 0x00F0) >> 4);
suupen 0:5410d6e2bce7 106 * D_7seg[3] = (uint8_t)(counter & 0x000F);
suupen 0:5410d6e2bce7 107 *
suupen 0:5410d6e2bce7 108 * // Display dot point data updates
suupen 0:5410d6e2bce7 109 * D_dot[0] = 0;
suupen 0:5410d6e2bce7 110 * D_dot[1] = 0;
suupen 0:5410d6e2bce7 111 * D_dot[2] = 0;
suupen 0:5410d6e2bce7 112 * D_dot[3] = 0;
suupen 0:5410d6e2bce7 113 *
suupen 0:5410d6e2bce7 114 * // dot point data set
suupen 0:5410d6e2bce7 115 * D_dot[counter & 0x0003] = 1;
suupen 0:5410d6e2bce7 116 * }
suupen 0:5410d6e2bce7 117 *
suupen 0:5410d6e2bce7 118 * // seven segment display to output data
suupen 0:5410d6e2bce7 119 * // This function, please repeat the process in less than 1ms.
suupen 0:5410d6e2bce7 120 * segmentled.SevenSegLed_main(D_7seg, D_dot);
suupen 0:5410d6e2bce7 121 *
suupen 0:5410d6e2bce7 122 * }
suupen 0:5410d6e2bce7 123 * }
suupen 0:5410d6e2bce7 124 * @endcode
suupen 0:5410d6e2bce7 125 */
suupen 0:5410d6e2bce7 126
suupen 5:a7ba72bf10ba 127 //#define USECOM4 // YUKO JI COM SUU 4KETA MADE. NUKO JI COM SUU 8KETA MADE.
suupen 5:a7ba72bf10ba 128 // LPC1114FN28 DEHA PIN SETTI DE "NC" ATUKAI DEKINAI NODE kitchen timer YO NI KONO commpile option WO TUKERU
suupen 0:5410d6e2bce7 129
suupen 0:5410d6e2bce7 130 #include "types.h"
suupen 0:5410d6e2bce7 131
suupen 4:33e035f6a337 132
suupen 0:5410d6e2bce7 133 class SevenSegLed {
suupen 0:5410d6e2bce7 134 public:
suupen 0:5410d6e2bce7 135
suupen 5:a7ba72bf10ba 136 //@SS131130
suupen 5:a7ba72bf10ba 137 /** Display henko set
suupen 5:a7ba72bf10ba 138 * @param smooth 0:smooth 1:hard
suupen 5:a7ba72bf10ba 139 */
suupen 5:a7ba72bf10ba 140 void smoothSet(uint8_t smooth);
suupen 0:5410d6e2bce7 141
suupen 0:5410d6e2bce7 142
suupen 0:5410d6e2bce7 143 /** Create a seven segment led array object connected to the specified DigitalOut pin
suupen 0:5410d6e2bce7 144 * @param commonPole The polarity of the seven segment led common 0:Anode common, 1:Cathode common
suupen 0:5410d6e2bce7 145 * @param smooth Reading the LED display method. 0:Smooth changing the LED display in one second 1:Quickly changing the LED display
suupen 2:cca0fd8ccb97 146 * @param seg_a - seg_p DigitalOut pin to connect to. To provide members with an array of uint8_t digit minutes.
suupen 2:cca0fd8ccb97 147 * @param com_1 - com_8 DigitalOut pin to connect to. To provide members with an array of uint8_t digit minutes. 8 digits maximum
suupen 0:5410d6e2bce7 148 */
suupen 4:33e035f6a337 149 #ifdef USECOM4
suupen 4:33e035f6a337 150 SevenSegLed(uint8_t commonPole, uint8_t smooth, PinName seg_a, PinName seg_b, PinName seg_c, PinName seg_d, PinName seg_e, PinName seg_f, PinName seg_g, PinName seg_p,
suupen 4:33e035f6a337 151 PinName com_1 = NC, PinName com_2 = NC, PinName com_3 = NC, PinName com_4 = NC);
suupen 4:33e035f6a337 152 #else // ~USECOM4
suupen 1:3429249e30f9 153 SevenSegLed(uint8_t commonPole, uint8_t smooth, PinName seg_a, PinName seg_b, PinName seg_c, PinName seg_d, PinName seg_e, PinName seg_f, PinName seg_g, PinName seg_p,
suupen 1:3429249e30f9 154 PinName com_1 = NC, PinName com_2 = NC, PinName com_3 = NC, PinName com_4 = NC,
suupen 1:3429249e30f9 155 PinName com_5 = NC, PinName com_6 = NC, PinName com_7 = NC, PinName com_8 = NC);
suupen 4:33e035f6a337 156 #endif // USECOM4
suupen 0:5410d6e2bce7 157 /** Data set to the seven segment LED display
suupen 0:5410d6e2bce7 158 * @param number Array variable address pointer of Numerical data 0 - 9,A - F : The figures show, 0x10:off
suupen 0:5410d6e2bce7 159 * @param dot Array variable address pointer of dot data 0:off 1:on
suupen 0:5410d6e2bce7 160 */
suupen 0:5410d6e2bce7 161 void SevenSegLed_main(uint8_t* number, uint8_t* dot);
suupen 0:5410d6e2bce7 162
suupen 0:5410d6e2bce7 163 private:
suupen 0:5410d6e2bce7 164 void segmentGrayDataKosin(void);
suupen 0:5410d6e2bce7 165 void comAllClear(void);
suupen 0:5410d6e2bce7 166 void segAllClear(void);
suupen 0:5410d6e2bce7 167 void segDataSet(uint8_t keta);
suupen 0:5410d6e2bce7 168 void output(void);
suupen 0:5410d6e2bce7 169
suupen 0:5410d6e2bce7 170 // pin set_seg, _com;
suupen 0:5410d6e2bce7 171 DigitalOut _seg_a, _seg_b, _seg_c, _seg_d, _seg_e, _seg_f, _seg_g, _seg_p;
suupen 4:33e035f6a337 172 #ifdef USECOM4
suupen 4:33e035f6a337 173 DigitalOut _com_1, _com_2, _com_3, _com_4;
suupen 4:33e035f6a337 174 #else //~USECOM4
suupen 1:3429249e30f9 175 DigitalOut _com_1, _com_2, _com_3, _com_4, _com_5, _com_6, _com_7, _com_8;
suupen 4:33e035f6a337 176 #endif // USECOM4
suupen 0:5410d6e2bce7 177
suupen 4:33e035f6a337 178 Ticker timer;
suupen 0:5410d6e2bce7 179
suupen 4:33e035f6a337 180 #ifdef USECOM4
suupen 4:33e035f6a337 181 #define Z_ketaSuu (4) // 7segment no keta suu
suupen 4:33e035f6a337 182 #else //USECOM4
suupen 1:3429249e30f9 183 #define Z_ketaSuu (8) // 7segment no keta suu
suupen 4:33e035f6a337 184 #endif // USECOM4
suupen 0:5410d6e2bce7 185 #define Z_segSuu (8) // 7segmetn no segment suu (a,b,...,g,Dp)
suupen 0:5410d6e2bce7 186 #define Z_grayMax (100) // grayData max 100 kaicho
suupen 0:5410d6e2bce7 187 #define Z_pwmGrayMax (100) // pwm max (led heno pwm syuturyoku no max)
suupen 0:5410d6e2bce7 188
suupen 0:5410d6e2bce7 189
suupen 0:5410d6e2bce7 190 uint8_t D_7seg[Z_ketaSuu]; // digit number display request 0:"0", 1:"1", ... , 9:"9", A:"A", B:"b", C:"C", D:"d", E:"E", F:"F"
suupen 2:cca0fd8ccb97 191 // [0]:digit1, [1]:digit2, ... ,[7]:digit8
suupen 0:5410d6e2bce7 192 uint8_t D_dot[Z_ketaSuu]; // digit dot display request 0:off 1(not 0):on
suupen 2:cca0fd8ccb97 193 // [0]:digit1, [1]:digit2, ... ,[7]:digit8
suupen 0:5410d6e2bce7 194
suupen 0:5410d6e2bce7 195
suupen 0:5410d6e2bce7 196 uint8_t D_7segGray[Z_ketaSuu][Z_segSuu]; // hyoji segment no gray data 0:syoto 1:min - 10:max
suupen 0:5410d6e2bce7 197
suupen 0:5410d6e2bce7 198 uint8_t DT_pwmGray[Z_grayMax + 1]; // gray data kara pwm data heno henkan table
suupen 0:5410d6e2bce7 199
suupen 2:cca0fd8ccb97 200 uint8_t D_comNull; // comX Null check No set (0:all com is NC 1:com1 connect, 2:com2 connect,...,8:com8 connect(all com connect)
suupen 0:5410d6e2bce7 201
suupen 0:5410d6e2bce7 202 uint8_t D_smooth; // Those who will be reading the LED display 0:smooth 1:hard
suupen 0:5410d6e2bce7 203 #define Z_smooth (0)
suupen 0:5410d6e2bce7 204 #define Z_hard (1)
suupen 0:5410d6e2bce7 205
suupen 0:5410d6e2bce7 206 uint8_t D_commonOn; // common On level set 0:Anode common 1:Cathode common
suupen 0:5410d6e2bce7 207 uint8_t D_commonOff;
suupen 0:5410d6e2bce7 208
suupen 0:5410d6e2bce7 209 uint8_t D_segmentOn; // segment On level set 0:Cathode common 1:Anode common
suupen 0:5410d6e2bce7 210 uint8_t D_segmentOff;
suupen 0:5410d6e2bce7 211 };
suupen 0:5410d6e2bce7 212
suupen 0:5410d6e2bce7 213 #endif // _SEVENSEGLED_H