/******************************(abc913-18326.c)**********
* 有機ELカラーグラフィック テスト2 QT095B(SSD1331)
********************************************************/
#include "mcc_generated_files/mcc.h"
#include "myProject.h"
char sBf[BFSIZE]; // 文字列作業エリア
char RBuf[BFSIZE]; // シリアル受信バッファ
uint8_t SFlg; // シリアル受信フラグ
char msg1[] = "*== SSD1331 ==*";
uint8_t gptn[] =
{ 0x1f, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F,
0xFF, 0x1F, 0x1C, 0x1C, 0x1F, 0xFF,
0xFF, 0x1C, 0xE0, 0xE0, 0x1C, 0xFF,
0xFF ,0x1C, 0xE0, 0xE0, 0x1C, 0xFF,
0xFF ,0x1C, 0xE0, 0xE0, 0x1C, 0xFF,
0xFF, 0x1C, 0xE0, 0xE0, 0x1C, 0xFF,
0xFF, 0x1F, 0x1C, 0x1C, 0x1F, 0xFF,
0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F };
char h[2][16]={
{ 0x00,0xC0,0x38,0x06,0x38,0xC0,0x60,0x00,
0x3C,0x03,0x02,0x02,0x02,0x03,0x3C,0x00},
{ 0x78,0x84,0x02,0x02,0x02,0x84,0xF8,0x00,
0x08,0x10,0x21,0x21,0x21,0x10,0x0F,0x00}
};
char k[2][32]={
{ 0x00,0x10,0x60,0x01,0x06,0x04,0xE4,0x24,
0x2F,0x24,0xE4,0x24,0x2F,0x24,0xE4,0x04,
0x00,0xC0,0x30,0x0C,0x03,0x90,0x95,0x55,
0x55,0x35,0x1F,0x35,0x55,0x55,0x91,0x90}, // 漢
{ 0x00,0x1C,0x04,0x04,0x24,0x24,0x24,0x24,
0xA7,0xA4,0x64,0x24,0x04,0x04,0x1C,0x00,
0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x82,
0xFF,0x02,0x02,0x02,0x02,0x02,0x02,0x02} // 字
};
uint8_t sinP[] = {4,6,7,8,7,6,4,2,1,0,1,2,
4,6,7,8,7,6,4,2,1,0,1,2,4}; // Sin Wave
void testSin(uint8_t x, uint8_t y, uint8_t c){
uint8_t i;
for(i=0;i<24;i++){
gOLED_Pset256(x+i,y+sinP[i],c);
}
}
void test_OLED(){
uint8_t xpos;
xpos = gOLED_chrX( 0, 0,'0',RGB256(7,7,3));
xpos = gOLED_chrX(10, 0,'1',RGB256(7,0,3));
xpos = gOLED_chrX(20, 0,'2',RGB256(0,7,0));
xpos = gOLED_chrX(30, 0,'A',RGB256(7,0,0));
xpos = gOLED_chrX(40, 0,'H',RGB256(0,7,3));
xpos = gOLED_chrX(50, 0,'?',RGB256(0,0,3));
xpos = gOLED_strX( 0,12,msg1,RGB256(7,7,0));
testSin(0,24,RGB256(0,7,3));
gOLED_ptnX(48,32,gptn,6,8,0);
gOLED_ptnX(64,48,gptn,8,6,1);
xpos = gOLED_HptnX(72,24,h[0],RGB256(0,7,0));
xpos = gOLED_HptnX(xpos,24,h[1],RGB256(0,7,0));
xpos = gOLED_KptnX(0,40,k[0],RGB256(7,7,3));
xpos = gOLED_KptnX(xpos,40,k[1],RGB256(7,0,3));
}
/**************************************
* Main application
***************************************/
void main(void){
char cmd;
uint8_t xpos;
SYSTEM_Initialize();
SSP1CON1bits.SSPEN = 1;
SSD1331_Init();
INTERRUPT_GlobalInterruptEnable();
INTERRUPT_PeripheralInterruptEnable();
gOLED_Clr(0,0,95,63);
puts(msg1); // PIC動作確認用
putchar('\r');
test_OLED();
IO_RA4_SetHigh();
while (1){
if(SFlg){
cmd = RBuf[0];
gOLED_Clr(0,0,95,63);
gOLED_strX(0,0,RBuf,RGB256(7,7,0));
switch(cmd){
case 'T': test_OLED(); break;
case 'W': spiMem_cmd_W(RBuf); break;
case 'R': spiMem_cmd_R(RBuf); break;
case 'Q': spiMem_cmd_Q(RBuf); break;
case 'U': spiMem_cmd_U(RBuf); break;
case 'S': spiMem_cmd_W(RBuf); break;
case 'P': spiMem_cmd_P(RBuf); break;
case 'K': spiMem_cmd_K(RBuf); break;
case 'L': spiMem_cmd_L(RBuf); break;
// 有効なコマンドがなく
default: if(spiMem_SqMode()){
spiMem_cmd_WSQ(RBuf);
} // 連続書込モード中なら
break; // 書込シーケンスを実行
}
SFlg = 0;
}
__delay_ms(100);
IO_RA4_Toggle();
}
}
/**** End of File *****/
|