| 
/******************************(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   *****/
 |