/* 2864 初始化 IC:SSD1306 */ VCC外部供电方式时初始化 write_com(0xAE); /*display off*/ write_com(0x00); /*set lower column address*/ write_com(0x10); /*set higher column address*/ write_com(0x40); /*set display start line*/ write_com(0xB0); /*set page address*/ write_com(0x81); /*contract control*/ write_com(0xcf); /*128*/ write_com(0xA1); /*set segment remap 0XA0*/ write_com(0xA6); /*normal / reverse*/ write_com(0xA8); /*multiplex ratio*/ write_com(0x3F); /*duty = 1/64*/ write_com(0xC8); /*Com scan direction 0XC0*/ write_com(0xD3); /*set display offset*/ write_com(0x00); /*0X60*/ write_com(0xD5); /*set osc division*/ write_com(0x80); write_com(0xD9); /*set pre-charge period*/ write_com(0xf1); write_com(0xDA); /*set COM pins*/ write_com(0x12); write_com(0xdb); /*set vcomh*/ write_com(0x40); write_com(0x8d); /*set charge pump disable*/ write_com(0x10); write_com(0xAF); /*display ON*/ VBAT外部供电方式时(IC内部升压)初始化 write_com(0xAE); /*display off*/ write_com(0x00); /*set lower column address*/ write_com(0x10); /*set higher column address*/ write_com(0x40); /*set display start line*/ write_com(0xB0); /*set page address*/ write_com(0x81); /*contract control*/ write_com(0xcf); /*128*/ write_com(0xA1); /*set segment remap 0XA0*/ write_com(0xA6); /*normal / reverse*/ write_com(0xA8); /*multiplex ratio*/ write_com(0x3F); /*duty = 1/64*/ write_com(0xC8); /*Com scan direction 0XC0*/ write_com(0xD3); /*set display offset*/ write_com(0x00); write_com(0xD5); /*set osc division*/ write_com(0x80); write_com(0xD9); /*set pre-charge period*/ write_com(0xf1); write_com(0xDA); /*set COM pins*/ write_com(0x12); write_com(0xdb); /*set vcomh*/ write_com(0x40); write_com(0x8d); /*set charge pump disable*/ write_com(0x14); write_com(0xAF); /*display ON*/ void write_w(unsigned char dat) { unsigned char m,da; unsigned char j; da=dat; for(j=0;j<8;j++) { m=da; SCL=0; m=m&0x80; if(m==0x80) { SDA=1; } else { SDA=0; } da=da<<1; SCL=1; } SCL=0; SCL=1; } void write_i(unsigned char ins) { start(); write_w(0x78); write_w(0x00); write_w(ins); stop(); } void write_d(unsigned char dat) { start(); write_w(0x78); write_w(0x40); write_w(dat); stop(); } void start() { SCL=1; SDA=1; SDA=0; SCL=0; } void stop() { SCL=0; SDA=0; SDA=1; SCL=1; } void delay(unsigned int t) { while(t>0) { t--; } }