/******************************************************************* * PIC24F_TFT2P2037_TEST_1 * コントローラIC:S6D0151 * * Condition: * 8MHz Internal RC oscillator, 4x PLL (8MHzx4= 32MHz) * Fcy=32MHz/2=16MHz, Tcy=62.5ns * * CPU: PIC24FJ64GA002 * * 2022/7/29: N.Ishii ********************************************************************/ #include #include "S6D0151.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 char i,j; /// 画面全体描画(16ビットカラー各色で順次全体描画)------------------------------------------ Clear_LCD(WHITE); delay_ms(1000); Clear_LCD(BLACK); delay_ms(1000); Clear_LCD(RED); delay_ms(1000); Clear_LCD(GREEN); delay_ms(1000); Clear_LCD(BLUE); delay_ms(1000); Clear_LCD(CYAN); delay_ms(1000); Clear_LCD(MAGENTA); delay_ms(1000); Clear_LCD(YELLOW); delay_ms(1000); Clear_LCD(BROWN); delay_ms(1000); Clear_LCD(ORANGE); delay_ms(1000); Clear_LCD(PERPLE); delay_ms(1000); Clear_LCD(COBALT); delay_ms(1000); delay_ms(T0); // 5秒待ち ///----------------------------------------------------------------------------------------------------- /// 斜め直線描画------------------------------------------------------------------------------------------ Clear_LCD(WHITE); // クリア for(i=0; i<128; i++){ // 斜め直線の表示: 白ベタ背景・黒線表示 lcd_Pixel(i,i,BLACK); lcd_Pixel(128+i, i,BLACK); } delay_ms(T0); // 5秒待ち Clear_LCD(BLACK); // クリア for(i=0; i<128; i++){ // 斜め直線: 黒ベタ背景・白線表示 lcd_Pixel(i,i,WHITE); lcd_Pixel(128+i, i,WHITE); } delay_ms(T0); // 5秒待ち Clear_LCD(BLACK); // クリア ///----------------------------------------------------------------------------------------------------- /// 直線描画テスト-------------------------------------------------------------------------------------------- i = 0; for(j=0; j<64; j+=5){ // ボックス表示 lcd_Line(j,j, 159-j, j,YELLOW); // 次第に小さなボックスへ lcd_Line(j,j, j, 127 -j,YELLOW); lcd_Line(159-j,127-j, 159-j,j,YELLOW); lcd_Line(159-j,127-j, j,127-j,YELLOW); delay_ms(500); } delay_ms(T0); Clear_LCD(BLACK); // クリア ///---------------------------------------------------------------------------------------------------------- /// 円の描画------------------------------------------------------------------------------------------------- for(i = 0; i < 10; i++){ lcd_Circle(160/2 + 5*i,128/2,128/2,GREEN); } delay_ms(T0); 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); while(1){ DisplayFunc(); } }