VFD(FUTABA GP1059A01)にFONTX2形式の16ドットフォントを表示します。

Dependencies:   mbed

Revision:
1:c40b9c81a2ba
Parent:
0:f4f140765442
--- a/main.cpp	Thu Nov 03 10:44:37 2011 +0000
+++ b/main.cpp	Sat Nov 12 05:47:37 2011 +0000
@@ -5,13 +5,13 @@
 #include "vfd_gp1059.h"
 
 /*
-=====================
-GP1059A01(I/O)
----------------------
+=========================
+FUTABA VFD GP1059A01(I/O)
+-------------------------
 p9     1 (D0)  I/O
-p10     2 (D1)  I/O
-p11     3 (D2)  I/O
-p12     4 (D3)  I/O
+p10    2 (D1)  I/O
+p11    3 (D2)  I/O
+p12    4 (D3)  I/O
 p13    5 (D4)  I/O
 p14    6 (D5)  I/O
 p15    7 (D6)  I/O
@@ -39,7 +39,6 @@
 DigitalOut led3(LED3);
 DigitalOut led4(LED4);
 
-
 const uint8_t LOW = 0;
 
 unsigned char reverse_bit(unsigned char x){
@@ -53,9 +52,6 @@
     return(y);
 }
 
-
-
-
 //
 // FONTX2 test routine
 // @gingaxx
@@ -67,26 +63,24 @@
 
 int cx = 0;
 int cy = 0;
-int offsety = 0;
-bool kstate = false;
-unsigned char kbuf;
-
+//int offsety = 0;
+//bool kstate = false;
+//unsigned char kbuf;
 
-    FILE *fp;   //File open buffer
+FILE *fp;   // File open buffer
 
-    unsigned short start[92], end[92];
-    unsigned char font[64];              
+unsigned short  start[92], end[92]; // table
+unsigned char   font[64];           // kanji image read buffer              
 
-    char            Identifier[6+1];   
-    char            FontName[8+1];    
-    unsigned char    XSize;            
-    unsigned char    YSize;            
-    unsigned char    Size;            
-    unsigned char    CodeType;        
-    unsigned char    Tnum;            
+char            Identifier[6+1];    // 00-05 "FONTX2"   
+char            FontName[8+1];      // 06-13 Font name    
+unsigned char   XSize;              // 14            
+unsigned char   YSize;              // 15
+unsigned char   CodeType;           // 16 0:ASCII, 1:KANJI   
+unsigned char   Tnum;               // 17 Table entry number
 
-#define FONT_XBYTE        ((XSize + 7) >> 3)
-#define FONT_YBYTE        ((YSize + 7) >> 3)
+//#define FONT_XBYTE        ((XSize + 7) >> 3)
+//#define FONT_YBYTE        ((YSize + 7) >> 3)
 
 void kanji_init(){ 
     //move cursor 
@@ -113,9 +107,9 @@
     printf("Tnum: %d\n\r",Tnum);
     
     // Table read
-    for(int a=0;a< Tnum ;a++){
-        fread(&start[a],1,2,fp);
-        fread(&end[a]  ,1,2,fp);
+    for (int a = 0; a < Tnum; a++){
+        fread(&start[a], 1, 2, fp);
+        fread(&end[a]  , 1, 2, fp);
     }
 }
 
@@ -124,22 +118,22 @@
 
     const unsigned char bit_chk[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
 
-    //kanji address
+    // calculate kanji address
     int c = 0;
     int adrs = 0;
     while(cr > start[c]){
-        if(cr > end[c]){
-            adrs += end[c]-start[c]+1;
+        if (cr > end[c]){
+            adrs += end[c] - start[c] + 1;
         } else {
             adrs += cr - start[c];
         }
         c++;
     }
     c--;
-    printf("C=%d,adrs=%d cr=%X \r\n",c,adrs,cr);
+    printf("cr=%X, table num=%d, adrs=%d \r\n",cr,c,adrs);
     
     // Kanji image Read
-    fseek( fp, Tnum*4+18+32*adrs, SEEK_SET );
+    fseek( fp, Tnum * 4 + 18 + 32 * adrs, SEEK_SET );
     fread( &font, 1, 32, fp);
     
     // debug dump