k og
/
Demo_HT1621
Aitendo Segment LCD Demo, TS119-5, TS174
Diff: main.cpp
- Revision:
- 0:ba2d5d27fe5b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Sep 10 09:57:22 2016 +0000 @@ -0,0 +1,227 @@ +/** + * TEST + * TS119-3 3.3v it is't worked. + * TS119-5 3.3v it's worked. http://www.aitendo.com/product/5152 + * TS174 3.3v it's worked. http://www.aitendo.com/product/5153 + * http://www.holtek.com.tw/documents/10179/a33bf4b4-f0ef-4b77-94e4-3dd5d0c35f16 + * + * HT1621 Library + * https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/wirejungle/source-archive.zip + * + * reference + * http://jr4pdp.blog.enjoy.jp/myblog/2016/01/lcd-ts174nblpic-da92.html + * http://morecatlab.akiba.coocan.jp/lab/index.php/2015/10/segment-lcd/ +*/ +#include "mbed.h" +#include "HT1621.h" +#include "7seg_fonts.h" + +// ICON +#define ICON_ON true +#define ICON_OFF false +#define ICON_1 0 +#define ICON_COLON 1 +#define ICON_H 2 +#define ICON_TIME 3 +#define ICON_CAUTION 4 +#define ICON_ASTERISK 5 +#define ICON_POINTL 6 +#define ICON_POINTR 7 +#define UNIT_k 0b01000000 +#define UNIT_W 0b00001111 +#define UNIT_V 0b00001100 +#define UNIT_A 0b00010001 +#define UNIT_h 0b00100000 +#define UNIT_MD 0b10000000 + +#define BACKLIGHT_ON LED_A = 1 +#define BACKLIGHT_OFF LED_A = 0 +#define WAIT_TIME 1 + +#define BIASTEST + +#if defined(TARGET_ARCH_PRO) +HT1621 ht1621(D5, D4, D3, D2); +DigitalOut LED_A(D7); +DigitalOut LED_K(D6); +#elif defined(TARGET_LPC1768) +HT1621 ht1621(p24, p25, p26, p8); +DigitalOut LED_A(p10); +DigitalOut LED_K(p23); +#elif defined TARGET_NUCLEO_F446RE +HT1621 ht1621(D5, D4, D3, D2); +DigitalOut LED_A(D7); +DigitalOut LED_K(D6); +#elif defined TARGET_NUCLEO_F103RB +HT1621 ht1621(D5, D4, D3, D2); +DigitalOut LED_A(D7); +DigitalOut LED_K(D6); +#endif + + +#define MEM_MAX 9 +uint8_t MEM[MEM_MAX] = {0,0,0,0,0,0,0,0,0}; +char STR_BUF[MEM_MAX]; +uint8_t bias; + +void icon(uint8_t num, bool f) +{ + if (f) + { + MEM[num] = MEM[num] | 0x01; + } else + { + MEM[num] = MEM[num] & 0xFE; + } +} +void unit(uint8_t c) +{ + MEM[8] = c; +} + +void write_char(uint8_t col, char c) +{ + uint8_t num = c -0x20; + MEM[col] = (MEM[col] & 0x01) | fonts[num]; +} +void write_mem() +{ + for (int i =0; i<9; i++) { + ht1621.writeMem(i*2, (MEM[i]>>4) & 0x0F); + ht1621.writeMem(i*2+1, (MEM[i]) & 0x0F); + } +} + +void write_str(char *st) +{ + int stl, i, n; + char c; + stl = strlen(st); + n =0; + icon(ICON_COLON, ICON_OFF); + icon(ICON_POINTL, ICON_OFF); + icon(ICON_POINTR, ICON_OFF); + for (i=0; i<stl; i++) { + c = *st++; + if (c == ':') { + icon(ICON_COLON, ICON_ON); + } + else if (c == '.') { + if (n == 6) { + icon(ICON_POINTL, ICON_ON); + } else if (n == 7) { + icon(ICON_POINTR, ICON_ON); + } + } + else + { + write_char(n, c); + n++; + } + } +} + +void clear_mem(uint8_t data) +{ + for (int i = 0; i<MEM_MAX;i++){ + MEM[i] = data; + } + write_mem(); +} + +int main() { + ht1621.sendCommand(ht1621.BIAS_THIRD_4_COM); + LED_K = 0; + while(1) { + BACKLIGHT_ON; + write_char(0, '0'); + write_char(1, '1'); + write_char(2, '2'); + write_char(3, '3'); + write_char(4, '4'); + write_char(5, '5'); + write_char(6, '6'); + write_char(7, '7'); + write_mem(); + wait(WAIT_TIME); + write_char(0, '8'); + write_char(1, '9'); + write_char(2, 'A'); + write_char(3, 'B'); + write_char(4, 'C'); + write_char(5, 'D'); + write_char(6, 'E'); + write_char(7, 'F'); + write_mem(); + wait(WAIT_TIME); + write_char(0, 'G'); + write_char(1, 'H'); + write_char(2, 'I'); + write_char(3, 'J'); + write_char(4, 'K'); + write_char(5, 'L'); + write_char(6, 'M'); + write_char(7, 'N'); + write_mem(); + wait(WAIT_TIME); + write_char(0, 'O'); + write_char(1, 'P'); + write_char(2, 'Q'); + write_char(3, 'R'); + write_char(4, 'S'); + write_char(5, 'T'); + write_char(6, 'U'); + write_char(7, 'V'); + write_mem(); + wait(WAIT_TIME); + write_char(0, 'W'); + write_char(1, 'X'); + write_char(2, 'Y'); + write_char(3, 'Z'); + write_char(4, ' '); + write_char(5, '-'); + write_char(6, '='); + write_char(7, ' '); + write_mem(); + wait(WAIT_TIME); + write_char(0, '!'); + write_char(1, '"'); + write_char(2, '#'); + write_char(3, '$'); + write_char(4, '%'); + write_char(5, '&'); + write_char(6, '\''); + write_char(7, '('); + write_mem(); + wait(WAIT_TIME); + write_str("0123:45.67"); + write_mem(); + wait(WAIT_TIME); + write_str(" 999887.1"); + write_mem(); + wait(WAIT_TIME); + icon(ICON_1, ICON_ON); + icon(ICON_COLON, ICON_ON); + icon(ICON_H, ICON_ON); + icon(ICON_TIME, ICON_ON); + icon(ICON_CAUTION, ICON_ON); + icon(ICON_ASTERISK, ICON_ON); + icon(ICON_POINTL, ICON_ON); + icon(ICON_POINTR, ICON_ON); + unit(UNIT_k|UNIT_A|UNIT_h|UNIT_MD); + write_mem(); + wait(WAIT_TIME); + BACKLIGHT_OFF; + clear_mem(0x00); + wait(WAIT_TIME); + for (bias = 0 ; bias<0x10; bias++) { + #ifdef BIASTEST + ht1621.sendCommand(0b00100000|bias); + #endif + sprintf(STR_BUF, "8888%4d", bias); + write_str(STR_BUF); + write_mem(); + wait(WAIT_TIME); + } + } +}