/****************************************************************************** * TFTカラー液晶_7セグLED風描画テスト * プロジェクト名: PIC24F_TFT2P2037_7SEG_DISP_TEST * * CPU: PIC24FJ64GA002 * * Condition: * 8MHz Internal RC oscillator, 4x PLL (8MHzx4= 32MHz) * Fcy=32MHz/2=16MHz, Tcy=62.5ns * * 1.77インチ160x128dotカラー液晶(aitendo): TFT2P2037-E * コントローラIC:S6D0151 * * PIC24Fトレーニング基板を使用 * 原典:京谷氏著書「グラフィック表示モジュール応用製作集」 * * 初期作成年月日: 2022/8/13 N.Ishii * <修正履歴> * xxxxxx *******************************************************************************/ #include #include "S6D0151_v2.h" // Set Configuration Word 1 _CONFIG1 ( JTAGEN_OFF & // JTAG Port: OFF GCP_OFF & // Code Protect: OFF GWRP_OFF & // Write Protect:OFF BKBUG_OFF & // Background Debug: OFF COE_OFF & // Clip On Emulation: OFF ICS_PGx1 & // Select ICD Pin: EMUC/EMUD-> PGC1/PGD1 For Common Use FWDTEN_OFF // WDT: OFF ) // Set Configuration Word 2 _CONFIG2 ( IESO_OFF & // 2 Speed Start Up: OFF FNOSC_FRCPLL & // 8MHz Internal RC oscillator, 4x PLL-> 8MHzx4=32MHz FCKSM_CSDCMD & // Change Clock Control: OFF Clock Monitor: OFF OSCIOFNC_ON & // OSCO/RA3 function: Used RA3 IOL1WAY_OFF & // RP Register Protection: Unlimited Writes To RP Registers I2C1SEL_PRI & // I2C1 pins Select: Use Primary I2C1 pins POSCMOD_NONE // Oscillator Selection: Primary disabled ) //----------------------------------------------------------------------------------- int T0 = 5000; ////---------------------------------------------------------------------------------- void DisplayFunc() { unsigned int i; /// デモ1:3桁:"999"の7セグを表示します。 Draw7seg(0, 0, 999, 3, GREEN, BLACK); delay_ms(T0); // 5秒待ち Clear_LCD(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); // 5秒待ち Clear_LCD(BLACK); // クリア ///-------------------------------------------------------------------------------------------------------- /// デモ3:表示桁数と数値桁数が合わない場合の表示確認(Value < cColum) Draw7seg(0, 0, 50, 3, GREEN, BLACK); // 表示結果= " 50"→ 3桁目ゼロブランク delay_ms(T0); // 5秒待ち Clear_LCD(BLACK); // クリア Draw7seg(0, 0, 3, 5, GREEN, BLACK); // 表示結果= " 3"→ 5〜2桁目ゼロブランク delay_ms(T0); // 5秒待ち Clear_LCD(BLACK); // クリア /// ----------------------------------------------------------------------- /// デモ4:温湿度・気圧の、7セグ表示デモ Draw7seg(0, 19, 1020, 4, YELLOW, BLACK); // 気圧:1100hpa max lcd_Str_12x12(6, 2, " [hPa]", YELLOW, BLACK); Draw7seg(36, 52, 64, 2, CYAN, BLACK); // 湿度:100%max lcd_Str_12x12(6, 4, " [%]", CYAN, BLACK); Draw7seg(36, 86, 22, 2, MAGENTA, BLACK); // 温度:85°C max lcd_Str_12x12(6, 7, " [゚C]", MAGENTA, BLACK); delay_ms(T0); // 5秒待ち Clear_LCD(BLACK); // クリア ///-------------------------------------------------------------------------------------------------------- /// デモ5:ゼロブランク・テスト_2:数値をインクリメントしながら確認:0〜19999 i= 0; while(i != 20000) { Draw7seg(0, 0, i, 5, CYAN, BLACK); delay_ms(200); ++i; } delay_ms(T0); // 5秒待ち Clear_LCD(BLACK); // クリア } ////------------------------------------------------------------------------------------------------------------- /// Main routine int main(void) { // CPU Clock Pre Scalere 1:1 CLKDIV = 0; // Set AD1PCFG: ANx Port is All Digital Pin AD1PCFG = 0xFFFF; TRISAbits.TRISA3 = 0; // RA3 is RED_LED output used debug TRISAbits.TRISA4 = 0; // RA4 is GREEN_LED output LATAbits.LATA3 = 1; // RED_LED OFF LATAbits.LATA4 = 1; // GREEN_LED OFF TRISB = 0x03FF; // RB15-12:SPI制御信号出力(RST/含める)・RB11,10:未使用出力 // RB1-0:SW入力未使用、その他未使用:入力 /// Set Pull Up CNPU1 = 0x0030; // Pull Up Port is RB0(ピン1):SW1, RB1(ピン2):SW2 未使用 LCD_Initialize(); Clear_LCD(BLACK); DisplayFunc(); LATAbits.LATA4 = 0; // GREEN_LED ON while(1); }