このライブラリは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 02 14:03:00 2011 +0000
Revision:
2:cca0fd8ccb97
Parent:
1:3429249e30f9
Child:
3:f4680c84b347
Child:
4:33e035f6a337
V2.0  2011/12/02 seven segment LED 8digit.

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