Seven-Segmet Numeric LED Display : LTC-4627 Dynamic drive. mbed - LTC-4627 direct drive

Dependencies:   mbed

Committer:
suupen
Date:
Tue Mar 01 11:42:37 2011 +0000
Revision:
0:a62a79548d00
Seven-Segment Numeric LED Display Dynamic drive sample program
http://www.youtube.com/watch?v=9f5sl4-In4U

Who changed what in which revision?

UserRevisionLine numberNew contents of line
suupen 0:a62a79548d00 1 /**********************************************************
suupen 0:a62a79548d00 2 * Attention : The comment on this file is written in Japanese.
suupen 0:a62a79548d00 3 *
suupen 0:a62a79548d00 4 * main.cpp
suupen 0:a62a79548d00 5 * dynamic kudou no sample program
suupen 0:a62a79548d00 6 * This is program to control LTC-4627(Seven-Segment Numeric LED Display) with mbed.
suupen 0:a62a79548d00 7 *
suupen 0:a62a79548d00 8 * LTC4627(4keta 7segment LED) o dynamic kudou suru.
suupen 0:a62a79548d00 9 * http://www.excesssolutions.com/mas_assets/acrobat/ES5721.pdf
suupen 0:a62a79548d00 10 * common shuturyoku wa 5 hon.
suupen 0:a62a79548d00 11 * segment shuturyoku wa 8 hon.
suupen 0:a62a79548d00 12 * 1hon no LED niwa 20[mA] nagasu no de teikou ha 165[ohm](165[ohm] = 3.3[V] / 20[mA])o tukau.165[ohm]ni chikai atai no 180[ohm]o tukau.
suupen 0:a62a79548d00 13 *
suupen 0:a62a79548d00 14 *
suupen 0:a62a79548d00 15 * LTC4627 to mbed no setuzoku kankei
suupen 0:a62a79548d00 16 * LTC4627 R(180[ohm]) mbed
suupen 0:a62a79548d00 17 * PinNo PinKinou (*1) Pin name (*2)
suupen 0:a62a79548d00 18 * 1 Common Anode Digit 1 - p20
suupen 0:a62a79548d00 19 * 2 Common Anode Digit 2 - p19
suupen 0:a62a79548d00 20 * 3 Cathode D R p18
suupen 0:a62a79548d00 21 * 4 Common Anode Digit L1,L2,L3 - p17
suupen 0:a62a79548d00 22 * 5 Cathode E R p16
suupen 0:a62a79548d00 23 * 6 Common Anode Digit 3 - p15
suupen 0:a62a79548d00 24 * 7 Cathode D.P R p14
suupen 0:a62a79548d00 25 * 8 Common Anode Digit 4 - p13
suupen 0:a62a79548d00 26 * 9 No Connection - -
suupen 0:a62a79548d00 27 * 10 No Pin - -
suupen 0:a62a79548d00 28 * 11 Cathode F R p25
suupen 0:a62a79548d00 29 * 12 No Pin - -
suupen 0:a62a79548d00 30 * 13 Cathode C, L3 R p24
suupen 0:a62a79548d00 31 * 14 Cathode A, L1 R p23
suupen 0:a62a79548d00 32 * 15 Cathode G R p22
suupen 0:a62a79548d00 33 * 16 Cathode B, L2 R p21
suupen 0:a62a79548d00 34 *
suupen 0:a62a79548d00 35 * *1 : "R" no tokoro wa LTC4627 to mbed no aidani teikou o chokuretu ni ireru.
suupen 0:a62a79548d00 36 * "-" wa teikou ha setuzoku sinai.
suupen 0:a62a79548d00 37 * *2 : subete "DigitalOut"
suupen 0:a62a79548d00 38 *
suupen 0:a62a79548d00 39 **********************************************************/
suupen 0:a62a79548d00 40
suupen 0:a62a79548d00 41
suupen 0:a62a79548d00 42 #include "mbed.h"
suupen 0:a62a79548d00 43
suupen 0:a62a79548d00 44 void dynamic_output(void);
suupen 0:a62a79548d00 45
suupen 0:a62a79548d00 46 // mbed pin no teigi
suupen 0:a62a79548d00 47 // common shuturyoku no setttei
suupen 0:a62a79548d00 48 DigitalOut com_1(p20);
suupen 0:a62a79548d00 49 DigitalOut com_2(p19);
suupen 0:a62a79548d00 50 DigitalOut com_3(p15);
suupen 0:a62a79548d00 51 DigitalOut com_4(p13);
suupen 0:a62a79548d00 52 DigitalOut com_L(p17); // colon
suupen 0:a62a79548d00 53
suupen 0:a62a79548d00 54 // segment shuturyoku no settei
suupen 0:a62a79548d00 55 DigitalOut seg_a(p23);
suupen 0:a62a79548d00 56 DigitalOut seg_b(p21);
suupen 0:a62a79548d00 57 DigitalOut seg_c(p24);
suupen 0:a62a79548d00 58 DigitalOut seg_d(p18);
suupen 0:a62a79548d00 59 DigitalOut seg_e(p16);
suupen 0:a62a79548d00 60 DigitalOut seg_f(p25);
suupen 0:a62a79548d00 61 DigitalOut seg_g(p22);
suupen 0:a62a79548d00 62 DigitalOut seg_p(p14); // DP
suupen 0:a62a79548d00 63
suupen 0:a62a79548d00 64 DigitalOut seg_col1(p23);
suupen 0:a62a79548d00 65 DigitalOut seg_col2(p21);
suupen 0:a62a79548d00 66 DigitalOut seg_col3(p24);
suupen 0:a62a79548d00 67
suupen 0:a62a79548d00 68 // 7segment no shuturyoku pattern
suupen 0:a62a79548d00 69 // seg: a b c d e f g p
suupen 0:a62a79548d00 70 // bit: 7 6 5 4 3 2 1 0
suupen 0:a62a79548d00 71 // ---------------------
suupen 0:a62a79548d00 72 #define D_0 (0xfc) // 0 1 1 1 1 1 1 0 0
suupen 0:a62a79548d00 73 #define D_1 (0x60) // 1 0 1 1 0 0 0 0 0
suupen 0:a62a79548d00 74 #define D_2 (0xda) // 2 1 1 0 1 1 0 1 0
suupen 0:a62a79548d00 75 #define D_3 (0xf2) // 3 1 1 1 1 0 0 1 0
suupen 0:a62a79548d00 76 #define D_4 (0x66) // 4 0 1 1 0 0 1 1 0
suupen 0:a62a79548d00 77 #define D_5 (0xb6) // 5 1 0 1 1 0 1 1 0
suupen 0:a62a79548d00 78 #define D_6 (0xbe) // 6 1 0 1 1 1 1 1 0
suupen 0:a62a79548d00 79 #define D_7 (0xe4) // 7 1 1 1 0 0 1 0 0
suupen 0:a62a79548d00 80 #define D_8 (0xfe) // 8 1 1 1 1 1 1 1 0
suupen 0:a62a79548d00 81 #define D_9 (0xf6) // 9 1 1 1 1 0 1 1 0
suupen 0:a62a79548d00 82
suupen 0:a62a79548d00 83
suupen 0:a62a79548d00 84 DigitalOut myled(LED1); // program dosa kakunin yo LED
suupen 0:a62a79548d00 85
suupen 0:a62a79548d00 86 unsigned char D_7seg[4]; // 7segment heno shuturyoku data kakunou you hensu
suupen 0:a62a79548d00 87 // [0]:1000 no kurai [1]:100 no kurai [2]:10 no kurai [3]:1 no kurai
suupen 0:a62a79548d00 88
suupen 0:a62a79548d00 89 /**************************************
suupen 0:a62a79548d00 90 * main
suupen 0:a62a79548d00 91 **************************************/
suupen 0:a62a79548d00 92 int main() {
suupen 0:a62a79548d00 93
suupen 0:a62a79548d00 94
suupen 0:a62a79548d00 95 int data = 0; // hyoji data (4keta no 7segment LED nanode 0 kara 9999 made hyoji dekiru)
suupen 0:a62a79548d00 96
suupen 0:a62a79548d00 97 float count = -1; // 0 kara hyoji saseru tameni -1 o settei suru
suupen 0:a62a79548d00 98
suupen 0:a62a79548d00 99 while(1) {
suupen 0:a62a79548d00 100
suupen 0:a62a79548d00 101 // program dosa kakunin yo LED tenmetu
suupen 0:a62a79548d00 102 myled = !myled;
suupen 0:a62a79548d00 103 wait(0.001000); // while{} o 1kai shori suru jikan o chosei(kokode jikan tubusi) (Seven segment refresh rate 1ms) check.1
suupen 0:a62a79548d00 104
suupen 0:a62a79548d00 105 // hyoji data no kousin
suupen 0:a62a79548d00 106 count = count + 1.000000; // while{} o 1kai shori surugoto no kasan su check.2
suupen 0:a62a79548d00 107 if(count > 9999){count = 0;} // saidaichi o 9999 ni seigen
suupen 0:a62a79548d00 108 data = (int)count;
suupen 0:a62a79548d00 109
suupen 0:a62a79548d00 110 // shuturyoku data no kousin
suupen 0:a62a79548d00 111 D_7seg[0] = data / 1000; // 1000 no kurai no data
suupen 0:a62a79548d00 112 D_7seg[1] = (data % 1000) / 100; // 100 no kurai no data
suupen 0:a62a79548d00 113 D_7seg[2] = (data % 100) / 10; // 10 no kurai no data
suupen 0:a62a79548d00 114 D_7seg[3] = (data % 10); // 1 no kurai no data
suupen 0:a62a79548d00 115
suupen 0:a62a79548d00 116 // dynamic shuturyoku shori
suupen 0:a62a79548d00 117 dynamic_output();
suupen 0:a62a79548d00 118 }
suupen 0:a62a79548d00 119 }
suupen 0:a62a79548d00 120
suupen 0:a62a79548d00 121 /**************************************
suupen 0:a62a79548d00 122 * dynamic_comAllClear
suupen 0:a62a79548d00 123 *
suupen 0:a62a79548d00 124 * common pin o subete OFF suru
suupen 0:a62a79548d00 125 **************************************/
suupen 0:a62a79548d00 126 void dynamic_comAllClear(void){
suupen 0:a62a79548d00 127 com_1 = 0;
suupen 0:a62a79548d00 128 com_2 = 0;
suupen 0:a62a79548d00 129 com_3 = 0;
suupen 0:a62a79548d00 130 com_4 = 0;
suupen 0:a62a79548d00 131 com_L = 0;
suupen 0:a62a79548d00 132 }
suupen 0:a62a79548d00 133
suupen 0:a62a79548d00 134 /**************************************
suupen 0:a62a79548d00 135 * dynamic_segAllClear
suupen 0:a62a79548d00 136 *
suupen 0:a62a79548d00 137 * segment pin o subete OFF suru
suupen 0:a62a79548d00 138 **************************************/
suupen 0:a62a79548d00 139 void dynamic_segAllClear(void){
suupen 0:a62a79548d00 140 seg_a = 1;
suupen 0:a62a79548d00 141 seg_b = 1;
suupen 0:a62a79548d00 142 seg_c = 1;
suupen 0:a62a79548d00 143 seg_d = 1;
suupen 0:a62a79548d00 144 seg_e = 1;
suupen 0:a62a79548d00 145 seg_f = 1;
suupen 0:a62a79548d00 146 seg_p = 1;
suupen 0:a62a79548d00 147 }
suupen 0:a62a79548d00 148
suupen 0:a62a79548d00 149 /**************************************
suupen 0:a62a79548d00 150 * dynamic_segDataSet
suupen 0:a62a79548d00 151 *
suupen 0:a62a79548d00 152 * segment pin ni shuturyoku data o settei
suupen 0:a62a79548d00 153 **************************************/
suupen 0:a62a79548d00 154 void dynamic_segDataSet(unsigned char data){
suupen 0:a62a79548d00 155 const unsigned char Z_segData[10] = {D_0, D_1, D_2, D_3, D_4, D_5, D_6, D_7, D_8, D_9,};
suupen 0:a62a79548d00 156 unsigned char work;
suupen 0:a62a79548d00 157
suupen 0:a62a79548d00 158 work = Z_segData[data];
suupen 0:a62a79548d00 159
suupen 0:a62a79548d00 160 seg_a = (work & 0x80) ? 0 : 1;
suupen 0:a62a79548d00 161 seg_b = (work & 0x40) ? 0 : 1;
suupen 0:a62a79548d00 162 seg_c = (work & 0x20) ? 0 : 1;
suupen 0:a62a79548d00 163 seg_d = (work & 0x10) ? 0 : 1;
suupen 0:a62a79548d00 164 seg_e = (work & 0x08) ? 0 : 1;
suupen 0:a62a79548d00 165 seg_f = (work & 0x04) ? 0 : 1;
suupen 0:a62a79548d00 166 seg_g = (work & 0x02) ? 0 : 1;
suupen 0:a62a79548d00 167 seg_p = (work & 0x01) ? 0 : 1;
suupen 0:a62a79548d00 168
suupen 0:a62a79548d00 169 }
suupen 0:a62a79548d00 170
suupen 0:a62a79548d00 171 /**************************************
suupen 0:a62a79548d00 172 * dynamic_output
suupen 0:a62a79548d00 173 *
suupen 0:a62a79548d00 174 * dynamic dosa saseru.
suupen 0:a62a79548d00 175 * kono kansu wo jiikou suru tabi ni common pin o kirikaeru
suupen 0:a62a79548d00 176 **************************************/
suupen 0:a62a79548d00 177 void dynamic_output(void){
suupen 0:a62a79548d00 178 static unsigned char M_seg = 0;
suupen 0:a62a79548d00 179
suupen 0:a62a79548d00 180 switch(M_seg){
suupen 0:a62a79548d00 181 case 0: // shoto
suupen 0:a62a79548d00 182 dynamic_comAllClear();
suupen 0:a62a79548d00 183 dynamic_segAllClear();
suupen 0:a62a79548d00 184
suupen 0:a62a79548d00 185 M_seg = 1;
suupen 0:a62a79548d00 186
suupen 0:a62a79548d00 187 break;
suupen 0:a62a79548d00 188 case 1: // common1 shuturyoku
suupen 0:a62a79548d00 189 dynamic_comAllClear();
suupen 0:a62a79548d00 190 dynamic_segDataSet(D_7seg[0]);
suupen 0:a62a79548d00 191 com_1 = 1;
suupen 0:a62a79548d00 192
suupen 0:a62a79548d00 193 M_seg = 2;
suupen 0:a62a79548d00 194 break;
suupen 0:a62a79548d00 195 case 2: // common2 shuturyoku
suupen 0:a62a79548d00 196 dynamic_comAllClear();
suupen 0:a62a79548d00 197 dynamic_segDataSet(D_7seg[1]);
suupen 0:a62a79548d00 198 com_2 = 1;
suupen 0:a62a79548d00 199
suupen 0:a62a79548d00 200 M_seg = 3;
suupen 0:a62a79548d00 201 break;
suupen 0:a62a79548d00 202 case 3: // common3 shuturyoku
suupen 0:a62a79548d00 203 dynamic_comAllClear();
suupen 0:a62a79548d00 204 dynamic_segDataSet(D_7seg[2]);
suupen 0:a62a79548d00 205 com_3 = 1;
suupen 0:a62a79548d00 206
suupen 0:a62a79548d00 207 M_seg = 4;
suupen 0:a62a79548d00 208 break;
suupen 0:a62a79548d00 209 case 4: // common4 shuturyoku
suupen 0:a62a79548d00 210 dynamic_comAllClear();
suupen 0:a62a79548d00 211 dynamic_segDataSet(D_7seg[3]);
suupen 0:a62a79548d00 212 com_4 = 1;
suupen 0:a62a79548d00 213
suupen 0:a62a79548d00 214 M_seg = 1;
suupen 0:a62a79548d00 215 break;
suupen 0:a62a79548d00 216 default: // M_seg no atai ga ijo no tokino shori
suupen 0:a62a79548d00 217 dynamic_comAllClear();
suupen 0:a62a79548d00 218 dynamic_segAllClear();
suupen 0:a62a79548d00 219 M_seg = 1;
suupen 0:a62a79548d00 220 break;
suupen 0:a62a79548d00 221
suupen 0:a62a79548d00 222 }
suupen 0:a62a79548d00 223
suupen 0:a62a79548d00 224 }