Aitendo Segment LCD Demo, TS119-5, TS174

Dependencies:   HT1621 mbed

Committer:
og
Date:
Sat Sep 10 09:57:22 2016 +0000
Revision:
0:ba2d5d27fe5b
TS174, TS119-5 Demo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
og 0:ba2d5d27fe5b 1 /**
og 0:ba2d5d27fe5b 2 * TEST
og 0:ba2d5d27fe5b 3 * TS119-3 3.3v it is't worked.
og 0:ba2d5d27fe5b 4 * TS119-5 3.3v it's worked. http://www.aitendo.com/product/5152
og 0:ba2d5d27fe5b 5 * TS174 3.3v it's worked. http://www.aitendo.com/product/5153
og 0:ba2d5d27fe5b 6 * http://www.holtek.com.tw/documents/10179/a33bf4b4-f0ef-4b77-94e4-3dd5d0c35f16
og 0:ba2d5d27fe5b 7 *
og 0:ba2d5d27fe5b 8 * HT1621 Library
og 0:ba2d5d27fe5b 9 * https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/wirejungle/source-archive.zip
og 0:ba2d5d27fe5b 10 *
og 0:ba2d5d27fe5b 11 * reference
og 0:ba2d5d27fe5b 12 * http://jr4pdp.blog.enjoy.jp/myblog/2016/01/lcd-ts174nblpic-da92.html
og 0:ba2d5d27fe5b 13 * http://morecatlab.akiba.coocan.jp/lab/index.php/2015/10/segment-lcd/
og 0:ba2d5d27fe5b 14 */
og 0:ba2d5d27fe5b 15 #include "mbed.h"
og 0:ba2d5d27fe5b 16 #include "HT1621.h"
og 0:ba2d5d27fe5b 17 #include "7seg_fonts.h"
og 0:ba2d5d27fe5b 18
og 0:ba2d5d27fe5b 19 // ICON
og 0:ba2d5d27fe5b 20 #define ICON_ON true
og 0:ba2d5d27fe5b 21 #define ICON_OFF false
og 0:ba2d5d27fe5b 22 #define ICON_1 0
og 0:ba2d5d27fe5b 23 #define ICON_COLON 1
og 0:ba2d5d27fe5b 24 #define ICON_H 2
og 0:ba2d5d27fe5b 25 #define ICON_TIME 3
og 0:ba2d5d27fe5b 26 #define ICON_CAUTION 4
og 0:ba2d5d27fe5b 27 #define ICON_ASTERISK 5
og 0:ba2d5d27fe5b 28 #define ICON_POINTL 6
og 0:ba2d5d27fe5b 29 #define ICON_POINTR 7
og 0:ba2d5d27fe5b 30 #define UNIT_k 0b01000000
og 0:ba2d5d27fe5b 31 #define UNIT_W 0b00001111
og 0:ba2d5d27fe5b 32 #define UNIT_V 0b00001100
og 0:ba2d5d27fe5b 33 #define UNIT_A 0b00010001
og 0:ba2d5d27fe5b 34 #define UNIT_h 0b00100000
og 0:ba2d5d27fe5b 35 #define UNIT_MD 0b10000000
og 0:ba2d5d27fe5b 36
og 0:ba2d5d27fe5b 37 #define BACKLIGHT_ON LED_A = 1
og 0:ba2d5d27fe5b 38 #define BACKLIGHT_OFF LED_A = 0
og 0:ba2d5d27fe5b 39 #define WAIT_TIME 1
og 0:ba2d5d27fe5b 40
og 0:ba2d5d27fe5b 41 #define BIASTEST
og 0:ba2d5d27fe5b 42
og 0:ba2d5d27fe5b 43 #if defined(TARGET_ARCH_PRO)
og 0:ba2d5d27fe5b 44 HT1621 ht1621(D5, D4, D3, D2);
og 0:ba2d5d27fe5b 45 DigitalOut LED_A(D7);
og 0:ba2d5d27fe5b 46 DigitalOut LED_K(D6);
og 0:ba2d5d27fe5b 47 #elif defined(TARGET_LPC1768)
og 0:ba2d5d27fe5b 48 HT1621 ht1621(p24, p25, p26, p8);
og 0:ba2d5d27fe5b 49 DigitalOut LED_A(p10);
og 0:ba2d5d27fe5b 50 DigitalOut LED_K(p23);
og 0:ba2d5d27fe5b 51 #elif defined TARGET_NUCLEO_F446RE
og 0:ba2d5d27fe5b 52 HT1621 ht1621(D5, D4, D3, D2);
og 0:ba2d5d27fe5b 53 DigitalOut LED_A(D7);
og 0:ba2d5d27fe5b 54 DigitalOut LED_K(D6);
og 0:ba2d5d27fe5b 55 #elif defined TARGET_NUCLEO_F103RB
og 0:ba2d5d27fe5b 56 HT1621 ht1621(D5, D4, D3, D2);
og 0:ba2d5d27fe5b 57 DigitalOut LED_A(D7);
og 0:ba2d5d27fe5b 58 DigitalOut LED_K(D6);
og 0:ba2d5d27fe5b 59 #endif
og 0:ba2d5d27fe5b 60
og 0:ba2d5d27fe5b 61
og 0:ba2d5d27fe5b 62 #define MEM_MAX 9
og 0:ba2d5d27fe5b 63 uint8_t MEM[MEM_MAX] = {0,0,0,0,0,0,0,0,0};
og 0:ba2d5d27fe5b 64 char STR_BUF[MEM_MAX];
og 0:ba2d5d27fe5b 65 uint8_t bias;
og 0:ba2d5d27fe5b 66
og 0:ba2d5d27fe5b 67 void icon(uint8_t num, bool f)
og 0:ba2d5d27fe5b 68 {
og 0:ba2d5d27fe5b 69 if (f)
og 0:ba2d5d27fe5b 70 {
og 0:ba2d5d27fe5b 71 MEM[num] = MEM[num] | 0x01;
og 0:ba2d5d27fe5b 72 } else
og 0:ba2d5d27fe5b 73 {
og 0:ba2d5d27fe5b 74 MEM[num] = MEM[num] & 0xFE;
og 0:ba2d5d27fe5b 75 }
og 0:ba2d5d27fe5b 76 }
og 0:ba2d5d27fe5b 77 void unit(uint8_t c)
og 0:ba2d5d27fe5b 78 {
og 0:ba2d5d27fe5b 79 MEM[8] = c;
og 0:ba2d5d27fe5b 80 }
og 0:ba2d5d27fe5b 81
og 0:ba2d5d27fe5b 82 void write_char(uint8_t col, char c)
og 0:ba2d5d27fe5b 83 {
og 0:ba2d5d27fe5b 84 uint8_t num = c -0x20;
og 0:ba2d5d27fe5b 85 MEM[col] = (MEM[col] & 0x01) | fonts[num];
og 0:ba2d5d27fe5b 86 }
og 0:ba2d5d27fe5b 87 void write_mem()
og 0:ba2d5d27fe5b 88 {
og 0:ba2d5d27fe5b 89 for (int i =0; i<9; i++) {
og 0:ba2d5d27fe5b 90 ht1621.writeMem(i*2, (MEM[i]>>4) & 0x0F);
og 0:ba2d5d27fe5b 91 ht1621.writeMem(i*2+1, (MEM[i]) & 0x0F);
og 0:ba2d5d27fe5b 92 }
og 0:ba2d5d27fe5b 93 }
og 0:ba2d5d27fe5b 94
og 0:ba2d5d27fe5b 95 void write_str(char *st)
og 0:ba2d5d27fe5b 96 {
og 0:ba2d5d27fe5b 97 int stl, i, n;
og 0:ba2d5d27fe5b 98 char c;
og 0:ba2d5d27fe5b 99 stl = strlen(st);
og 0:ba2d5d27fe5b 100 n =0;
og 0:ba2d5d27fe5b 101 icon(ICON_COLON, ICON_OFF);
og 0:ba2d5d27fe5b 102 icon(ICON_POINTL, ICON_OFF);
og 0:ba2d5d27fe5b 103 icon(ICON_POINTR, ICON_OFF);
og 0:ba2d5d27fe5b 104 for (i=0; i<stl; i++) {
og 0:ba2d5d27fe5b 105 c = *st++;
og 0:ba2d5d27fe5b 106 if (c == ':') {
og 0:ba2d5d27fe5b 107 icon(ICON_COLON, ICON_ON);
og 0:ba2d5d27fe5b 108 }
og 0:ba2d5d27fe5b 109 else if (c == '.') {
og 0:ba2d5d27fe5b 110 if (n == 6) {
og 0:ba2d5d27fe5b 111 icon(ICON_POINTL, ICON_ON);
og 0:ba2d5d27fe5b 112 } else if (n == 7) {
og 0:ba2d5d27fe5b 113 icon(ICON_POINTR, ICON_ON);
og 0:ba2d5d27fe5b 114 }
og 0:ba2d5d27fe5b 115 }
og 0:ba2d5d27fe5b 116 else
og 0:ba2d5d27fe5b 117 {
og 0:ba2d5d27fe5b 118 write_char(n, c);
og 0:ba2d5d27fe5b 119 n++;
og 0:ba2d5d27fe5b 120 }
og 0:ba2d5d27fe5b 121 }
og 0:ba2d5d27fe5b 122 }
og 0:ba2d5d27fe5b 123
og 0:ba2d5d27fe5b 124 void clear_mem(uint8_t data)
og 0:ba2d5d27fe5b 125 {
og 0:ba2d5d27fe5b 126 for (int i = 0; i<MEM_MAX;i++){
og 0:ba2d5d27fe5b 127 MEM[i] = data;
og 0:ba2d5d27fe5b 128 }
og 0:ba2d5d27fe5b 129 write_mem();
og 0:ba2d5d27fe5b 130 }
og 0:ba2d5d27fe5b 131
og 0:ba2d5d27fe5b 132 int main() {
og 0:ba2d5d27fe5b 133 ht1621.sendCommand(ht1621.BIAS_THIRD_4_COM);
og 0:ba2d5d27fe5b 134 LED_K = 0;
og 0:ba2d5d27fe5b 135 while(1) {
og 0:ba2d5d27fe5b 136 BACKLIGHT_ON;
og 0:ba2d5d27fe5b 137 write_char(0, '0');
og 0:ba2d5d27fe5b 138 write_char(1, '1');
og 0:ba2d5d27fe5b 139 write_char(2, '2');
og 0:ba2d5d27fe5b 140 write_char(3, '3');
og 0:ba2d5d27fe5b 141 write_char(4, '4');
og 0:ba2d5d27fe5b 142 write_char(5, '5');
og 0:ba2d5d27fe5b 143 write_char(6, '6');
og 0:ba2d5d27fe5b 144 write_char(7, '7');
og 0:ba2d5d27fe5b 145 write_mem();
og 0:ba2d5d27fe5b 146 wait(WAIT_TIME);
og 0:ba2d5d27fe5b 147 write_char(0, '8');
og 0:ba2d5d27fe5b 148 write_char(1, '9');
og 0:ba2d5d27fe5b 149 write_char(2, 'A');
og 0:ba2d5d27fe5b 150 write_char(3, 'B');
og 0:ba2d5d27fe5b 151 write_char(4, 'C');
og 0:ba2d5d27fe5b 152 write_char(5, 'D');
og 0:ba2d5d27fe5b 153 write_char(6, 'E');
og 0:ba2d5d27fe5b 154 write_char(7, 'F');
og 0:ba2d5d27fe5b 155 write_mem();
og 0:ba2d5d27fe5b 156 wait(WAIT_TIME);
og 0:ba2d5d27fe5b 157 write_char(0, 'G');
og 0:ba2d5d27fe5b 158 write_char(1, 'H');
og 0:ba2d5d27fe5b 159 write_char(2, 'I');
og 0:ba2d5d27fe5b 160 write_char(3, 'J');
og 0:ba2d5d27fe5b 161 write_char(4, 'K');
og 0:ba2d5d27fe5b 162 write_char(5, 'L');
og 0:ba2d5d27fe5b 163 write_char(6, 'M');
og 0:ba2d5d27fe5b 164 write_char(7, 'N');
og 0:ba2d5d27fe5b 165 write_mem();
og 0:ba2d5d27fe5b 166 wait(WAIT_TIME);
og 0:ba2d5d27fe5b 167 write_char(0, 'O');
og 0:ba2d5d27fe5b 168 write_char(1, 'P');
og 0:ba2d5d27fe5b 169 write_char(2, 'Q');
og 0:ba2d5d27fe5b 170 write_char(3, 'R');
og 0:ba2d5d27fe5b 171 write_char(4, 'S');
og 0:ba2d5d27fe5b 172 write_char(5, 'T');
og 0:ba2d5d27fe5b 173 write_char(6, 'U');
og 0:ba2d5d27fe5b 174 write_char(7, 'V');
og 0:ba2d5d27fe5b 175 write_mem();
og 0:ba2d5d27fe5b 176 wait(WAIT_TIME);
og 0:ba2d5d27fe5b 177 write_char(0, 'W');
og 0:ba2d5d27fe5b 178 write_char(1, 'X');
og 0:ba2d5d27fe5b 179 write_char(2, 'Y');
og 0:ba2d5d27fe5b 180 write_char(3, 'Z');
og 0:ba2d5d27fe5b 181 write_char(4, ' ');
og 0:ba2d5d27fe5b 182 write_char(5, '-');
og 0:ba2d5d27fe5b 183 write_char(6, '=');
og 0:ba2d5d27fe5b 184 write_char(7, ' ');
og 0:ba2d5d27fe5b 185 write_mem();
og 0:ba2d5d27fe5b 186 wait(WAIT_TIME);
og 0:ba2d5d27fe5b 187 write_char(0, '!');
og 0:ba2d5d27fe5b 188 write_char(1, '"');
og 0:ba2d5d27fe5b 189 write_char(2, '#');
og 0:ba2d5d27fe5b 190 write_char(3, '$');
og 0:ba2d5d27fe5b 191 write_char(4, '%');
og 0:ba2d5d27fe5b 192 write_char(5, '&');
og 0:ba2d5d27fe5b 193 write_char(6, '\'');
og 0:ba2d5d27fe5b 194 write_char(7, '(');
og 0:ba2d5d27fe5b 195 write_mem();
og 0:ba2d5d27fe5b 196 wait(WAIT_TIME);
og 0:ba2d5d27fe5b 197 write_str("0123:45.67");
og 0:ba2d5d27fe5b 198 write_mem();
og 0:ba2d5d27fe5b 199 wait(WAIT_TIME);
og 0:ba2d5d27fe5b 200 write_str(" 999887.1");
og 0:ba2d5d27fe5b 201 write_mem();
og 0:ba2d5d27fe5b 202 wait(WAIT_TIME);
og 0:ba2d5d27fe5b 203 icon(ICON_1, ICON_ON);
og 0:ba2d5d27fe5b 204 icon(ICON_COLON, ICON_ON);
og 0:ba2d5d27fe5b 205 icon(ICON_H, ICON_ON);
og 0:ba2d5d27fe5b 206 icon(ICON_TIME, ICON_ON);
og 0:ba2d5d27fe5b 207 icon(ICON_CAUTION, ICON_ON);
og 0:ba2d5d27fe5b 208 icon(ICON_ASTERISK, ICON_ON);
og 0:ba2d5d27fe5b 209 icon(ICON_POINTL, ICON_ON);
og 0:ba2d5d27fe5b 210 icon(ICON_POINTR, ICON_ON);
og 0:ba2d5d27fe5b 211 unit(UNIT_k|UNIT_A|UNIT_h|UNIT_MD);
og 0:ba2d5d27fe5b 212 write_mem();
og 0:ba2d5d27fe5b 213 wait(WAIT_TIME);
og 0:ba2d5d27fe5b 214 BACKLIGHT_OFF;
og 0:ba2d5d27fe5b 215 clear_mem(0x00);
og 0:ba2d5d27fe5b 216 wait(WAIT_TIME);
og 0:ba2d5d27fe5b 217 for (bias = 0 ; bias<0x10; bias++) {
og 0:ba2d5d27fe5b 218 #ifdef BIASTEST
og 0:ba2d5d27fe5b 219 ht1621.sendCommand(0b00100000|bias);
og 0:ba2d5d27fe5b 220 #endif
og 0:ba2d5d27fe5b 221 sprintf(STR_BUF, "8888%4d", bias);
og 0:ba2d5d27fe5b 222 write_str(STR_BUF);
og 0:ba2d5d27fe5b 223 write_mem();
og 0:ba2d5d27fe5b 224 wait(WAIT_TIME);
og 0:ba2d5d27fe5b 225 }
og 0:ba2d5d27fe5b 226 }
og 0:ba2d5d27fe5b 227 }