Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 #pragma import __use_all_ctype 00002 00003 #include "mbed.h" 00004 #include <string.h> 00005 #include "displayCom.h" 00006 #include "15x16fontsLib.h" 00007 00008 #define StrsBufSize (1024) 00009 00010 DigitalOut PowerLED(LED1); 00011 DigitalOut RunLED(LED2); 00012 00013 SPI spi(p5, NC, p7); //mosi, miso, sclk 00014 BusOut buffer_CS(p23,p22,p21); 00015 00016 Serial pc(USBTX, USBRX); // tx, rx 00017 00018 //#define _USE_LocalFileRead 00019 #ifdef _USE_LocalFileRead 00020 LocalFileSystem local("local"); 00021 #endif 00022 00023 unsigned int ImageBuf[DISPLAY_XSIZE];//16*6 00024 unsigned int ColerMap[DISPLAY_XSIZE]; 00025 00026 unsigned int CountChar(char *str) 00027 { 00028 unsigned char f_SJISChar = 0; 00029 unsigned char c = 0; 00030 unsigned int CountChar = 0; 00031 00032 c = *str; 00033 while(c != '\0') 00034 { 00035 //2バイト文字の判定 00036 if( ((0x81 <= c && c <= 0x9f) || (0xe0 <= c && c <= 0xfc)) && f_SJISChar != 1 ) 00037 { 00038 f_SJISChar = 1; 00039 } 00040 else 00041 { 00042 f_SJISChar = 0; 00043 CountChar++; 00044 } 00045 str++; 00046 c = *str; 00047 } 00048 return CountChar; 00049 } 00050 00051 void SPILineOut(unsigned char setLine) 00052 { 00053 unsigned int data = 0; 00054 data|= ImageBuf[setLine]; 00055 spi.write(data); 00056 } 00057 00058 void outBordData() 00059 { 00060 unsigned char ch = 0,Max_ch=0; 00061 unsigned int i = 0; 00062 Max_ch = (DISPLAY_XSIZE-16)/16; 00063 for(ch=0;ch<=Max_ch;ch++) 00064 { 00065 buffer_CS = ch; 00066 wait_us(10); 00067 for(i=(ch*16);i<(ch*16+16);i++) 00068 { 00069 SPILineOut(i); 00070 } 00071 wait_us(10); 00072 } 00073 } 00074 00075 void bufLeftShift_Loop(void) 00076 { 00077 signed int i = 0; 00078 00079 for(i=(DISPLAY_XSIZE-1);i>=1;i--) 00080 { 00081 ImageBuf[i] = ImageBuf[i-1]; 00082 } 00083 ImageBuf[0] = ImageBuf[(DISPLAY_XSIZE-1)]; 00084 00085 } 00086 00087 void bufLeftShift(void) 00088 { 00089 signed int i = 0; 00090 00091 for(i=(DISPLAY_XSIZE-1);i>=1;i--) 00092 { 00093 ImageBuf[i] = ImageBuf[i-1]; 00094 } 00095 ImageBuf[0] = 0; 00096 } 00097 00098 void TestMode(void) 00099 { 00100 unsigned char i = 0; 00101 00102 for(i=0;i<16;i++) 00103 { 00104 ImageBuf[i] = 0xffff; 00105 } 00106 00107 outBordData(); 00108 00109 while(1) 00110 { 00111 wait(0.1); 00112 bufLeftShift_Loop(); 00113 outBordData(); 00114 } 00115 } 00116 /********************************************************/ 00117 //Special Function 00118 /********************************************************/ 00119 char PC_RcevStrs[StrsBufSize]; 00120 char f_PCInput = 0; 00121 unsigned int c_PC_RcevStrs = 0; 00122 unsigned char func_mode = 0; 00123 00124 void callback() { 00125 PC_RcevStrs[c_PC_RcevStrs] = pc.getc(); 00126 00127 func_mode = 0; 00128 00129 if(PC_RcevStrs[c_PC_RcevStrs] == 0x1b) //Esc key 00130 { 00131 memset(PC_RcevStrs,0,sizeof(PC_RcevStrs)); 00132 c_PC_RcevStrs = 0; 00133 pc.printf("All Strs Clear!\r\n"); 00134 } 00135 else if(PC_RcevStrs[c_PC_RcevStrs] == '\r') 00136 { 00137 pc.printf("RecvStrsEnd\r\n"); 00138 PC_RcevStrs[c_PC_RcevStrs] = '\0'; 00139 f_PCInput = 1; 00140 c_PC_RcevStrs = 0; 00141 } 00142 else if( PC_RcevStrs[c_PC_RcevStrs] == 0x08 ) //BackSpace key 00143 { 00144 if(c_PC_RcevStrs >= 1) 00145 { 00146 PC_RcevStrs[c_PC_RcevStrs] = '\0'; 00147 PC_RcevStrs[c_PC_RcevStrs-1] = '\0'; 00148 c_PC_RcevStrs--; 00149 } 00150 } 00151 else if(PC_RcevStrs[c_PC_RcevStrs] == 0x10) //DLE ^P 00152 { 00153 pc.printf("All LED ON Mode!\r\n"); 00154 func_mode = 1; 00155 c_PC_RcevStrs = 0; 00156 } 00157 else 00158 { 00159 if( !(c_PC_RcevStrs >= StrsBufSize) ) 00160 { 00161 c_PC_RcevStrs++; 00162 } 00163 else 00164 { 00165 pc.printf("Buf Over Size!!!\r\n"); 00166 } 00167 } 00168 00169 if(c_PC_RcevStrs >= 1 ) //char入力処理結果表示 00170 { 00171 if( PC_RcevStrs[c_PC_RcevStrs-1] != '\r' ) 00172 { 00173 pc.printf("rcevStrs=%s\r\n",PC_RcevStrs); 00174 pc.printf("rcevCnt=%d\r\n",c_PC_RcevStrs); 00175 } 00176 } 00177 } 00178 00179 void TestMode_FullON(void) 00180 { 00181 memset(ImageBuf,0xffff,sizeof(ImageBuf)); 00182 wait(0.1); 00183 outBordData(); 00184 } 00185 00186 int main() 00187 { 00188 unsigned int i = 0; 00189 unsigned int StrsDotSize = 0; 00190 char strs[StrsBufSize]={0x48,0x65,0x6c,0x6c,0x6f,0x57,0x6f,0x72,0x6c,0x64,0x21,0x20,0x83,0x6a,0x83,0x52, 00191 0x83,0x6a,0x83,0x52,0x8b,0x5a,0x8f,0x70,0x95,0x94,0x00}; 00192 PowerLED = 1; 00193 00194 pc.baud(115200); 00195 pc.attach(&callback); 00196 00197 spi.format(16,1); 00198 spi.frequency(500000); 00199 00200 //************************USE Local File Sys************************************// 00201 #ifdef _USE_LocalFileRead 00202 memset(strs,' ',sizeof(strs)); 00203 // Read text file for display message, if exist. 00204 FILE *fp; 00205 fp = fopen("/local/message.txt", "r"); 00206 if (fp != NULL) { 00207 fgets(strs, sizeof(strs), fp); 00208 fclose(fp); 00209 #if defined(__MICROLIB) && defined(__ARMCC_VERSION) // with microlib and ARM compiler 00210 free(fp); 00211 #endif 00212 00213 #endif 00214 //************************USE Local File Sys end********************************// 00215 00216 memset(ImageBuf,0,sizeof(ImageBuf)); 00217 00218 wait(1); 00219 RunLED = 1; 00220 00221 //TestMode(); 00222 00223 while(1) 00224 { 00225 memset(ImageBuf,0,sizeof(ImageBuf)); 00226 00227 if(f_PCInput == 1) //char proccses 00228 { 00229 memcpy(strs, PC_RcevStrs, sizeof(strs)); //Set Strs 00230 memset(PC_RcevStrs,0,sizeof(PC_RcevStrs)); //Clear PC Rcev Buff 00231 c_PC_RcevStrs = 0; 00232 f_PCInput = 0; 00233 } 00234 while(func_mode == 1) 00235 { 00236 TestMode_FullON(); 00237 } 00238 StrsDotSize = 8*strlen(strs); 00239 00240 for(i=0;i<(DISPLAY_XSIZE+StrsDotSize);i++) 00241 { 00242 drawStr15x16(strs ,i); 00243 outBordData(); 00244 wait_ms(20); 00245 if(f_PCInput == 1) //break to char proccses 00246 { 00247 f_PCInput = 1; 00248 break; 00249 } 00250 } 00251 } 00252 }
Generated on Sat Aug 6 2022 07:51:11 by
1.7.2