void st7567_init(void) { u8 i,j; spi_init(); ST_RST = 0; delay_ms(2); ST_RST = 1; delay_ms(100); ST_CSB = 0; // spi_write_com(0xe2); //Soft rest // spi_write_com(0xae); //显示 spi_write_com(0xa2); //SET LCD bias(A2-1/9bias; A3-1/7bias) spi_write_com(0x25); //SET INTERNAL REGULATOR RESDASTOR RATIO(100B)-POR //对比度调节(0-0x3f / 0-63) spi_write_com(0x81); //前缀 spi_write_com(0x1a); // SET CONTRAST CONTROL REGISTER(00,0000H-11,1111H) //打开电源 spi_write_com(0x2f); //SET POWER CONTROL REGISTER (ALL INTERNAL) //设置扫描方向 spi_write_com(0xA0); //设置seg方向,seg0->seg131 spi_write_com(0xC8); //设置COM方向,0xc0=com0->com63 0xc8=com63->com0 spi_write_com(0xA6); //取消反显 spi_write_com(0xA4); //取消全显 // spi_write_com(0xA6+1); //反显 // spi_write_com(0xA4+1); //全显 spi_write_com(0x40); //设置起始行 0-63 // spi_write_com(0xB0); //设置页地址 0-8 // // spi_write_com(0x10); //列地址高四位 // spi_write_com(0); //列地址低四位 // clear_screen(0xff); for(i=0;i<8;i++) { spi_write_com(0xb0+i); spi_write_com(0x10); spi_write_com(0x00); for(j=0;j<128;j++) { lcd_write_dat(0); } } spi_write_com(0xaf); //开显示 }
void clear_screen(u8 xx) { u8 i,j; for(i=0;i<8;i++) { spi_write_com(0xb0+i); spi_write_com(0x10); spi_write_com(0x00); for(j=0;j<128;j++) { lcd_write_dat(xx); } } }
void draw_pic(u8 *p_picture) { u8 i,j; for(i=0;i<8;i++) //8页 { spi_write_com(0xb0+i); spi_write_com(0x10); spi_write_com(0x00); for(j=0;j<128;j++) { lcd_write_dat(*p_picture++); } } }
/* writes both a command and data value to the lcd */ static void lcd_write(uint8_t cmd, uint8_t data) { lcd_write_cmd(cmd); lcd_write_dat(data); }