/********************************************************************* * PIC24F用の、QVGAに7セグLED風描画テスト * プロジェクト名: QVGA_7SEG_DISP_TEST * * PIC24Fトレーニング基板を使い、7セグLED風描画テストを行った。 * 原典:京谷氏著書「グラフィック表示モジュール応用製作集」 * * Condition: * 8MHz Internal RC oscillator, 4x PLL (8MHzx4= 32MHz) * Fcy=32MHz/2=16MHz, Tcy=62.5ns * * CPU: PIC24FJ64GA002 * * 2.4インチQVGA液晶モジュール(aitendo): UL024TF * * デバッグ年月日: 2018/10/30 N.Ishii *********************************************************************/ #include "p24FJ64GA002.h" #include "colorlcd_libPIC24FVH_v2.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_FRC // 発振器の選択:FRCを選択する & FNOSC_FRCPLL // 8MHz Internal RC oscillator, 4x PLL-> 8MHzx4=32MHz & FCKSM_CSDCMD // クロック切り替え・クロックモニタ:供に無効 // & OSCIOFNC_OFF // OSCOピン機能:OSCOまたはFosc/2の出力する & OSCIOFNC_ON // OSCOピン機能:RA3ポートとする 161118 & IOL1WAY_OFF // RPレジスタプロテクト:プロテクトしない & I2C1SEL_PRI // I2C1のピン選択:主ピンを使用する & POSCMOD_NONE // 主発振器:使用しない ) //--------------------------------------------------------------- /// メッセージテーブル char str_Start[] = "Start Test!!"; char str_hPa[] = "hPa"; char str_Hz1[] = "Hz(FRQ)"; char str_Hz2[] = "Hz(STEP)"; int T0 = 5000; ////------------------------------------------------------------------------------------------------------------- int main(void) { // int i; //// I/O設定 AD1PCFG = 0xFFFF; // A/D Digi 選択:全デジタルI/Oに設定 CLKDIV = 0x0000; // System Clock devider 1:1 /// Setup PORT In/Out TRISB = 0x000F; // RB0,1:プロット間隔設定ピン入力、他(QVGAポート)は出力 // RB2 is SDA2 (Hi), RB3 is SCL2 (Hi) TRISA = 0x000F; // RA4(LCD_RST/) is Out, Other is Input /// Set Pull Up CNPU1 = 0x0030; // Pull Up Port is RB0(ピン1), RB1(ピン2) TRISAbits.TRISA3= 0; // 赤LED:デバッグ用 LATAbits.LATA3 = 1; // 赤LED消灯 // 液晶表示器の初期化 lcd_Init(); lcd_Clear(BLACK); lcd_Str(0, 0, str_Start, CYAN, BLACK); delay_ms(1000); lcd_Clear(BLACK); /// デモ1:3桁:"999"の7セグを表示します。 Draw7seg(0, 0, 999, 3, GREEN, BLACK); delay_ms(T0); lcd_Clear(BLACK); /// デモ2:7セグ・パターン(16進表示)を全て表示します。 Draw7seg(0, 0, 0, 1, GREEN, BLACK); // 1行目-1 Draw7seg(18, 0, 1234, 4, GREEN, BLACK); // 1行目-2 Draw7seg(0, 25, 56789, 5, BLUE, BLACK); // 2行目 Draw7seg_(0, 50, 0x77, YELLOW, BLACK); // 3行目'A' Draw7seg_(18, 50, 0x7C, YELLOW, BLACK); // 3行目'b' Draw7seg_(36, 50, 0x39, YELLOW, BLACK); // 3行目'c' Draw7seg_(54, 50, 0x5E, YELLOW, BLACK); // 3行目'd' Draw7seg_(72, 50, 0x79, YELLOW, BLACK); // 3行目'E' Draw7seg_(90, 50, 0x71, YELLOW, BLACK); // 3行目'F' delay_ms(T0); lcd_Clear(BLACK); /// デモ3:温湿度・気圧の、7セグ表示デモ(128x128 OLED使用前提) Draw7seg(0, 0, 1020, 4, YELLOW, BLACK); // 気圧 lcd_Str(6, 1, str_hPa, YELLOW, BLACK); // "hPa" Draw7seg(36, 33, 64, 2, CYAN, BLACK); // 湿度 lcd_Char(6, 3, 0x25, CYAN, BLACK); // '%' Draw7seg(36, 66, 22, 2, MAGENTA, BLACK); // 温度 lcd_Char(6, 5, 0xE0, MAGENTA, BLACK); // '゜C' delay_ms(T0); lcd_Clear(BLACK); /// デモ4:Easy_FRA_V4の、7セグ表示デモ 181029 Draw7seg(0, 4, 10000000, 8, WHITE, BLACK); // 周波数設定値 lcd_Str(12, 1, str_Hz1, WHITE, BLACK); // "Hz (FRQ)" // Draw7seg(0, 36, 10, 8, GREEN, BLACK); // ステップ設定値 Draw7seg(108, 36, 10, 2, GREEN, BLACK); // 1, 10, 100, 1000, 10000, 100000, 1000000 7種類の固定値でゼロブランク表示:181030 lcd_Str(12, 3, str_Hz2, GREEN, BLACK); // "Hz (STEP)" LATAbits.LATA3= 0; // 赤LED点灯 while(1); }