void oled_reset(void) { // repeat 2 times write_bit(RES_n, 0); //clr(CTRL, RES_n); //RES_n = 0; oled_delay(DELAY_CAL2); write_bit(RES_n, 1); //set(CTRL, RES_n); //RES_n = 1; oled_delay(DELAY_CAL2); write_bit(RES_n, 0); //clr(CTRL, RES_n); //RES_n = 0; oled_delay(DELAY_CAL2); write_bit(RES_n, 1); //set(CTRL, RES_n); //RES_n = 1; oled_delay(DELAY_CAL2); }
void oled_write_cmd(unsigned char command) { write_bit(CS_n, 0); //clr(CTRL, CS_n); //CS_n =0; oled_delay(DELAY_CAL); write_bit(DC_n, 0); //clr(CTRL, DC_n); //DC_n =0; oled_delay(DELAY_CAL); unsigned char i; for(i = 0; i<8; i++) { unsigned char tmp; write_bit(SCLK, 0); //clr(DATA, SCLK); // low oled_delay(DELAY_CAL); tmp = check(command, (7-i)); if(tmp != 0) { write_bit(SDIN, 1); //set(DATA, SDIN); // data oled_delay(DELAY_CAL); write_bit(SCLK, 1); //set(DATA, SCLK); // hi oled_delay(DELAY_CAL); } if(tmp == 0) { write_bit(SDIN, 0); //clr(DATA, SDIN); // data oled_delay(DELAY_CAL); write_bit(SCLK, 1); //set(DATA, SCLK); // hi oled_delay(DELAY_CAL); } } oled_delay(DELAY_CAL); write_bit(SCLK, 0); //set(CTRL, CS_n); //CS_n=1; }
void oled_WriteCMD(unsigned char dat){ oled_PORT_CS &= ~oled_BIT_CS; oled_delay (10); oled_PORT_DC &= ~oled_BIT_DC; //INSTRUCTION oled_delay (10); oled_SwitchSID(((dat & 0x80) == 0x80)); oled_SendClock(); // send MSB oled_SwitchSID(((dat & 0x40) == 0x40)); oled_SendClock(); oled_SwitchSID(((dat & 0x20) == 0x20)); oled_SendClock(); oled_SwitchSID(((dat & 0x10) == 0x10)); oled_SendClock(); oled_SwitchSID(((dat & 0x08) == 0x08)); oled_SendClock(); oled_SwitchSID(((dat & 0x04) == 0x04)); oled_SendClock(); oled_SwitchSID(((dat & 0x02) == 0x02)); oled_SendClock(); oled_SwitchSID(((dat & 0x01) == 0x01)); oled_SendClock(); // sedn LSB oled_PORT_CS |= oled_BIT_CS; }
void oled_InitDevice(void) { oled_PORT_RST &= ~oled_BIT_RST; oled_delay(1000); oled_PORT_RST |= oled_BIT_RST; oled_WriteCMD(0xAE); /* 关闭显示 */ oled_WriteCMD(0xD5); /* 设置时钟分频因子,振荡频率 */ oled_WriteCMD(0x80); /* [3:0],分频因子;[7:4],振荡频率 */ oled_WriteCMD(0xA8); /* 设置驱动路数 */ oled_WriteCMD(0x3F); /* 默认0x3F(1/64) */ oled_WriteCMD(0xD3); /* 设置显示偏移 */ oled_WriteCMD(0x00); /* 默认为0 */ oled_WriteCMD(0x40); /* 设置显示开始行[5:0],行数 */ oled_WriteCMD(0x8D); /* 电荷泵设置 */ oled_WriteCMD(0x14); /* bit2,开启/关闭 */ oled_WriteCMD(0x20); /* 设置内存地址模式 */ oled_WriteCMD(0x02); /* [1:0],00,列地址模式;01,行地址模式;10,页地址模式;默认10; */ oled_WriteCMD(0xA1); /* 段重定义设置,bit0:0,0->0;1,0->127; */ oled_WriteCMD(0xC0); /* 设置COM扫描方向;bit3:0,普通模式;1,重定义模式 COM[N-1]->COM0;N:驱动路数 */ oled_WriteCMD(0xDA); /* 设置COM硬件引脚配置 */ oled_WriteCMD(0x12); /* [5:4]配置 */ oled_WriteCMD(0x81); /* 对比度设置 */ oled_WriteCMD(0xEF); /* 1~255;默认0x7F (亮度设置,越大越亮) */ oled_WriteCMD(0xD9); /* 设置预充电周期 */ oled_WriteCMD(0xF1); /* [3:0],PHASE 1;[7:4],PHASE 2; */ oled_WriteCMD(0xDB); /* 设置VCOMH 电压倍率 */ oled_WriteCMD(0x30); /* [6:4] 000,0.65*VCC;001,0.77*VCC;011,0.83*VCC; */ oled_WriteCMD(0xA4); /* 全局显示开启;bit0:1,开启;0,关闭;(白屏/黑屏) */ oled_WriteCMD(0xA6); /* 设置显示方式;bit0:1,反相显示;0,正常显示 */ oled_WriteCMD(0xAF); /* 开启显示 */ oled_ClearScreen(); }