Exemplo n.º 1
0
Arquivo: oled.c Projeto: tymbys/Watch
//ѕтSSD1306–і»л“їЄц„÷љЏ°£
//dat:“™–і»лµƒ эЊЁ/√ьЅо
//cmd: эЊЁ/√ьЅо±к÷Њ 0,±н Њ√ьЅо;1,±н Њ эЊЁ;
void OLED_WR_Byte(u8 dat,u8 cmd)
{	
	u8 i;			  
	if(cmd)
	  OLED_RS_Set();

	else 
	  OLED_RS_Clr();


	//delay_ms(1);

	OLED_CS_Clr();
	for(i=0;i<8;i++)
	{			  
		OLED_SCLK_Clr();
		if(dat&0x80)
		   OLED_SDIN_Set();
		else 
		   OLED_SDIN_Clr();
		OLED_SCLK_Set();
		dat<<=1;   
	}				 		  
	OLED_CS_Set();
	OLED_RS_Set();   	  
} 
//向SSD1306写入一个字节。
//dat:要写入的数据/命令
//cmd:数据/命令标志 0,表示命令;1,表示数据;
void OLED_WR_Byte(uint8_t dat,uint8_t cmd)
{	
	//uint8_t i;		
  
 spi0_tx_data[0]=dat;	
	if(cmd)
	  OLED_RS_Set();
	else 
	  OLED_RS_Clr();		  
#if 0
	OLED_CS_Clr();

	for(i=0;i<8;i++)
	{			  
		OLED_SCLK_Clr();
		if(dat&0x80)
		   OLED_SDIN_Set();
		else 
		   OLED_SDIN_Clr();
		OLED_SCLK_Set();
		dat<<=1;   
	}		
	OLED_CS_Set();
#endif	
	//NRF_SPI0
    if(!spi_master_tx_rx(spi_base_address, 1, (const uint8_t *)spi0_tx_data, (uint8_t*) spi0_rx_data))
//	if(!spi_master_tx_rx(NRF_SPI0, 1, (const uint8_t *)spi0_tx_data, (uint8_t*) spi0_rx_data))
    {
        return ;
    }

	OLED_RS_Set();   	  
} 
Exemplo n.º 3
0
//向SSD1106写入一个字节。
//dat:要写入的数据/命令
//cmd:数据/命令标志 0,表示命令;1,表示数据;
void OLED_WR_Byte(u8 dat,u8 cmd)
{
	DATAOUT(dat);	    
	if(cmd)
	  OLED_DC_Set();
	else 
	  OLED_DC_Clr();		   
	OLED_CS_Clr();
	OLED_WR_Clr();	 
	OLED_WR_Set();
	OLED_CS_Set();	  
	OLED_DC_Set();	 
} 	    	    
Exemplo n.º 4
0
/**
  * @brief  Write a byte to OLED

	@params dat: 8-bit data being transferred

			cmd: Command or data select

	  @retval None
  */
static void OLED_WR_Byte(unsigned char  dat, unsigned char  cmd)
{
	if (cmd)
		OLED_RS_Set();
	else
		OLED_RS_Clr();
	OLED_CS_Clr();

	SPI2_ReadWriteByte(dat);

	OLED_CS_Set();
	OLED_RS_Set();
}
Exemplo n.º 5
0
/*
*@功能:0:4线串行模式,向SSD1106写入一个字节。
*@输入:dat:要写入的数据/命令
*				cmd:数据/命令标志 0,表示命令;1,表示数据;
*/
void OLED_WR_Byte(uint8_t dat,uint8_t cmd)
{	
	uint8_t i;			  
	if(cmd)
	  OLED_DC_Set();
	else 
	  OLED_DC_Clr();		  
	OLED_CS_Clr();
	for(i=0;i<8;i++)		//从高位开始传送
	{			  
		OLED_SCLK_Clr();
		if(dat&0x80)
		   OLED_SDIN_Set();
		else 
		   OLED_SDIN_Clr();		//上升沿锁数据
		OLED_SCLK_Set();
		dat<<=1;   
	}				 		  
	OLED_CS_Set();
	OLED_DC_Set();   	  
} 
Exemplo n.º 6
0
/****************************************************************************
*	函数名:oledWriteCmd
	输  入:void
	输  出:u8 dat	指令
	功  能:向OLED写指令
	备  注:无
*	日  期:2015.02.01
****************************************************************************/
void oledWriteCmd(unsigned char dat)
{	
	u8 i;			  		  
	OLED_CS_Clr();
	
	OLED_SCLK_Clr();
	OLED_SDA_Clr();
	OLED_SCLK_Set();
	
	for(i=0;i<8;i++)
	{			  
		OLED_SCLK_Clr();
		if(dat&0x80)
			OLED_SDA_Set();
		else 
			OLED_SDA_Clr();
		OLED_SCLK_Set();
		dat<<=1;   
	}				 		  
	OLED_CS_Set();  	  
} 
Exemplo n.º 7
0
void OLED_WR_Byte(uint8_t dat,uint8_t cmd)
{
#if	(FB_OLED && FB_IIC_OLED)
	if(cmd)
			{
   IIC_Start();
   Write_IIC_Byte(0x78);			//D/C#=0; R/W#=0
   Write_IIC_Byte(0x40);			//write data
   Write_IIC_Byte(dat);
   IIC_Stop();
		}
	else {
		IIC_Start();
   Write_IIC_Byte(0x78);            //Slave address,SA0=0
   Write_IIC_Byte(0x00);			//write command
   Write_IIC_Byte(dat); 
   IIC_Stop();
		
	}
#endif
#if	(FB_OLED && FB_SPI_OLED)
		//uint8_t i;
	uint8_t buffer[1];
	buffer[0] = dat;	
	if(cmd)
	  OLED_DC_Set();
	else 
	  OLED_DC_Clr();		  
	OLED_CS_Clr();
	spi_write(QN_SPI1, buffer, 1, oled_write_done);
	delay(100);
			 		  
	OLED_CS_Set();
	OLED_DC_Set();  
#endif

}