超乗合馬車電光掲示板用制御ソフトです。

Dependencies:   mbed

Committer:
nameless129
Date:
Sat Apr 26 08:26:29 2014 +0000
Revision:
1:8e2a7fdb3db8
Parent:
0:23cd1be2a1c2
????v1.01

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nameless129 0:23cd1be2a1c2 1 #pragma import __use_all_ctype
nameless129 0:23cd1be2a1c2 2
nameless129 0:23cd1be2a1c2 3 #include "mbed.h"
nameless129 0:23cd1be2a1c2 4 #include <string.h>
nameless129 0:23cd1be2a1c2 5 #include "displayCom.h"
nameless129 0:23cd1be2a1c2 6 #include "15x16fontsLib.h"
nameless129 0:23cd1be2a1c2 7
nameless129 1:8e2a7fdb3db8 8 #define StrsBufSize (1024)
nameless129 0:23cd1be2a1c2 9
nameless129 0:23cd1be2a1c2 10 DigitalOut PowerLED(LED1);
nameless129 0:23cd1be2a1c2 11 DigitalOut RunLED(LED2);
nameless129 0:23cd1be2a1c2 12
nameless129 0:23cd1be2a1c2 13 SPI spi(p5, NC, p7); //mosi, miso, sclk
nameless129 0:23cd1be2a1c2 14 BusOut buffer_CS(p23,p22,p21);
nameless129 1:8e2a7fdb3db8 15
nameless129 0:23cd1be2a1c2 16 Serial pc(USBTX, USBRX); // tx, rx
nameless129 1:8e2a7fdb3db8 17
nameless129 1:8e2a7fdb3db8 18 //#define _USE_LocalFileRead
nameless129 1:8e2a7fdb3db8 19 #ifdef _USE_LocalFileRead
nameless129 0:23cd1be2a1c2 20 LocalFileSystem local("local");
nameless129 1:8e2a7fdb3db8 21 #endif
nameless129 0:23cd1be2a1c2 22
nameless129 0:23cd1be2a1c2 23 unsigned int ImageBuf[DISPLAY_XSIZE];//16*6
nameless129 0:23cd1be2a1c2 24 unsigned int ColerMap[DISPLAY_XSIZE];
nameless129 0:23cd1be2a1c2 25
nameless129 0:23cd1be2a1c2 26 unsigned int CountChar(char *str)
nameless129 0:23cd1be2a1c2 27 {
nameless129 0:23cd1be2a1c2 28 unsigned char f_SJISChar = 0;
nameless129 0:23cd1be2a1c2 29 unsigned char c = 0;
nameless129 0:23cd1be2a1c2 30 unsigned int CountChar = 0;
nameless129 0:23cd1be2a1c2 31
nameless129 0:23cd1be2a1c2 32 c = *str;
nameless129 0:23cd1be2a1c2 33 while(c != '\0')
nameless129 0:23cd1be2a1c2 34 {
nameless129 0:23cd1be2a1c2 35 //2バイト文字の判定
nameless129 0:23cd1be2a1c2 36 if( ((0x81 <= c && c <= 0x9f) || (0xe0 <= c && c <= 0xfc)) && f_SJISChar != 1 )
nameless129 0:23cd1be2a1c2 37 {
nameless129 0:23cd1be2a1c2 38 f_SJISChar = 1;
nameless129 0:23cd1be2a1c2 39 }
nameless129 0:23cd1be2a1c2 40 else
nameless129 0:23cd1be2a1c2 41 {
nameless129 0:23cd1be2a1c2 42 f_SJISChar = 0;
nameless129 0:23cd1be2a1c2 43 CountChar++;
nameless129 0:23cd1be2a1c2 44 }
nameless129 0:23cd1be2a1c2 45 str++;
nameless129 0:23cd1be2a1c2 46 c = *str;
nameless129 0:23cd1be2a1c2 47 }
nameless129 0:23cd1be2a1c2 48 return CountChar;
nameless129 0:23cd1be2a1c2 49 }
nameless129 0:23cd1be2a1c2 50
nameless129 0:23cd1be2a1c2 51 void SPILineOut(unsigned char setLine)
nameless129 0:23cd1be2a1c2 52 {
nameless129 0:23cd1be2a1c2 53 unsigned int data = 0;
nameless129 0:23cd1be2a1c2 54 data|= ImageBuf[setLine];
nameless129 0:23cd1be2a1c2 55 spi.write(data);
nameless129 0:23cd1be2a1c2 56 }
nameless129 0:23cd1be2a1c2 57
nameless129 0:23cd1be2a1c2 58 void outBordData()
nameless129 0:23cd1be2a1c2 59 {
nameless129 0:23cd1be2a1c2 60 unsigned char ch = 0,Max_ch=0;
nameless129 0:23cd1be2a1c2 61 unsigned int i = 0;
nameless129 0:23cd1be2a1c2 62 Max_ch = (DISPLAY_XSIZE-16)/16;
nameless129 0:23cd1be2a1c2 63 for(ch=0;ch<=Max_ch;ch++)
nameless129 0:23cd1be2a1c2 64 {
nameless129 0:23cd1be2a1c2 65 buffer_CS = ch;
nameless129 0:23cd1be2a1c2 66 wait_us(10);
nameless129 0:23cd1be2a1c2 67 for(i=(ch*16);i<(ch*16+16);i++)
nameless129 0:23cd1be2a1c2 68 {
nameless129 0:23cd1be2a1c2 69 SPILineOut(i);
nameless129 0:23cd1be2a1c2 70 }
nameless129 0:23cd1be2a1c2 71 wait_us(10);
nameless129 0:23cd1be2a1c2 72 }
nameless129 0:23cd1be2a1c2 73 }
nameless129 0:23cd1be2a1c2 74
nameless129 0:23cd1be2a1c2 75 void bufLeftShift_Loop(void)
nameless129 0:23cd1be2a1c2 76 {
nameless129 0:23cd1be2a1c2 77 signed int i = 0;
nameless129 0:23cd1be2a1c2 78
nameless129 0:23cd1be2a1c2 79 for(i=(DISPLAY_XSIZE-1);i>=1;i--)
nameless129 0:23cd1be2a1c2 80 {
nameless129 0:23cd1be2a1c2 81 ImageBuf[i] = ImageBuf[i-1];
nameless129 0:23cd1be2a1c2 82 }
nameless129 0:23cd1be2a1c2 83 ImageBuf[0] = ImageBuf[(DISPLAY_XSIZE-1)];
nameless129 0:23cd1be2a1c2 84
nameless129 0:23cd1be2a1c2 85 }
nameless129 0:23cd1be2a1c2 86
nameless129 0:23cd1be2a1c2 87 void bufLeftShift(void)
nameless129 0:23cd1be2a1c2 88 {
nameless129 0:23cd1be2a1c2 89 signed int i = 0;
nameless129 0:23cd1be2a1c2 90
nameless129 0:23cd1be2a1c2 91 for(i=(DISPLAY_XSIZE-1);i>=1;i--)
nameless129 0:23cd1be2a1c2 92 {
nameless129 0:23cd1be2a1c2 93 ImageBuf[i] = ImageBuf[i-1];
nameless129 0:23cd1be2a1c2 94 }
nameless129 0:23cd1be2a1c2 95 ImageBuf[0] = 0;
nameless129 0:23cd1be2a1c2 96 }
nameless129 0:23cd1be2a1c2 97
nameless129 0:23cd1be2a1c2 98 void TestMode(void)
nameless129 0:23cd1be2a1c2 99 {
nameless129 0:23cd1be2a1c2 100 unsigned char i = 0;
nameless129 0:23cd1be2a1c2 101
nameless129 0:23cd1be2a1c2 102 for(i=0;i<16;i++)
nameless129 0:23cd1be2a1c2 103 {
nameless129 0:23cd1be2a1c2 104 ImageBuf[i] = 0xffff;
nameless129 0:23cd1be2a1c2 105 }
nameless129 0:23cd1be2a1c2 106
nameless129 0:23cd1be2a1c2 107 outBordData();
nameless129 0:23cd1be2a1c2 108
nameless129 0:23cd1be2a1c2 109 while(1)
nameless129 0:23cd1be2a1c2 110 {
nameless129 0:23cd1be2a1c2 111 wait(0.1);
nameless129 0:23cd1be2a1c2 112 bufLeftShift_Loop();
nameless129 0:23cd1be2a1c2 113 outBordData();
nameless129 0:23cd1be2a1c2 114 }
nameless129 0:23cd1be2a1c2 115 }
nameless129 0:23cd1be2a1c2 116 /********************************************************/
nameless129 0:23cd1be2a1c2 117 //Special Function
nameless129 0:23cd1be2a1c2 118 /********************************************************/
nameless129 1:8e2a7fdb3db8 119 char PC_RcevStrs[StrsBufSize];
nameless129 0:23cd1be2a1c2 120 char f_PCInput = 0;
nameless129 0:23cd1be2a1c2 121 unsigned int c_PC_RcevStrs = 0;
nameless129 1:8e2a7fdb3db8 122 unsigned char func_mode = 0;
nameless129 0:23cd1be2a1c2 123
nameless129 0:23cd1be2a1c2 124 void callback() {
nameless129 1:8e2a7fdb3db8 125 PC_RcevStrs[c_PC_RcevStrs] = pc.getc();
nameless129 0:23cd1be2a1c2 126
nameless129 1:8e2a7fdb3db8 127 func_mode = 0;
nameless129 1:8e2a7fdb3db8 128
nameless129 1:8e2a7fdb3db8 129 if(PC_RcevStrs[c_PC_RcevStrs] == 0x1b) //Esc key
nameless129 0:23cd1be2a1c2 130 {
nameless129 0:23cd1be2a1c2 131 memset(PC_RcevStrs,0,sizeof(PC_RcevStrs));
nameless129 0:23cd1be2a1c2 132 c_PC_RcevStrs = 0;
nameless129 1:8e2a7fdb3db8 133 pc.printf("All Strs Clear!\r\n");
nameless129 0:23cd1be2a1c2 134 }
nameless129 0:23cd1be2a1c2 135 else if(PC_RcevStrs[c_PC_RcevStrs] == '\r')
nameless129 0:23cd1be2a1c2 136 {
nameless129 0:23cd1be2a1c2 137 pc.printf("RecvStrsEnd\r\n");
nameless129 0:23cd1be2a1c2 138 PC_RcevStrs[c_PC_RcevStrs] = '\0';
nameless129 0:23cd1be2a1c2 139 f_PCInput = 1;
nameless129 0:23cd1be2a1c2 140 c_PC_RcevStrs = 0;
nameless129 0:23cd1be2a1c2 141 }
nameless129 1:8e2a7fdb3db8 142 else if( PC_RcevStrs[c_PC_RcevStrs] == 0x08 ) //BackSpace key
nameless129 0:23cd1be2a1c2 143 {
nameless129 0:23cd1be2a1c2 144 if(c_PC_RcevStrs >= 1)
nameless129 0:23cd1be2a1c2 145 {
nameless129 0:23cd1be2a1c2 146 PC_RcevStrs[c_PC_RcevStrs] = '\0';
nameless129 0:23cd1be2a1c2 147 PC_RcevStrs[c_PC_RcevStrs-1] = '\0';
nameless129 0:23cd1be2a1c2 148 c_PC_RcevStrs--;
nameless129 0:23cd1be2a1c2 149 }
nameless129 0:23cd1be2a1c2 150 }
nameless129 1:8e2a7fdb3db8 151 else if(PC_RcevStrs[c_PC_RcevStrs] == 0x10) //DLE ^P
nameless129 1:8e2a7fdb3db8 152 {
nameless129 1:8e2a7fdb3db8 153 pc.printf("All LED ON Mode!\r\n");
nameless129 1:8e2a7fdb3db8 154 func_mode = 1;
nameless129 1:8e2a7fdb3db8 155 c_PC_RcevStrs = 0;
nameless129 1:8e2a7fdb3db8 156 }
nameless129 0:23cd1be2a1c2 157 else
nameless129 0:23cd1be2a1c2 158 {
nameless129 1:8e2a7fdb3db8 159 if( !(c_PC_RcevStrs >= StrsBufSize) )
nameless129 1:8e2a7fdb3db8 160 {
nameless129 1:8e2a7fdb3db8 161 c_PC_RcevStrs++;
nameless129 1:8e2a7fdb3db8 162 }
nameless129 1:8e2a7fdb3db8 163 else
nameless129 1:8e2a7fdb3db8 164 {
nameless129 1:8e2a7fdb3db8 165 pc.printf("Buf Over Size!!!\r\n");
nameless129 1:8e2a7fdb3db8 166 }
nameless129 0:23cd1be2a1c2 167 }
nameless129 1:8e2a7fdb3db8 168
nameless129 1:8e2a7fdb3db8 169 if(c_PC_RcevStrs >= 1 ) //char入力処理結果表示
nameless129 0:23cd1be2a1c2 170 {
nameless129 1:8e2a7fdb3db8 171 if( PC_RcevStrs[c_PC_RcevStrs-1] != '\r' )
nameless129 1:8e2a7fdb3db8 172 {
nameless129 1:8e2a7fdb3db8 173 pc.printf("rcevStrs=%s\r\n",PC_RcevStrs);
nameless129 1:8e2a7fdb3db8 174 pc.printf("rcevCnt=%d\r\n",c_PC_RcevStrs);
nameless129 1:8e2a7fdb3db8 175 }
nameless129 0:23cd1be2a1c2 176 }
nameless129 0:23cd1be2a1c2 177 }
nameless129 0:23cd1be2a1c2 178
nameless129 0:23cd1be2a1c2 179 void TestMode_FullON(void)
nameless129 0:23cd1be2a1c2 180 {
nameless129 0:23cd1be2a1c2 181 memset(ImageBuf,0xffff,sizeof(ImageBuf));
nameless129 1:8e2a7fdb3db8 182 wait(0.1);
nameless129 1:8e2a7fdb3db8 183 outBordData();
nameless129 0:23cd1be2a1c2 184 }
nameless129 0:23cd1be2a1c2 185
nameless129 0:23cd1be2a1c2 186 int main()
nameless129 0:23cd1be2a1c2 187 {
nameless129 0:23cd1be2a1c2 188 unsigned int i = 0;
nameless129 1:8e2a7fdb3db8 189 unsigned int StrsDotSize = 0;
nameless129 1:8e2a7fdb3db8 190 char strs[StrsBufSize]={0x48,0x65,0x6c,0x6c,0x6f,0x57,0x6f,0x72,0x6c,0x64,0x21,0x20,0x83,0x6a,0x83,0x52,
nameless129 0:23cd1be2a1c2 191 0x83,0x6a,0x83,0x52,0x8b,0x5a,0x8f,0x70,0x95,0x94,0x00};
nameless129 0:23cd1be2a1c2 192 PowerLED = 1;
nameless129 0:23cd1be2a1c2 193
nameless129 0:23cd1be2a1c2 194 pc.baud(115200);
nameless129 0:23cd1be2a1c2 195 pc.attach(&callback);
nameless129 0:23cd1be2a1c2 196
nameless129 0:23cd1be2a1c2 197 spi.format(16,1);
nameless129 0:23cd1be2a1c2 198 spi.frequency(500000);
nameless129 0:23cd1be2a1c2 199
nameless129 1:8e2a7fdb3db8 200 //************************USE Local File Sys************************************//
nameless129 1:8e2a7fdb3db8 201 #ifdef _USE_LocalFileRead
nameless129 1:8e2a7fdb3db8 202 memset(strs,' ',sizeof(strs));
nameless129 1:8e2a7fdb3db8 203 // Read text file for display message, if exist.
nameless129 1:8e2a7fdb3db8 204 FILE *fp;
nameless129 1:8e2a7fdb3db8 205 fp = fopen("/local/message.txt", "r");
nameless129 1:8e2a7fdb3db8 206 if (fp != NULL) {
nameless129 1:8e2a7fdb3db8 207 fgets(strs, sizeof(strs), fp);
nameless129 1:8e2a7fdb3db8 208 fclose(fp);
nameless129 1:8e2a7fdb3db8 209 #if defined(__MICROLIB) && defined(__ARMCC_VERSION) // with microlib and ARM compiler
nameless129 1:8e2a7fdb3db8 210 free(fp);
nameless129 1:8e2a7fdb3db8 211 #endif
nameless129 1:8e2a7fdb3db8 212
nameless129 1:8e2a7fdb3db8 213 #endif
nameless129 1:8e2a7fdb3db8 214 //************************USE Local File Sys end********************************//
nameless129 1:8e2a7fdb3db8 215
nameless129 0:23cd1be2a1c2 216 memset(ImageBuf,0,sizeof(ImageBuf));
nameless129 0:23cd1be2a1c2 217
nameless129 1:8e2a7fdb3db8 218 wait(1);
nameless129 0:23cd1be2a1c2 219 RunLED = 1;
nameless129 0:23cd1be2a1c2 220
nameless129 0:23cd1be2a1c2 221 //TestMode();
nameless129 1:8e2a7fdb3db8 222
nameless129 0:23cd1be2a1c2 223 while(1)
nameless129 0:23cd1be2a1c2 224 {
nameless129 0:23cd1be2a1c2 225 memset(ImageBuf,0,sizeof(ImageBuf));
nameless129 0:23cd1be2a1c2 226
nameless129 1:8e2a7fdb3db8 227 if(f_PCInput == 1) //char proccses
nameless129 0:23cd1be2a1c2 228 {
nameless129 1:8e2a7fdb3db8 229 memcpy(strs, PC_RcevStrs, sizeof(strs)); //Set Strs
nameless129 1:8e2a7fdb3db8 230 memset(PC_RcevStrs,0,sizeof(PC_RcevStrs)); //Clear PC Rcev Buff
nameless129 0:23cd1be2a1c2 231 c_PC_RcevStrs = 0;
nameless129 0:23cd1be2a1c2 232 f_PCInput = 0;
nameless129 0:23cd1be2a1c2 233 }
nameless129 1:8e2a7fdb3db8 234 while(func_mode == 1)
nameless129 1:8e2a7fdb3db8 235 {
nameless129 1:8e2a7fdb3db8 236 TestMode_FullON();
nameless129 1:8e2a7fdb3db8 237 }
nameless129 0:23cd1be2a1c2 238 StrsDotSize = 8*strlen(strs);
nameless129 0:23cd1be2a1c2 239
nameless129 0:23cd1be2a1c2 240 for(i=0;i<(DISPLAY_XSIZE+StrsDotSize);i++)
nameless129 0:23cd1be2a1c2 241 {
nameless129 1:8e2a7fdb3db8 242 drawStr15x16(strs ,i);
nameless129 0:23cd1be2a1c2 243 outBordData();
nameless129 1:8e2a7fdb3db8 244 wait_ms(20);
nameless129 1:8e2a7fdb3db8 245 if(f_PCInput == 1) //break to char proccses
nameless129 0:23cd1be2a1c2 246 {
nameless129 0:23cd1be2a1c2 247 f_PCInput = 1;
nameless129 0:23cd1be2a1c2 248 break;
nameless129 0:23cd1be2a1c2 249 }
nameless129 0:23cd1be2a1c2 250 }
nameless129 0:23cd1be2a1c2 251 }
nameless129 0:23cd1be2a1c2 252 }