http://mbed.org/users/okini3939/notebook/tsutenkaku/
Dependencies: GSwifi (old) WDT mbed
Fork of GSwifi_denki-yohou by
7seg.cpp@0:d8a2cab7091c, 2012-07-10 (annotated)
- Committer:
- okini3939
- Date:
- Tue Jul 10 05:28:10 2012 +0000
- Revision:
- 0:d8a2cab7091c
- Child:
- 1:beff52210994
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:d8a2cab7091c | 1 | #include "mbed.h" |
okini3939 | 0:d8a2cab7091c | 2 | #include "7seg.h" |
okini3939 | 0:d8a2cab7091c | 3 | |
okini3939 | 0:d8a2cab7091c | 4 | static DigitalOut led_k[8] = {p34, p36, p26, p24, p23, p35, p30, p25}; |
okini3939 | 0:d8a2cab7091c | 5 | static DigitalOut led_a[4] = {p16, p17, p18, p19}; |
okini3939 | 0:d8a2cab7091c | 6 | static Ticker tick; |
okini3939 | 0:d8a2cab7091c | 7 | |
okini3939 | 0:d8a2cab7091c | 8 | static int ledbuf[4] = {-1, -1, -1, -1}; |
okini3939 | 0:d8a2cab7091c | 9 | const int digits[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; |
okini3939 | 0:d8a2cab7091c | 10 | |
okini3939 | 0:d8a2cab7091c | 11 | void leddisp () { |
okini3939 | 0:d8a2cab7091c | 12 | static int n = 0; |
okini3939 | 0:d8a2cab7091c | 13 | int i, bit; |
okini3939 | 0:d8a2cab7091c | 14 | |
okini3939 | 0:d8a2cab7091c | 15 | for (i = 0; i < 8; i ++) { |
okini3939 | 0:d8a2cab7091c | 16 | led_k[i] = 1; |
okini3939 | 0:d8a2cab7091c | 17 | } |
okini3939 | 0:d8a2cab7091c | 18 | led_a[n] = 1; |
okini3939 | 0:d8a2cab7091c | 19 | |
okini3939 | 0:d8a2cab7091c | 20 | n ++; |
okini3939 | 0:d8a2cab7091c | 21 | if (n >= 4) n = 0; |
okini3939 | 0:d8a2cab7091c | 22 | |
okini3939 | 0:d8a2cab7091c | 23 | if (ledbuf[n] >= 0) { |
okini3939 | 0:d8a2cab7091c | 24 | bit = 1; |
okini3939 | 0:d8a2cab7091c | 25 | for (i = 0; i < 7; i ++) { |
okini3939 | 0:d8a2cab7091c | 26 | led_k[i] = digits[ledbuf[n] & 0x7f] & bit ? 0 : 1; |
okini3939 | 0:d8a2cab7091c | 27 | bit = bit << 1; |
okini3939 | 0:d8a2cab7091c | 28 | } |
okini3939 | 0:d8a2cab7091c | 29 | led_k[7] = ledbuf[n] & 0x80 ? 0 : 1; |
okini3939 | 0:d8a2cab7091c | 30 | } |
okini3939 | 0:d8a2cab7091c | 31 | led_a[n] = 0; |
okini3939 | 0:d8a2cab7091c | 32 | } |
okini3939 | 0:d8a2cab7091c | 33 | |
okini3939 | 0:d8a2cab7091c | 34 | void writeled (int num, int dot, int place) { |
okini3939 | 0:d8a2cab7091c | 35 | if (num >= 1000 && place & 0x08) { |
okini3939 | 0:d8a2cab7091c | 36 | ledbuf[0] = num / 1000; |
okini3939 | 0:d8a2cab7091c | 37 | } else { |
okini3939 | 0:d8a2cab7091c | 38 | ledbuf[0] = -1; |
okini3939 | 0:d8a2cab7091c | 39 | } |
okini3939 | 0:d8a2cab7091c | 40 | if (num >= 100 && place & 0x04) { |
okini3939 | 0:d8a2cab7091c | 41 | ledbuf[1] = (num / 100) % 10; |
okini3939 | 0:d8a2cab7091c | 42 | } else { |
okini3939 | 0:d8a2cab7091c | 43 | ledbuf[1] = -1; |
okini3939 | 0:d8a2cab7091c | 44 | } |
okini3939 | 0:d8a2cab7091c | 45 | if (num >= 10 && place & 0x02) { |
okini3939 | 0:d8a2cab7091c | 46 | ledbuf[2] = (num / 10) % 10; |
okini3939 | 0:d8a2cab7091c | 47 | } else { |
okini3939 | 0:d8a2cab7091c | 48 | ledbuf[2] = -1; |
okini3939 | 0:d8a2cab7091c | 49 | } |
okini3939 | 0:d8a2cab7091c | 50 | if (place & 0x01) { |
okini3939 | 0:d8a2cab7091c | 51 | ledbuf[3] = num % 10; |
okini3939 | 0:d8a2cab7091c | 52 | } else { |
okini3939 | 0:d8a2cab7091c | 53 | ledbuf[3] = -1; |
okini3939 | 0:d8a2cab7091c | 54 | } |
okini3939 | 0:d8a2cab7091c | 55 | |
okini3939 | 0:d8a2cab7091c | 56 | if (dot >= 1 && dot <= 4) { |
okini3939 | 0:d8a2cab7091c | 57 | ledbuf[dot - 1] |= 0x80; |
okini3939 | 0:d8a2cab7091c | 58 | } |
okini3939 | 0:d8a2cab7091c | 59 | } |
okini3939 | 0:d8a2cab7091c | 60 | |
okini3939 | 0:d8a2cab7091c | 61 | void initled () { |
okini3939 | 0:d8a2cab7091c | 62 | int i; |
okini3939 | 0:d8a2cab7091c | 63 | |
okini3939 | 0:d8a2cab7091c | 64 | for (i = 0; i < 4; i ++) { |
okini3939 | 0:d8a2cab7091c | 65 | led_a[i] = 1; |
okini3939 | 0:d8a2cab7091c | 66 | } |
okini3939 | 0:d8a2cab7091c | 67 | for (i = 0; i < 8; i ++) { |
okini3939 | 0:d8a2cab7091c | 68 | led_k[i] = 1; |
okini3939 | 0:d8a2cab7091c | 69 | } |
okini3939 | 0:d8a2cab7091c | 70 | } |
okini3939 | 0:d8a2cab7091c | 71 | |
okini3939 | 0:d8a2cab7091c | 72 | void startled () { |
okini3939 | 0:d8a2cab7091c | 73 | tick.attach_us(&leddisp, 2500); // 400Hz |
okini3939 | 0:d8a2cab7091c | 74 | } |