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