#include <24FJ64GA002.h> #fuses FRC,NOJTAG,OSCIO,NOWDT,NOPROTECT//内部クロック #use delay(internal=8000000) //クロック8MHz #pin_select U1TX=PIN_B7 #pin_select U1RX=PIN_B6 #use RS232(BAUD=9600,xmit=PIN_B7,rcv=PIN_B6) #define WT 1 #define CS PIN_B10 #define DI PIN_B13//SDATA #define CLK PIN_B11 #define RES PIN_B12 #define DISON 0xaf // 1. Display on P0 #define DISOFF 0xae // 2. Display off P0 #define DISINV 0xa7 // 4. Inverse display P0 #define COMSCN 0xbb // 5. Common scan direction P1 #define DISCTL 0xca // 6. Display control P4 (データシートp.30のP3は間違い) #define SLPOUT 0x94 // 8. Sleep out P0 #define PASET 0x75 // 9. Page Address set P2 #define CASET 0x15 // 10.Column Address set P2 #define DATCTL 0xbc // 11.Data scan direction, etc. P3 #define RAMWR 0x5c // 13.Writing to memory P:data #define OSCON 0xd1 // 21.Internal oscillation on P0 #define PWRCTR 0x20 // 23.Power control P1 #define VOLCTR 0x81 // 24.Electronic colume control P2 //int8 cmd_list[8]={0,1,16,17,24}; // 0リセット 1初期化 16ブロック長 17リード 24ライト] int8 indata[512]; int8 file[10][32]; void w_spi8(int8 cmd){ int j; output_low(CS); output_low(DI); output_high(CLK); delay_us(WT); output_low(CLK); delay_us(WT); for(j=0;j<8;j++){ if(cmd&0x80) output_high(DI); else output_low(DI); output_high(CLK); delay_us(WT); output_low(CLK); delay_us(WT); cmd<<=1; } output_high(CS); } void w_spi82(int8 cmd){ int j; output_low(CS); output_high(DI); output_high(CLK); delay_us(WT); output_low(CLK); delay_us(WT); for(j=0;j<8;j++){ if(cmd&0x80) output_high(DI); else output_low(DI); output_high(CLK); delay_us(WT); output_low(CLK); delay_us(WT); cmd<<=1; } output_high(CS); } void w_spi(int data){//16bitのデータ送信 int j; output_low(CS); output_low(DI); output_high(CLK); delay_us(WT); output_low(CLK); delay_us(WT); for(j=0;j<16;j++){ if(data&0x8000) output_high(DI); else output_low(DI); output_high(CLK); delay_us(WT); output_low(CLK); delay_us(WT); data<<=1; } //output_high(CS); } /* void init(){ output_high(CS); output_low(RES); output_high(DI); delay_ms(100); output_high(RES); delay_ms(100); w_spi8(0x94);//slpout w_spi8(0xCA);//DISCTL w_spi82(0b00000000); w_spi82(0b00100111); w_spi82(00001010); w_spi8(0xd1);//OSCON w_spi8(0x81);//VOLCTR w_spi82(37); w_spi82(4); w_spi8(0x28);//TMPGRD w_spi82(0); w_spi8(0x20);//PWRCTL w_spi82(0x00001111); w_spi8(0xa6);//DISNOR w_spi8(0xa9);//PTLOUT w_spi8(0xaa);//ASCET w_spi82(0); w_spi82(39); w_spi82(40); w_spi82(0x00000011); w_spi8(0xab);//SCSTART w_spi82(0); w_spi8(0xbc);//DATCTL w_spi82(0b00000110); w_spi82(1); w_spi82(1); w_spi8(0xce);//RGBSET8 w_spi82(0); w_spi82(3); w_spi82(5); w_spi82(7); w_spi82(9); w_spi82(11); w_spi82(13); w_spi82(15); w_spi82(0); w_spi82(8); w_spi82(9); w_spi82(10); w_spi82(12); w_spi82(15); w_spi82(0); w_spi82(6); w_spi82(8); w_spi82(15); delay_ms(100); w_spi8(0xaf);//DISON } */ void init(){ int j=0; output_high(CS); output_low(RES); output_high(DI); delay_us(100); output_high(RES); delay_us(100); w_spi8(DISCTL); w_spi82(0); w_spi82(32); w_spi82(11); w_spi82(0); w_spi8(COMSCN); w_spi82(1); w_spi8(OSCON); w_spi8(SLPOUT); w_spi8(PWRCTR); w_spi82(15); w_spi8(DISINV); w_spi8(DATCTL); w_spi82(0); w_spi82(0); w_spi82(4); w_spi8(VOLCTR); w_spi82(33); w_spi8(3); w_spi8(CASET); w_spi82(0); w_spi82(131); w_spi8(PASET); w_spi82(0); w_spi82(131); w_spi8(RAMWR); for(j=0;j<132*132;j++){ w_spi82(0x00); w_spi82(0x0f); } delay_ms(10); w_spi8(DISON); } void main(){ init(); while(1); }