示例#1
0
void OLED12864::setPos(int x, int y)
{
        x+=2;
	txCmd(0xb0 + y);
	txCmd(((x&0xf0)>>4)| 0x10);
	txCmd((x&0x0f));
}
示例#2
0
void OLED12864::fillPattern(unsigned char pattern)
{
	unsigned char y,x;
	for(y=0;y<SCREEN_PIXEL_HEIGHT/8;y++)
	{
		txCmd(0xb0 | y);
		txCmd(0x01);
		txCmd(0x10);
		for(x=0;x<SCREEN_PIXEL_WIDTH;x++)
		{
			txData(pattern);
		}
	}
}
示例#3
0
void FstopComms::respondWrite()
{
    if(!checkcheck())
        return;

    unsigned int addr=getAddr();
    char len=cmd[PKT_LEN];

    if(len < 1 || len > PKT_MAXREQ || addr < EEPROM_MIN_WRITE || addr+len > EEPROM_MAX_WRITE){
        nak(BAD_WRITE);
        return;
    }

    // copy from buffer to EEPROM
    char bp=PKT_SHORTHDR;
    for(char i=0;i<len;++i){
        EEPROM.write(addr++, cmd[bp++]);
    }

    cmd[PKT_CMD]=COM_WRITEACK;
    buflen=PKT_SHORTHDR;

    // recompute checksum, send without data
    txCmd();
}
示例#4
0
void FstopComms::respondRead()
{
    if(!checkcheck())
        return;

    unsigned int addr=getAddr();
    char len=cmd[PKT_LEN];

    if(len < 1 || len > PKT_MAXREQ || addr < EEPROM_MIN_READ || addr+len > EEPROM_MAX_READ){
        nak(BAD_READ);
        return;
    }

    // read from EEPROM into buffer
    cmd[PKT_CMD]=COM_READACK;

    for(char i=0;i<len;++i){
        cmd[i+PKT_SHORTHDR]=EEPROM.read(addr++);
    }
    buflen=len+PKT_SHORTHDR;

    // append checksum and send.
    txCmd();
}
示例#5
0
void OLED12864::init()
{
    // set pin mode...

    pinMode(OLED_SPI_CS, OUTPUT);   
    pinMode(OLED_SPI_CLK, OUTPUT);  
    pinMode(OLED_SPI_MOSI, OUTPUT);     
    digitalWrite(OLED_SPI_CLK, 1);
    digitalWrite(OLED_SPI_MOSI, 1);
    digitalWrite(OLED_SPI_CS, 1);
    digitalWrite(OLED_SPI_CS, 0);

    pinMode(OLED_CMD, OUTPUT);    
    digitalWrite(OLED_CMD, 1);

    delay(1);


	digitalWrite(OLED_SPI_CLK,1);
	
    //OLED_RST_Clr();
	
    delay(500);
	
    //OLED_RST_Set();
	
	txCmd(0xAE);//--turn off oled panel
	
	txCmd(0x02);//---set low column address
	txCmd(0x10);//---set high column address
	
	txCmd(0x40);//--set start line address  Set Mapping RAM Display Start Line (0x00~0x3F)
	
	txCmd(0xB0);//--set contrast control register
	
	txCmd(0x81); // Set SEG Output Current Brightness
	txCmd(0xFF);//--Set SEG/Column Mapping     0xa0???? 0xa1??
	
	txCmd(0xA1);//Set COM/Row Scan Direction   0xc0???? 0xc8??
	
	txCmd(0xA6);//--set normal display
	
	txCmd(0xA8);//--set multiplex ratio(1 to 64)
	txCmd(0x3F);//--1/64 duty
	
	txCmd(0xAD);//-set display offset	Shift Mapping RAM Counter (0x00~0x3F)
	txCmd(0x8B);//-not offset
	
	txCmd(0x33);//--set display clock divide ratio/oscillator frequency
	
	txCmd(0xC8);//--set divide ratio, Set Clock as 100 Frames/Sec
	
	txCmd(0xD3);//--set pre-charge period
	txCmd(0x00);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
	
	txCmd(0xD5);//--set com pins hardware configuration
	txCmd(0x80);
	
	txCmd(0xD9);//--set vcomh
	txCmd(0x1F);//Set VCOM Deselect Level
	
	txCmd(0xDA);//-Set Page Addressing Mode (0x00/0x01/0x02)
	txCmd(0x12);//
	
	txCmd(0xDB);//--set Charge Pump enable/disable
	txCmd(0x40);//--set(0x10) disable
    
	txCmd(0xAF);//--turn on oled panel
	
	clear();
	setPos(0,0);
}