2017/07/03
kt_vfd.cpp@1:e1e942d03093, 2017-07-11 (annotated)
- Committer:
- kojie
- Date:
- Tue Jul 11 23:41:56 2017 +0000
- Revision:
- 1:e1e942d03093
- Parent:
- 0:94347d9bbcf4
2017/07/12
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kojie | 0:94347d9bbcf4 | 1 | /** |
kojie | 0:94347d9bbcf4 | 2 | * @bref VFD class imprementation |
kojie | 1:e1e942d03093 | 3 | * for GU256X128C-3900 |
kojie | 0:94347d9bbcf4 | 4 | */ |
kojie | 0:94347d9bbcf4 | 5 | #include "mbed.h" |
kojie | 0:94347d9bbcf4 | 6 | #include "kt_vfd.h" |
kojie | 0:94347d9bbcf4 | 7 | |
kojie | 0:94347d9bbcf4 | 8 | KT_VFD::KT_VFD(PinName rd, PinName wr, |
kojie | 0:94347d9bbcf4 | 9 | PinName d0, PinName d1, PinName d2, PinName d3, |
kojie | 0:94347d9bbcf4 | 10 | PinName d4, PinName d5, PinName d6, PinName d7) : |
kojie | 0:94347d9bbcf4 | 11 | _rd(rd), _wr(wr), |
kojie | 0:94347d9bbcf4 | 12 | _d(d0, d1, d2, d3, d4, d5, d6, d7) |
kojie | 0:94347d9bbcf4 | 13 | { |
kojie | 0:94347d9bbcf4 | 14 | _rd = 1 ; |
kojie | 0:94347d9bbcf4 | 15 | _wr = 1 ; |
kojie | 0:94347d9bbcf4 | 16 | |
kojie | 0:94347d9bbcf4 | 17 | wait_ms(100) ; |
kojie | 1:e1e942d03093 | 18 | write_byte(0x1b) ; |
kojie | 1:e1e942d03093 | 19 | write_byte(0x40) ; |
kojie | 0:94347d9bbcf4 | 20 | wait_ms(100) ; |
kojie | 0:94347d9bbcf4 | 21 | } |
kojie | 0:94347d9bbcf4 | 22 | |
kojie | 1:e1e942d03093 | 23 | void KT_VFD::write_mode(unsigned char mode) |
kojie | 1:e1e942d03093 | 24 | { |
kojie | 1:e1e942d03093 | 25 | write_byte(0x1f) ; |
kojie | 1:e1e942d03093 | 26 | write_byte(0x28) ; |
kojie | 1:e1e942d03093 | 27 | write_byte(0x77) ; |
kojie | 1:e1e942d03093 | 28 | write_byte(0x10) ; |
kojie | 1:e1e942d03093 | 29 | write_byte(mode) ; |
kojie | 1:e1e942d03093 | 30 | } |
kojie | 1:e1e942d03093 | 31 | |
kojie | 1:e1e942d03093 | 32 | void KT_VFD::disp_mode(unsigned char mode) |
kojie | 1:e1e942d03093 | 33 | { |
kojie | 1:e1e942d03093 | 34 | write_byte(0x1f) ; |
kojie | 1:e1e942d03093 | 35 | write_byte(mode) ; |
kojie | 1:e1e942d03093 | 36 | } |
kojie | 1:e1e942d03093 | 37 | |
kojie | 1:e1e942d03093 | 38 | void KT_VFD::scroll_speed(unsigned char n) |
kojie | 0:94347d9bbcf4 | 39 | { |
kojie | 1:e1e942d03093 | 40 | write_byte(0x1f) ; |
kojie | 1:e1e942d03093 | 41 | write_byte(0x73) ; |
kojie | 1:e1e942d03093 | 42 | write_byte(n) ; // 0x00 - 0x1f: |
kojie | 1:e1e942d03093 | 43 | } |
kojie | 1:e1e942d03093 | 44 | |
kojie | 1:e1e942d03093 | 45 | void KT_VFD::scroll_act(unsigned int w, unsigned int c, unsigned char s) |
kojie | 1:e1e942d03093 | 46 | { |
kojie | 1:e1e942d03093 | 47 | write_byte(0x1f) ; |
kojie | 1:e1e942d03093 | 48 | write_byte(0x28) ; |
kojie | 1:e1e942d03093 | 49 | write_byte(0x61) ; |
kojie | 1:e1e942d03093 | 50 | write_byte(0x10) ; |
kojie | 1:e1e942d03093 | 51 | write_byte(w%0x100) ; |
kojie | 1:e1e942d03093 | 52 | write_byte(w/0x100) ; |
kojie | 1:e1e942d03093 | 53 | write_byte(c%0x100) ; |
kojie | 1:e1e942d03093 | 54 | write_byte(c/0x100) ; |
kojie | 1:e1e942d03093 | 55 | write_byte(s) ; |
kojie | 0:94347d9bbcf4 | 56 | } |
kojie | 0:94347d9bbcf4 | 57 | |
kojie | 0:94347d9bbcf4 | 58 | void KT_VFD::cls() |
kojie | 0:94347d9bbcf4 | 59 | { |
kojie | 1:e1e942d03093 | 60 | write_byte(0x0C) ; |
kojie | 0:94347d9bbcf4 | 61 | locate(0, 0) ; |
kojie | 0:94347d9bbcf4 | 62 | } |
kojie | 0:94347d9bbcf4 | 63 | |
kojie | 0:94347d9bbcf4 | 64 | void KT_VFD::locate(unsigned int x, unsigned int y) |
kojie | 0:94347d9bbcf4 | 65 | { |
kojie | 1:e1e942d03093 | 66 | write_byte(0x1f) ; |
kojie | 1:e1e942d03093 | 67 | write_byte(0x24) ; |
kojie | 1:e1e942d03093 | 68 | write_byte(x % 0x100) ; // xL |
kojie | 1:e1e942d03093 | 69 | write_byte(x / 0x100) ; // xH |
kojie | 1:e1e942d03093 | 70 | write_byte(y % 0x100) ; // yL |
kojie | 1:e1e942d03093 | 71 | write_byte(y / 0x100) ; // yH |
kojie | 0:94347d9bbcf4 | 72 | } |
kojie | 0:94347d9bbcf4 | 73 | |
kojie | 0:94347d9bbcf4 | 74 | void KT_VFD::lf() |
kojie | 0:94347d9bbcf4 | 75 | { |
kojie | 1:e1e942d03093 | 76 | write_byte(0x0a) ; |
kojie | 0:94347d9bbcf4 | 77 | } |
kojie | 0:94347d9bbcf4 | 78 | |
kojie | 0:94347d9bbcf4 | 79 | void KT_VFD::cr() |
kojie | 0:94347d9bbcf4 | 80 | { |
kojie | 1:e1e942d03093 | 81 | write_byte(0x0d) ; |
kojie | 1:e1e942d03093 | 82 | } |
kojie | 1:e1e942d03093 | 83 | |
kojie | 1:e1e942d03093 | 84 | void KT_VFD::font_size(unsigned char m) |
kojie | 1:e1e942d03093 | 85 | { |
kojie | 1:e1e942d03093 | 86 | write_byte(0x1f) ; |
kojie | 1:e1e942d03093 | 87 | write_byte(0x28) ; |
kojie | 1:e1e942d03093 | 88 | write_byte(0x67) ; |
kojie | 1:e1e942d03093 | 89 | write_byte(0x01) ; |
kojie | 1:e1e942d03093 | 90 | write_byte(m) ; |
kojie | 1:e1e942d03093 | 91 | } |
kojie | 1:e1e942d03093 | 92 | |
kojie | 1:e1e942d03093 | 93 | void KT_VFD::char_ext(unsigned char x, unsigned char y) |
kojie | 1:e1e942d03093 | 94 | { |
kojie | 1:e1e942d03093 | 95 | write_byte(0x1f) ; |
kojie | 1:e1e942d03093 | 96 | write_byte(0x28) ; |
kojie | 1:e1e942d03093 | 97 | write_byte(0x67) ; |
kojie | 1:e1e942d03093 | 98 | write_byte(0x40) ; |
kojie | 1:e1e942d03093 | 99 | write_byte(x) ; |
kojie | 1:e1e942d03093 | 100 | write_byte(y) ; |
kojie | 0:94347d9bbcf4 | 101 | } |
kojie | 0:94347d9bbcf4 | 102 | |
kojie | 0:94347d9bbcf4 | 103 | int KT_VFD::_putc(int c) |
kojie | 0:94347d9bbcf4 | 104 | { |
kojie | 0:94347d9bbcf4 | 105 | if (c == '\n') { |
kojie | 0:94347d9bbcf4 | 106 | cr() ; |
kojie | 0:94347d9bbcf4 | 107 | lf() ; |
kojie | 0:94347d9bbcf4 | 108 | } else { |
kojie | 1:e1e942d03093 | 109 | write_byte(c) ; |
kojie | 0:94347d9bbcf4 | 110 | } |
kojie | 0:94347d9bbcf4 | 111 | return 0 ; |
kojie | 0:94347d9bbcf4 | 112 | } |
kojie | 0:94347d9bbcf4 | 113 | |
kojie | 0:94347d9bbcf4 | 114 | int KT_VFD::_getc() |
kojie | 0:94347d9bbcf4 | 115 | { |
kojie | 0:94347d9bbcf4 | 116 | return -1 ; |
kojie | 0:94347d9bbcf4 | 117 | } |
kojie | 0:94347d9bbcf4 | 118 | |
kojie | 1:e1e942d03093 | 119 | void KT_VFD::write_byte(unsigned char value) |
kojie | 0:94347d9bbcf4 | 120 | { |
kojie | 1:e1e942d03093 | 121 | #if 0 |
kojie | 0:94347d9bbcf4 | 122 | bool ok ; |
kojie | 0:94347d9bbcf4 | 123 | _d[7] = 0 ; |
kojie | 0:94347d9bbcf4 | 124 | do { |
kojie | 0:94347d9bbcf4 | 125 | _rd = 0 ; |
kojie | 0:94347d9bbcf4 | 126 | wait_us(0.08) ; |
kojie | 0:94347d9bbcf4 | 127 | ok = _d[7] ; |
kojie | 0:94347d9bbcf4 | 128 | _rd = 1 ; |
kojie | 0:94347d9bbcf4 | 129 | } while (ok) ; |
kojie | 0:94347d9bbcf4 | 130 | _d[7] = 1 ; |
kojie | 1:e1e942d03093 | 131 | #else |
kojie | 1:e1e942d03093 | 132 | while (!_rd) ; |
kojie | 1:e1e942d03093 | 133 | #endif |
kojie | 0:94347d9bbcf4 | 134 | |
kojie | 0:94347d9bbcf4 | 135 | _d = value ; |
kojie | 0:94347d9bbcf4 | 136 | _wr = 0 ; |
kojie | 0:94347d9bbcf4 | 137 | wait_us(0.11) ; |
kojie | 0:94347d9bbcf4 | 138 | _wr = 1 ; |
kojie | 1:e1e942d03093 | 139 | // wait_us(1.6) ; |
kojie | 1:e1e942d03093 | 140 | wait_us(16) ; |
kojie | 0:94347d9bbcf4 | 141 | } |