k og / Mbed 2 deprecated Demo_HT1621

Dependencies:   HT1621 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /**
00002  * TEST
00003  * TS119-3  3.3v it is't worked.
00004  * TS119-5  3.3v it's worked. http://www.aitendo.com/product/5152
00005  * TS174    3.3v it's worked. http://www.aitendo.com/product/5153
00006  * http://www.holtek.com.tw/documents/10179/a33bf4b4-f0ef-4b77-94e4-3dd5d0c35f16
00007  * 
00008  * HT1621 Library
00009  * https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/wirejungle/source-archive.zip
00010  * 
00011  * reference
00012  * http://jr4pdp.blog.enjoy.jp/myblog/2016/01/lcd-ts174nblpic-da92.html
00013  * http://morecatlab.akiba.coocan.jp/lab/index.php/2015/10/segment-lcd/
00014 */
00015 #include "mbed.h"
00016 #include "HT1621.h"
00017 #include "7seg_fonts.h"
00018 
00019 // ICON
00020 #define ICON_ON true
00021 #define ICON_OFF false
00022 #define ICON_1 0
00023 #define ICON_COLON 1
00024 #define ICON_H          2
00025 #define ICON_TIME       3
00026 #define ICON_CAUTION    4
00027 #define ICON_ASTERISK   5
00028 #define ICON_POINTL     6
00029 #define ICON_POINTR     7
00030 #define UNIT_k          0b01000000
00031 #define UNIT_W          0b00001111
00032 #define UNIT_V          0b00001100
00033 #define UNIT_A          0b00010001
00034 #define UNIT_h          0b00100000
00035 #define UNIT_MD         0b10000000
00036 
00037 #define BACKLIGHT_ON    LED_A = 1
00038 #define BACKLIGHT_OFF   LED_A = 0
00039 #define WAIT_TIME 1
00040 
00041 #define BIASTEST
00042 
00043 #if defined(TARGET_ARCH_PRO)
00044 HT1621 ht1621(D5, D4, D3, D2);
00045 DigitalOut LED_A(D7);
00046 DigitalOut LED_K(D6);
00047 #elif defined(TARGET_LPC1768)
00048 HT1621 ht1621(p24, p25, p26, p8);
00049 DigitalOut LED_A(p10);
00050 DigitalOut LED_K(p23);
00051 #elif defined TARGET_NUCLEO_F446RE
00052 HT1621 ht1621(D5, D4, D3, D2);
00053 DigitalOut LED_A(D7);
00054 DigitalOut LED_K(D6);
00055 #elif defined TARGET_NUCLEO_F103RB
00056 HT1621 ht1621(D5, D4, D3, D2);
00057 DigitalOut LED_A(D7);
00058 DigitalOut LED_K(D6);
00059 #endif
00060 
00061 
00062 #define MEM_MAX 9
00063 uint8_t MEM[MEM_MAX] = {0,0,0,0,0,0,0,0,0};
00064 char STR_BUF[MEM_MAX];
00065 uint8_t bias;
00066 
00067 void icon(uint8_t num, bool f)
00068 {
00069   if (f)
00070   { 
00071     MEM[num] = MEM[num] | 0x01;  
00072   } else 
00073   {
00074     MEM[num] = MEM[num] & 0xFE;  
00075   }
00076 }
00077 void unit(uint8_t c)
00078 {
00079   MEM[8] = c;
00080 }
00081 
00082 void write_char(uint8_t col, char c)
00083 {
00084   uint8_t num = c -0x20;
00085   MEM[col] = (MEM[col] & 0x01) | fonts[num]; 
00086 }
00087 void write_mem()
00088 {
00089   for (int i =0; i<9; i++) {
00090     ht1621.writeMem(i*2,  (MEM[i]>>4) & 0x0F);
00091     ht1621.writeMem(i*2+1, (MEM[i]) & 0x0F);
00092   }
00093 }
00094 
00095 void write_str(char *st)
00096 {
00097   int stl, i, n;
00098   char c;
00099   stl = strlen(st);
00100   n =0;
00101   icon(ICON_COLON, ICON_OFF);  
00102   icon(ICON_POINTL, ICON_OFF);
00103   icon(ICON_POINTR, ICON_OFF);
00104   for (i=0; i<stl; i++) {
00105     c = *st++;
00106     if (c == ':') {
00107       icon(ICON_COLON, ICON_ON);
00108     }
00109     else if (c == '.') {
00110       if (n == 6) {
00111         icon(ICON_POINTL, ICON_ON);
00112       } else if (n == 7) {
00113         icon(ICON_POINTR, ICON_ON);
00114       }
00115     }
00116     else
00117     {
00118       write_char(n, c);
00119       n++;
00120     }
00121   }
00122 }
00123 
00124 void clear_mem(uint8_t data)
00125 {
00126   for (int i = 0; i<MEM_MAX;i++){
00127     MEM[i] = data;
00128   }
00129   write_mem();
00130 }
00131 
00132 int main() {
00133     ht1621.sendCommand(ht1621.BIAS_THIRD_4_COM);
00134     LED_K = 0;
00135     while(1) {
00136         BACKLIGHT_ON;
00137         write_char(0, '0');
00138         write_char(1, '1');
00139         write_char(2, '2');
00140         write_char(3, '3');
00141         write_char(4, '4');
00142         write_char(5, '5');
00143         write_char(6, '6');
00144         write_char(7, '7');
00145         write_mem();
00146         wait(WAIT_TIME);
00147         write_char(0, '8');
00148         write_char(1, '9');
00149         write_char(2, 'A');
00150         write_char(3, 'B');
00151         write_char(4, 'C');
00152         write_char(5, 'D');
00153         write_char(6, 'E');
00154         write_char(7, 'F');
00155         write_mem();
00156         wait(WAIT_TIME);
00157         write_char(0, 'G');
00158         write_char(1, 'H');
00159         write_char(2, 'I');
00160         write_char(3, 'J');
00161         write_char(4, 'K');
00162         write_char(5, 'L');
00163         write_char(6, 'M');
00164         write_char(7, 'N');
00165         write_mem();
00166         wait(WAIT_TIME);
00167         write_char(0, 'O');
00168         write_char(1, 'P');
00169         write_char(2, 'Q');
00170         write_char(3, 'R');
00171         write_char(4, 'S');
00172         write_char(5, 'T');
00173         write_char(6, 'U');
00174         write_char(7, 'V');
00175         write_mem();
00176         wait(WAIT_TIME);
00177         write_char(0, 'W');
00178         write_char(1, 'X');
00179         write_char(2, 'Y');
00180         write_char(3, 'Z');
00181         write_char(4, ' ');
00182         write_char(5, '-');
00183         write_char(6, '=');
00184         write_char(7, ' ');
00185         write_mem();
00186         wait(WAIT_TIME);
00187         write_char(0, '!');
00188         write_char(1, '"');
00189         write_char(2, '#');
00190         write_char(3, '$');
00191         write_char(4, '%');
00192         write_char(5, '&');
00193         write_char(6, '\'');
00194         write_char(7, '(');
00195         write_mem();
00196         wait(WAIT_TIME);
00197         write_str("0123:45.67");
00198         write_mem();
00199         wait(WAIT_TIME);
00200         write_str(" 999887.1");
00201         write_mem();
00202         wait(WAIT_TIME);
00203         icon(ICON_1, ICON_ON);
00204         icon(ICON_COLON, ICON_ON);
00205         icon(ICON_H, ICON_ON);
00206         icon(ICON_TIME, ICON_ON);
00207         icon(ICON_CAUTION, ICON_ON);
00208         icon(ICON_ASTERISK, ICON_ON);
00209         icon(ICON_POINTL, ICON_ON);
00210         icon(ICON_POINTR, ICON_ON);
00211         unit(UNIT_k|UNIT_A|UNIT_h|UNIT_MD);
00212         write_mem();
00213         wait(WAIT_TIME);
00214         BACKLIGHT_OFF;
00215         clear_mem(0x00);
00216         wait(WAIT_TIME);
00217         for (bias = 0 ; bias<0x10; bias++) {
00218         #ifdef BIASTEST
00219             ht1621.sendCommand(0b00100000|bias);
00220             #endif
00221             sprintf(STR_BUF, "8888%4d", bias);
00222             write_str(STR_BUF);
00223             write_mem();
00224             wait(WAIT_TIME);
00225         }
00226     }
00227 }