このライブラリは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:
Sun Nov 20 00:22:05 2011 +0000
Revision:
0:5410d6e2bce7
Child:
1:3429249e30f9
V1.1 2011/11/20  This has changed the name of the library

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 0:5410d6e2bce7 24 /***********************************************************************/
suupen 0:5410d6e2bce7 25 /* */
suupen 0:5410d6e2bce7 26 /* ledDynamic.h */
suupen 0:5410d6e2bce7 27 /* */
suupen 0:5410d6e2bce7 28 /***********************************************************************/
suupen 0:5410d6e2bce7 29 #ifndef _SEVENSEGLED_H
suupen 0:5410d6e2bce7 30 #define _SEVENSEGLED_H
suupen 0:5410d6e2bce7 31
suupen 0:5410d6e2bce7 32 /** Seven segment Numeric LED control class
suupen 0:5410d6e2bce7 33 *
suupen 0:5410d6e2bce7 34 * Example:
suupen 0:5410d6e2bce7 35 * @code
suupen 0:5410d6e2bce7 36 * //-----------------------------------------------------------------------------
suupen 0:5410d6e2bce7 37 * //sevenSegmentLed Library Example
suupen 0:5410d6e2bce7 38 * //
suupen 0:5410d6e2bce7 39 * //This program by one every second counts, do a 4-digit seven-segment LED display.
suupen 0:5410d6e2bce7 40 * //
suupen 0:5410d6e2bce7 41 * //seven segment numeric LED Display : LTC4627P
suupen 0:5410d6e2bce7 42 * // http://www.excesssolutions.com/mas_assets/acrobat/ES5721.pdf
suupen 0:5410d6e2bce7 43 * //
suupen 0:5410d6e2bce7 44 * // LTC4627T Resister mbed
suupen 0:5410d6e2bce7 45 * // Pin No Function [ohm] Function
suupen 0:5410d6e2bce7 46 * // ---------------------------------------------------------------------------
suupen 0:5410d6e2bce7 47 * // 1 Common Anode Digit 1 - P29
suupen 0:5410d6e2bce7 48 * // 2 Common Anode Digit 2 - P13
suupen 0:5410d6e2bce7 49 * // 3 Cathode D 200 P22
suupen 0:5410d6e2bce7 50 * // 4 Common Anode L1,L2,L3 - -
suupen 0:5410d6e2bce7 51 * // 5 Cathode E 200 P24
suupen 0:5410d6e2bce7 52 * // 6 Common Anode Digit 3 - P25
suupen 0:5410d6e2bce7 53 * // 7 Cathode D.p. 200 P30
suupen 0:5410d6e2bce7 54 * // 8 Common Anode Digit 4 - P27
suupen 0:5410d6e2bce7 55 * // 9 No Connection - -
suupen 0:5410d6e2bce7 56 * // 10 No Pin - -
suupen 0:5410d6e2bce7 57 * // 11 Cathode F 200 P16
suupen 0:5410d6e2bce7 58 * // 12 No Pin - -
suupen 0:5410d6e2bce7 59 * // 13 Cathode C,L3 200 P17
suupen 0:5410d6e2bce7 60 * // 14 Cathode A,L1 200 P14
suupen 0:5410d6e2bce7 61 * // 15 Cathode G 200 P19
suupen 0:5410d6e2bce7 62 * // 16 Cathode B,L2 200 P20
suupen 0:5410d6e2bce7 63 * //---------------------------------------------------------------------------
suupen 0:5410d6e2bce7 64 * #include "mbed.h"
suupen 0:5410d6e2bce7 65 * #include "SevenSegLed.h"
suupen 0:5410d6e2bce7 66 *
suupen 0:5410d6e2bce7 67 * // common type (0:anode common 1:cathode common)
suupen 0:5410d6e2bce7 68 * // |
suupen 0:5410d6e2bce7 69 * // | display mode (0:smooth 1:hard)
suupen 0:5410d6e2bce7 70 * // | |
suupen 0:5410d6e2bce7 71 * // | | segA segB segC segD segE segF segG segP com1 com2 com3 com4
suupen 0:5410d6e2bce7 72 * // | | | | | | | | | | | | | |
suupen 0:5410d6e2bce7 73 * SevenSegLed segmentled(0, 0, p14, p20, p17, p22, p24, p16, p19, p30, p29, p13, p25, p27);
suupen 0:5410d6e2bce7 74 *
suupen 0:5410d6e2bce7 75 *
suupen 0:5410d6e2bce7 76 * // 1 2 3 4digit
suupen 0:5410d6e2bce7 77 * // | | | |
suupen 0:5410d6e2bce7 78 * 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 79 * uint8_t D_dot[4] = {0, 0, 0, 0}; // seven segment digit dotpoint. (0:off 1:on)
suupen 0:5410d6e2bce7 80 *
suupen 0:5410d6e2bce7 81 *
suupen 0:5410d6e2bce7 82 * Timer timer; // 1second timer
suupen 0:5410d6e2bce7 83 *
suupen 0:5410d6e2bce7 84 * int main() {
suupen 0:5410d6e2bce7 85 * uint16_t counter = 0;
suupen 0:5410d6e2bce7 86 *
suupen 0:5410d6e2bce7 87 * timer.start();
suupen 0:5410d6e2bce7 88 *
suupen 0:5410d6e2bce7 89 * while(1) {
suupen 0:5410d6e2bce7 90 * // After one second to start the process
suupen 0:5410d6e2bce7 91 * if(timer.read_ms() >= 1000){
suupen 0:5410d6e2bce7 92 * timer.reset();
suupen 0:5410d6e2bce7 93 * counter++;
suupen 0:5410d6e2bce7 94 *
suupen 0:5410d6e2bce7 95 * // Display digit data updates
suupen 0:5410d6e2bce7 96 * D_7seg[0] = (uint8_t)((counter & 0xF000) >> 12);
suupen 0:5410d6e2bce7 97 * D_7seg[1] = (uint8_t)((counter & 0x0F00) >> 8);
suupen 0:5410d6e2bce7 98 * D_7seg[2] = (uint8_t)((counter & 0x00F0) >> 4);
suupen 0:5410d6e2bce7 99 * D_7seg[3] = (uint8_t)(counter & 0x000F);
suupen 0:5410d6e2bce7 100 *
suupen 0:5410d6e2bce7 101 * // Display dot point data updates
suupen 0:5410d6e2bce7 102 * D_dot[0] = 0;
suupen 0:5410d6e2bce7 103 * D_dot[1] = 0;
suupen 0:5410d6e2bce7 104 * D_dot[2] = 0;
suupen 0:5410d6e2bce7 105 * D_dot[3] = 0;
suupen 0:5410d6e2bce7 106 *
suupen 0:5410d6e2bce7 107 * // dot point data set
suupen 0:5410d6e2bce7 108 * D_dot[counter & 0x0003] = 1;
suupen 0:5410d6e2bce7 109 * }
suupen 0:5410d6e2bce7 110 *
suupen 0:5410d6e2bce7 111 * // seven segment display to output data
suupen 0:5410d6e2bce7 112 * // This function, please repeat the process in less than 1ms.
suupen 0:5410d6e2bce7 113 * segmentled.SevenSegLed_main(D_7seg, D_dot);
suupen 0:5410d6e2bce7 114 *
suupen 0:5410d6e2bce7 115 * }
suupen 0:5410d6e2bce7 116 * }
suupen 0:5410d6e2bce7 117 * @endcode
suupen 0:5410d6e2bce7 118 */
suupen 0:5410d6e2bce7 119
suupen 0:5410d6e2bce7 120
suupen 0:5410d6e2bce7 121
suupen 0:5410d6e2bce7 122 #include "types.h"
suupen 0:5410d6e2bce7 123
suupen 0:5410d6e2bce7 124 class SevenSegLed {
suupen 0:5410d6e2bce7 125 public:
suupen 0:5410d6e2bce7 126
suupen 0:5410d6e2bce7 127
suupen 0:5410d6e2bce7 128
suupen 0:5410d6e2bce7 129 /** Create a seven segment led array object connected to the specified DigitalOut pin
suupen 0:5410d6e2bce7 130 * @param commonPole The polarity of the seven segment led common 0:Anode common, 1:Cathode common
suupen 0:5410d6e2bce7 131 * @param smooth Reading the LED display method. 0:Smooth changing the LED display in one second 1:Quickly changing the LED display
suupen 0:5410d6e2bce7 132 * @param seg_a - seg_p DigitalOut pin to connect to. To provide members with an array of uint8_t digit minutes. 4 digits maximum
suupen 0:5410d6e2bce7 133 * @param com_1 - com_4 DigitalOut pin to connect to. To provide members with an array of uint8_t digit minutes. 4 digits maximum
suupen 0:5410d6e2bce7 134 */
suupen 0:5410d6e2bce7 135 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, PinName com_1 = NC, PinName com_2 = NC, PinName com_3 = NC, PinName com_4 = NC);
suupen 0:5410d6e2bce7 136
suupen 0:5410d6e2bce7 137 /** Data set to the seven segment LED display
suupen 0:5410d6e2bce7 138 * @param number Array variable address pointer of Numerical data 0 - 9,A - F : The figures show, 0x10:off
suupen 0:5410d6e2bce7 139 * @param dot Array variable address pointer of dot data 0:off 1:on
suupen 0:5410d6e2bce7 140 */
suupen 0:5410d6e2bce7 141 void SevenSegLed_main(uint8_t* number, uint8_t* dot);
suupen 0:5410d6e2bce7 142
suupen 0:5410d6e2bce7 143 private:
suupen 0:5410d6e2bce7 144 void segmentGrayDataKosin(void);
suupen 0:5410d6e2bce7 145 void comAllClear(void);
suupen 0:5410d6e2bce7 146 void segAllClear(void);
suupen 0:5410d6e2bce7 147 void segDataSet(uint8_t keta);
suupen 0:5410d6e2bce7 148 void output(void);
suupen 0:5410d6e2bce7 149
suupen 0:5410d6e2bce7 150 // pin set_seg, _com;
suupen 0:5410d6e2bce7 151 DigitalOut _seg_a, _seg_b, _seg_c, _seg_d, _seg_e, _seg_f, _seg_g, _seg_p;
suupen 0:5410d6e2bce7 152 DigitalOut _com_1, _com_2, _com_3, _com_4;
suupen 0:5410d6e2bce7 153
suupen 0:5410d6e2bce7 154 Ticker timer;
suupen 0:5410d6e2bce7 155
suupen 0:5410d6e2bce7 156 #define Z_ketaSuu (4) // 7segment no keta suu
suupen 0:5410d6e2bce7 157 #define Z_segSuu (8) // 7segmetn no segment suu (a,b,...,g,Dp)
suupen 0:5410d6e2bce7 158 #define Z_grayMax (100) // grayData max 100 kaicho
suupen 0:5410d6e2bce7 159 #define Z_pwmGrayMax (100) // pwm max (led heno pwm syuturyoku no max)
suupen 0:5410d6e2bce7 160
suupen 0:5410d6e2bce7 161
suupen 0:5410d6e2bce7 162 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 0:5410d6e2bce7 163 // [0]:digit1, [1]:digit2, ... ,[3]:digit4
suupen 0:5410d6e2bce7 164 uint8_t D_dot[Z_ketaSuu]; // digit dot display request 0:off 1(not 0):on
suupen 0:5410d6e2bce7 165 // [0]:digit1, [1]:digit2, ... ,[3]:digit4
suupen 0:5410d6e2bce7 166
suupen 0:5410d6e2bce7 167
suupen 0:5410d6e2bce7 168 uint8_t D_7segGray[Z_ketaSuu][Z_segSuu]; // hyoji segment no gray data 0:syoto 1:min - 10:max
suupen 0:5410d6e2bce7 169
suupen 0:5410d6e2bce7 170 uint8_t DT_pwmGray[Z_grayMax + 1]; // gray data kara pwm data heno henkan table
suupen 0:5410d6e2bce7 171
suupen 0:5410d6e2bce7 172 uint8_t D_comNull; // comX Null check No set (0:all com is NC 1:com1 connect, 2:com2 connect,...,4:com4 connect(all com connect)
suupen 0:5410d6e2bce7 173
suupen 0:5410d6e2bce7 174 uint8_t D_smooth; // Those who will be reading the LED display 0:smooth 1:hard
suupen 0:5410d6e2bce7 175 #define Z_smooth (0)
suupen 0:5410d6e2bce7 176 #define Z_hard (1)
suupen 0:5410d6e2bce7 177
suupen 0:5410d6e2bce7 178 uint8_t D_commonOn; // common On level set 0:Anode common 1:Cathode common
suupen 0:5410d6e2bce7 179 uint8_t D_commonOff;
suupen 0:5410d6e2bce7 180
suupen 0:5410d6e2bce7 181 uint8_t D_segmentOn; // segment On level set 0:Cathode common 1:Anode common
suupen 0:5410d6e2bce7 182 uint8_t D_segmentOff;
suupen 0:5410d6e2bce7 183 };
suupen 0:5410d6e2bce7 184
suupen 0:5410d6e2bce7 185 #endif // _SEVENSEGLED_H