2017/07/03

Dependents:   mbed_vfd_ntp

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?

UserRevisionLine numberNew 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 }