/********************************************************************* * PIC32MX カラーQVGA液晶 漢字フォント表示テスト * プロジェクト名: PIC32MX_UL024TF_KANJI_TEST * PIC32MXトレーニング基板で動作 * * Condition: * 8MHz External X'tal Oscillator, 20x PLL (8MHzx20= 160MHz) * Fcy=160MHz/2=80MHz, Tcy=12.5ns * * CPU: PIC32MX340F256H * * 2.4インチQVGA液晶モジュール(aitendo): UL024TF * * デバッグ年月日: 2016/8/18 N.Ishii *********************************************************************/ #include /* PIC32 peripheral library */ #include "colorlcd_lib32k.h" // コンフィギュレーション設定 // CPU=80MHz Peri=80MHz,HS+PLL,Divider=1/2,PLL=x20,WDT=Off #pragma config FNOSC=PRIPLL, POSCMOD=HS, FPLLIDIV=DIV_2 #pragma config FPLLMUL=MUL_20, FPBDIV=DIV_1, FPLLODIV=DIV_1 #pragma config FWDTEN=OFF, ICESEL=ICS_PGx2 short Line, Colum; short Upper, Lower; char end= 0; long i,j,index; long int T0 = 2000; /******************************************** * 漢字メッセージ シフトJISコードデータ ********************************************/ const short Message[] ={ 0x82,0xB1,0x82,0xEA,0x82,0xCD,0x8A,0xBF,0x8E,0x9A, 0x82,0xC9,0x82,0xE6,0x82,0xE9,0x83,0x81,0x83,0x62, 0x83,0x5A,0x81,0x5B,0x83,0x57,0x82,0xCC,0x95,0x5C, 0x8E,0xA6,0x97,0xE1,0x82,0xC5,0x82,0xB7,0x81,0x42, 0x82,0x64,0x82,0x8E,0x82,0x87,0x82,0x8C,0x82,0x89, 0x82,0x93,0x82,0x88,0x82,0xCC,0x89,0x70,0x95,0xB6, 0x8E,0x9A,0x82,0xE2,0x82,0x4F,0x82,0x50,0x82,0x51, 0x82,0x52,0x82,0xCC,0x82,0xE6,0x82,0xA4,0x82,0xC8, 0x90,0x94,0x8E,0x9A,0x82,0xCC,0x8F,0xEA,0x8D,0x87, 0x82,0xC9,0x82,0xE0,0x82,0x51,0x83,0x6F,0x83,0x43, 0x83,0x67,0x83,0x52,0x81,0x5B,0x83,0x68,0x82,0xC5, 0x82,0xCC,0x95,0x5C,0x8E,0xA6,0x82,0xC6,0x82,0xC8, 0x82,0xE8,0x82,0xDC,0x82,0xB7,0x81,0x42,0x94,0xBC, 0x8A,0x70,0x89,0x70,0x8C,0xEA,0x82,0xCD,0x81,0x41, 0x8E,0x67,0x82,0xA6,0x82,0xDC,0x82,0xB9,0x82,0xF1, 0x82,0xB5,0x81,0x41,0x89,0xFC,0x8D,0x73,0x82,0xE0, 0x8E,0x67,0x82,0xA6,0x82,0xDC,0x82,0xB9,0x82,0xF1, 0x82,0xCC,0x82,0xC5,0x8E,0xA9,0x93,0xAE,0x89,0xFC, 0x8D,0x73,0x82,0xC6,0x82,0xB7,0x82,0xE9,0x82,0xA9, 0x81,0x41,0x8A,0x4A,0x8E,0x6E,0x88,0xCA,0x92,0x75, 0x82,0xF0,0x8E,0x77,0x92,0xE8,0x82,0xB5,0x82,0xC4, 0x95,0xCA,0x83,0x81,0x83,0x62,0x83,0x5A,0x81,0x5B, 0x83,0x57,0x82,0xC6,0x82,0xB5,0x82,0xC4,0x8E,0x77, 0x92,0xE8,0x82,0xB7,0x82,0xE9,0x95,0x4B,0x97,0x76, 0x82,0xAA,0x82,0xA0,0x82,0xE8,0x82,0xDC,0x82,0xB7, 0x81,0x42,0x81,0x40,0x81,0x40,0x81,0x40,0x81,0x40, 0x00,0x00,0x00,0x00}; int main(void) { //システム最適設定 SYSTEMConfigPerformance(80000000); mJTAGPortEnable(DEBUG_JTAGPORT_OFF); // JTAGを無効化 //I/O設定 AD1PCFG = 0xFFFF; // 全てデジタルに(タッチ用設定は、AN4(X-)、AN3(Y+)なので、0xFFE7) TRISE = 0x0000; // LCDデータバス(DB0-DB7)オール出力 // TRISD = 0xFF07; // LCD_RS,CS,WR,RESET:全て出力・デバッグLED:出力・SW2-5:入力、他未使用ピンは入力設定 TRISD = 0xFFA7; // LCD_CS,RESET:全て出力・デバッグLED:出力・SW2-5:入力、他未使用ピンは入力設定 // TRISB = 0x4FDF; // VS1011_CS,RESET,DCS:出力、DREQ:入力・SD_CS:出力、WE,CD:入力、他未使用ピンは入力設定 TRISB = 0x4FC7; // VS1011_CS,RESET,DCS:出力、DREQ:入力・SD_CS:出力、LCD_WR,LCD_RS:出力、他未使用ピンは入力設定 // (今回は、SDカードと、VS1011は未使用だが、将来使う予定なので、その設定にしておく) TRISF = 0xFFFC; // 今回Fポートは未使用だが、RF0,RF1のみ出力設定にした LATDbits.LATD3 = 1; // デバッグLED消灯 // 液晶表示器の初期化 Glcd_Init(); Glcd_Clear(BLACK); // 漢字コード初期値 2バイトコード Upper = 0x81; Lower = 0x40; while(1){ /// ASCII文字の描画---------------------------------------------------------------------------------------- for(j=0; j<17; j++){ // ASCII文字全表示: 26文字/行 * 17文字/列=442キャラクタ for(i=0; i<26; i++){ index = j*26+i+0x20; // スペースコードから開始し、1行26文字で繰返し if (j<4) Glcd_Char(i, j, index, WHITE, BLACK); // 文字表示制御 if ((j>3) && (j<8)) Glcd_Char(i, j, index, GREEN, BLACK); if ((j>7) && (j<12))Glcd_Char(i, j, index, RED, BLACK); if ((j>11) && (j<17))Glcd_Char(i, j, index, YELLOW, BLACK); } } delay_ms(T0); // 5秒待ち Glcd_Clear(BLACK); // 黒でクリア ///-------------------------------------------------------------------------------------------------------- /// 漢字コードでの全漢字フォント表示------------------------------------------------------------------------ /// 432文字/1画面表示で、S-JISの8140h〜9FFChまで表示 while(!end){ for(Line=0; Line<18; Line++){ // 18行 for(Colum=0; Colum<24; Colum++){ // 24文字/行 KanjiCode(Line, Colum, Upper, Lower, WHITE, BLACK); // 漢字コードアップ Lower++; if(Lower > 0xFC){ // 下位コードがFChだったら Upper++; // 上位コードをアップ Lower = 0x40; // 下位コードは区切りの40hとする(初期化) if(Upper > 0x9F){ // 上位コードがA0hだったら Upper = 0x81; // 上位コードを初期化 end= 1; // 全フォント表示の終了フラグをセット Colum= 24; // 最後は1画面に満たないところで終了するのでforループ強制脱出のためColum上限にセット Line= 18; // 最後は1画面に満たないところで終了するのでforループ強制脱出のためLine上限にセット } } } } delay_ms(T0); Glcd_Clear(BLACK); // 黒でクリア } end= 0; ///-------------------------------------------------------------------------------------------------------- /// 漢字メッセージ表示-------------------------------------------------------------------------------------- Kanji_Str(0, 0, Message, WHITE, BLACK); delay_ms(T0); Glcd_Clear(BLACK); // 黒でクリア ///---------------------------------------------------------------------------------------------------------- } }