/********************************************************************* * PIC24F用の、カラーOLEDテスト * プロジェクト名: PIC24F_COLOR_OLED_TEST_2 * * PIC24Fトレーニング基板を使い、カラーOLED表示テストを行った。 * * Condition: * 8MHz Internal RC oscillator, 4x PLL (8MHzx4= 32MHz) * Fcy=32MHz/2=16MHz, Tcy=62.5ns * * CPU: PIC24FJ64GA002 * * 1.5インチカラーOLED(aitendo): NVK-128SC008F * * デバッグ年月日: 2017/12/26 N.Ishii *********************************************************************/ #include "p24FJ64GA002.h" #include "LD50T5128M_OLEDlibPIC24F.h" #include "imagedata.h" /// コンフィギュレーション ビットの設定 _CONFIG1( JTAGEN_OFF // JTAGの使用:無効 & GCP_OFF // コードプロテクト:しない & GWRP_OFF // 書き込みプロテクト:しない & BKBUG_OFF // バックグラウンドデバッグ:無効 & COE_OFF // クリップオンエミュレーション:無効 & ICS_PGx1 // EMUC/EMUDをPCG1/PGD1と共用 & FWDTEN_OFF // WDT:無効 ) /// Fosc = FRC (Fosc=32MHz) _CONFIG2( IESO_OFF // 2速度スタートアップ:無効 & FNOSC_FRCPLL // 8MHz Internal RC oscillator, 4x PLL-> 8MHzx4=32MHz & FCKSM_CSDCMD // クロック切り替え・クロックモニタ:供に無効 & OSCIOFNC_ON // OSCOピン機能:RA3ポートとする 161118 & IOL1WAY_OFF // RPレジスタプロテクト:プロテクトしない & I2C1SEL_PRI // I2C1のピン選択:主ピンを使用する & POSCMOD_NONE // 主発振器:使用しない ) int main(void) { short i,j,index; short Flag, Size, XOffset, YOffset; unsigned char ASCII; //// I/O設定 AD1PCFG = 0xFFFF; // A/D Digi 選択:全デジタルI/Oに設定 CLKDIV = 0x0000; // System Clock devider 1:1 /// Setup PORT In/Out TRISB = 0x000F; // RB4-15は、OLED制御出力 他は未使用入力 TRISA = 0x0006; // RA0= OLED_VCC_ON出力, RA3= 赤LED、RA4= OLED_RESET出力、他は入力 /// Set Pull Up CNPU1 = 0x0030; // Pull Up Port is RB0(ピン1), RB1(ピン2) TRISAbits.TRISA3= 0; // 赤LED:デバッグ用 LATAbits.LATA3 = 1; // 赤LED消灯 OLEDInit(); // OLEDコントローラー初期化 OLED_Clear(BLACK); // 画面消去 // OLED_Str(0, 0, "Start Test!!", CYAN, BLACK); // 8x8フォント用 OLED_Str(0, 0, "Start Test", CYAN, BLACK); // 12x12フォント用 delay_ms(2000); OLED_Clear(BLACK); // クリア /// 定義カラーコードでの、全画面フィルBOX描画---------------------------------------------------------------------------- OLED_Clear(WHITE); delay_ms(2000); OLED_Clear(BLACK); delay_ms(2000); OLED_Clear(RED); delay_ms(2000); OLED_Clear(GREEN); delay_ms(2000); OLED_Clear(BLUE); delay_ms(2000); OLED_Clear(CYAN); delay_ms(2000); OLED_Clear(MAGENTA); delay_ms(2000); OLED_Clear(YELLOW); delay_ms(2000); OLED_Clear(BROWN); delay_ms(2000); OLED_Clear(ORANGE); delay_ms(2000); OLED_Clear(PERPLE); delay_ms(2000); OLED_Clear(COBALT); delay_ms(2000); delay_ms(5000); // 5秒待ち OLED_Clear(BLACK); // クリア /* ///文字列描画(ASCII 8x8dot文字用)---------------------------------------------------------------------------- OLED_Str(0,0,"Hellow",BLACK,WHITE); OLED_Str(1,1,"World !!",RED,WHITE); OLED_Str(2,2,"Japan",BLUE,WHITE); OLED_Str(3,3,"Tokyo",WHITE,BLACK); OLED_Str(4,4,"Chiyodaku",RED,BLACK); OLED_Str(5,5,"Sotokanda",GREEN,BLACK); OLED_Str(6,6,"Akihabara",RED,YELLOW); OLED_Str(7,7,"AKB48",GREEN,YELLOW); delay_ms(5000); // 5秒待ち OLED_Clear(BLACK); // クリア ///-------------------------------------------------------------------------------------------------------- /// ASCII 8x8dot文字(全192文字)の描画--------------------------------------------------------------------- for(j=0; j<16; j++){ for(i=0; i<16; i++){ // index = j*12+i+0x20; // スペースコードから開始し、1行16文字で繰返し index = j*16+i+0x20; // スペースコードから開始し、1行16文字で繰返し 171221 if (j<3) OLED_Char(i, j, index, WHITE, BLACK); // 文字表示制御 // if ((j>2) && (j<5)) OLED_Char(i, j, index, GREEN, BLACK); // if ((j>4) && (j<7)) OLED_Char(i, j, index, RED, BLACK); // if ((j>6) && (j<9)) OLED_Char(i, j, index, YELLOW, BLACK); /// 171221 if ((j>2) && (j<6)) OLED_Char(i, j, index, GREEN, BLACK); if ((j>5) && (j<9)) OLED_Char(i, j, index, RED, BLACK); if ((j>8) && (j<12)) OLED_Char(i, j, index, YELLOW, BLACK); } } delay_ms(5000); // 5秒待ち OLED_Clear(BLACK); // クリア ///-------------------------------------------------------------------------------------------------------- */ ///文字列描画(ASCII 12x12dot文字用)----------------------------------------------------------------------- OLED_Str(0, 0, "12x12dot", WHITE, BLACK); OLED_Str(0, 1, "ANK Font", WHITE, BLACK); OLED_Str(0, 2, "Display",WHITE, BLACK); OLED_Str(0, 3, "Test", WHITE, BLACK); OLED_Str(0, 5, "Nobosan's", GREEN, BLACK); OLED_Str(0, 6, "デンシコウサク", GREEN, BLACK); OLED_Str(0, 8, "2017/12/23", YELLOW, BLACK); delay_ms(5000); // 5秒待ち OLED_Clear(BLACK); // クリア ///-------------------------------------------------------------------------------------------------------- /// ASCII 12x12dot文字(全224文字:256-32)の描画--------------------------------------------------------------------- /// 1画面目90文字:0x20〜0x79('y') for(j=0; j<3; j++){ // ASCII文字全表示 XChar文字/行 for(i=0; i