精华内容
下载资源
问答
  • 1.37寸OLED原理图

    2019-07-20 10:46:03
    0.96寸OLED屏幕原理图;可直接使用;SPI与IIC两种接法;已批量打板验证
  • 0.96寸OLED原理图

    2018-07-12 18:50:49
    0.96OLED原理图 可以用于OLED的学习和开发。 
  • 实用OLED原理图

    2019-02-21 14:21:04
    实用OLED原理图屏幕分辨率128*64,运用SSH1106方案,元件少,易设计
  • 01中景园电子1.3英寸OLED显示屏原理图
  • oled显示原理

    2015-05-10 12:24:12
    有机发光二极管最简单的形式是由一个发光材料层组成,嵌在两个电极之间。输入电压时载流子运动,穿过有机层,直至电子空穴并重新结合,这样达到能量守恒并将过量的能量以光脉冲形式释放。...oled显示屏显示原理图
  • OLED显示模块(7PIN)教程资料-技小新-(技小新)0.96寸OLED模块-7PIN-原理图.pdf
  • 0.96寸OLED显示屏四针IIC硬件驱动电路,之前试过很多个都不管用,用这个电路成功点亮,压缩包内包含sch原理图文件和pcb文件,可直接制板。
  • 0.96寸OLED 屏幕SSD1306驱动外围电路四脚原理图PDF 自己抄的板子,已送去加工打板,并调试成功,需要的看看 原理图

    0.96寸OLED 屏幕SSD1306驱动外围电路四脚原理图PDF

              自己抄的板子,已送去加工打板,并调试成功,需要的看看
    

    原理图以成功点亮

    实物图

    原理图文件地址 https://download.csdn.net/download/Larry_17/12554104
    PCB文件地址 https://download.csdn.net/download/Larry_17/12554134

    展开全文
  • 0.96寸OLED-30PIN-IIC接口原理图 I2C IIC I2C IIC IIC
  • 蓝宙电子科技OLED 屏幕原理图及例程
  • 数码管TFT屏OLED原理图封装库(AD库),包含各类数码管,1602,12864等,共64个封装,基本包含了所有原理图封装,是Altium Designer的SCH封装库,.SchLib格式的,非常实用,文件556K
  • 该文以STC89C52单片机为控制核心,0.96寸OLED模块为显示输出设备,在Keil环境下编写OLED显示模块驱动程序,并下载Hex文件至单片机,从而实现OLED显示系统设计。
  • OLED 屏幕作为一种新型的显示技术,其自身可以发光,亮度,对比度高,功耗低,在当下备受追捧。而在我们正常的显示调整参数过程中,我们越来越多的使用这种屏幕。我们使用的一般是分辨率为 128×64 ,屏幕尺寸为 ...

    一、简介

    OLED 屏幕作为一种新型的显示技术,其自身可以发光,亮度,对比度高,功耗低,在当下备受追捧。而在我们正常的显示调整参数过程中,我们越来越多的使用这种屏幕。我们使用的一般是分辨率为 128×64 ,屏幕尺寸为 0.96 寸。由于其较小的尺寸和比较高的分辨率,让它有着很好的显示效果和便携性。

                                                   

     

    目前我们经常使用的 OLED 屏幕一般有两种接口,IIC 或者 SPI ,两者使用的通信协议稍有不同,这里以 SPI 协议的 OLED 屏幕为例,带来它的使用方法。

     

    模块接口定义

     

    二、原理

    如何控制每个像素的显示

    这个屏幕的像素矩阵的划分是比较特殊的, 整个屏幕水平方向划分为8个page, 垂直方向则是按像素划分为128 column. 每个page-column包含8个像素, 通过一个十六进制数(其实就是一个字节, 8个bit)来控制, 每个bit控制一个像素。

    即储存寄存器每个存储点的0/1控制(映射)一个像素点的亮/灭。

     

    如果我们要在左上角显示一个亮点, 需要发送0x01(16进制的1)到数据地址, 例如:

    Wire.beginTransmission(0x3C); // 控制指令

    Wire.write(0x40); // 写地址

    Wire.write(0x01); // 写数据

    Wire.endTransmission(); // 结束

     

    三、设计方案

    原理图:

     

    PCB:

     

     

    程序:

    51单片机程序

    STM32程序

     原创文章,首发于allchipdata.com , 电路和程序资源免费下载见:http://www.allchiphome.com/post/oled12864_project

    我是电子飓风eStorm,一个热爱电路/RF/微波设计的男孩;欢迎交流,微信号:eStorm22

    展开全文
  • 本设计分享的是128x64的OLED显示屏模块电路工程文件设计,见附件下载其原理图/PCB源文件及OLED库文件。该OLED显示屏的优点是其功耗低,可以说是最节能的液晶屏幕。128x64的OLED屏非常酷,该模块配备了最全面的软件...
  • 1.3寸OLED模块的6PIN SPI显示屏电路原理图 接口配置方法: 4线SPI接口焊接:R3 IIC接口焊接:R1,R6,R7,R8 R8可不焊接,官方手册要求焊接
  • 一、原理图 芯片引脚连接 二、驱动程序 spi.c #include "spi.h" void SPI1_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2...

    一、原理图
    在这里插入图片描述
    芯片引脚连接
    在这里插入图片描述
    二、驱动程序
    spi.c

    #include "spi.h"
    
    void SPI1_Init(void)
    {
     	GPIO_InitTypeDef GPIO_InitStructure;
        SPI_InitTypeDef  SPI_InitStructure;
    
    	RCC_APB2PeriphClockCmd(	RCC_APB2Periph_GPIOA, ENABLE );//PORTA时钟使能 
    	RCC_APB2PeriphClockCmd(	RCC_APB2Periph_SPI1,  ENABLE );//SPI1时钟使能 	
     
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7;
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  
    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    	GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA
    
     	GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_7);  //PB13/14/15上拉
    
    	SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;  //设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工
    	SPI_InitStructure.SPI_Mode = SPI_Mode_Master;		//设置SPI工作模式:设置为主SPI
    	SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;		//设置SPI的数据大小:SPI发送接收8位帧结构
    	SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;		//串行同步时钟的空闲状态为高电平
    	SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;	//串行同步时钟的第二个跳变沿(上升或下降)数据被采样
    	SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;		//NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理:内部NSS信号有SSI位控制
    	SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;		//定义波特率预分频的值:波特率预分频值为256
    	SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;	//指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始
    	SPI_InitStructure.SPI_CRCPolynomial = 7;	//CRC值计算的多项式
    	SPI_Init(SPI1, &SPI_InitStructure);  //根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器
     
    	SPI_Cmd(SPI1, ENABLE); //使能SPI外设
    	
    	SPI1_ReadWriteByte(0xff);//启动传输		 
     
    
    }   
    //SPI 速度设置函数
    //SpeedSet:
    //SPI_BaudRatePrescaler_2   2分频   
    //SPI_BaudRatePrescaler_8   8分频   
    //SPI_BaudRatePrescaler_16  16分频  
    //SPI_BaudRatePrescaler_256 256分频 
      
    void SPI1_SetSpeed(u8 SPI_BaudRatePrescaler)
    {
      assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));
    	SPI1->CR1&=0XFFC7;
    	SPI1->CR1|=SPI_BaudRatePrescaler;	//设置SPI1速度 
    	SPI_Cmd(SPI1,ENABLE); 
    
    } 
    
    //SPIx 读写一个字节
    //TxData:要写入的字节
    //返回值:读取到的字节
    u8 SPI1_ReadWriteByte(u8 TxData)
    {		
    	u8 retry=0;				 	
    	while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
    		{
    		retry++;
    		if(retry>200)return 0;
    		}			  
    	SPI_I2S_SendData(SPI1, TxData); //通过外设SPIx发送一个数据
    	retry=0;
    
    	while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET) //检查指定的SPI标志位设置与否:接受缓存非空标志位
    		{
    		retry++;
    		if(retry>200)return 0;
    		}	  						    
    	return SPI_I2S_ReceiveData(SPI1); //返回通过SPIx最近接收的数据					    
    }
    
    

    oled.c

    #include "oled.h"
    #include "stdlib.h"
    #include "oledfont.h"  	 
    #include "delay.h"
    #include "stdio.h"
    #include "spi.h"
    //OLED的显存
    //存放格式如下.
    //[0]0 1 2 3 ... 127	
    //[1]0 1 2 3 ... 127	
    //[2]0 1 2 3 ... 127	
    //[3]0 1 2 3 ... 127	
    //[4]0 1 2 3 ... 127	
    //[5]0 1 2 3 ... 127	
    //[6]0 1 2 3 ... 127	
    //[7]0 1 2 3 ... 127 			   
    
    //向SSD1106写入一个字节。
    //dat:要写入的数据/命令
    //cmd:数据/命令标志 0,表示命令;1,表示数据;
    void OLED_WR_Byte(u8 dat,u8 cmd)
    {			  
    	if(cmd)
    	  OLED_DC_Set();
    	else 
    	  OLED_DC_Clr();		  
    	OLED_CS_Clr();
    	SPI1_ReadWriteByte(dat);					
    	OLED_CS_Set();
    	OLED_DC_Set();   	  
    } 
    
    void OLED_Set_Pos(unsigned char x, unsigned char y) 
    { 
    	OLED_WR_Byte(0xb0+y,OLED_CMD);
    	OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);
    	OLED_WR_Byte((x&0x0f)|0x01,OLED_CMD); 
    }   	  
    //开启OLED显示    
    void OLED_Display_On(void)
    {
    	OLED_WR_Byte(0X8D,OLED_CMD);  //SET DCDC命令
    	OLED_WR_Byte(0X14,OLED_CMD);  //DCDC ON
    	OLED_WR_Byte(0XAF,OLED_CMD);  //DISPLAY ON
    }
    //关闭OLED显示     
    void OLED_Display_Off(void)
    {
    	OLED_WR_Byte(0X8D,OLED_CMD);  //SET DCDC命令
    	OLED_WR_Byte(0X10,OLED_CMD);  //DCDC OFF
    	OLED_WR_Byte(0XAE,OLED_CMD);  //DISPLAY OFF
    }		   			 
    //清屏函数,清完屏,整个屏幕是黑色的!和没点亮一样!!!	  
    void OLED_Clear(void)  
    {  
    	u8 i,n;		    
    	for(i=0;i<8;i++)  
    	{  
    		OLED_WR_Byte (0xb0+i,OLED_CMD);    //设置页地址(0~7)
    		OLED_WR_Byte (0x00,OLED_CMD);      //设置显示位置—列低地址
    		OLED_WR_Byte (0x10,OLED_CMD);      //设置显示位置—列高地址   
    		for(n=0;n<128;n++)OLED_WR_Byte(0,OLED_DATA); 
    	} //更新显示
    }
    
    
    //在指定位置显示一个字符,包括部分字符
    //x:0~127
    //y:0~63
    //mode:0,反白显示;1,正常显示				 
    //size:选择字体 16/12 
    void OLED_ShowChar(u8 x,u8 y,u8 chr)
    {      	
    	unsigned char c=0,i=0;	
    	c=chr-' ';//得到偏移后的值			
    	if(x>Max_Column-1){x=0;y=y+2;}
    	if(SIZE ==16)
    	{
    		OLED_Set_Pos(x,y);	
    		for(i=0;i<8;i++)
    		OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
    		OLED_Set_Pos(x,y+1);
    		for(i=0;i<8;i++)
    		OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
    	}
    }
    //m^n函数
    u32 oled_pow(u8 m,u8 n)
    {
    	u32 result=1;	 
    	while(n--)result*=m;    
    	return result;
    }				  
    //显示2个数字
    //x,y :起点坐标	 
    //len :数字的位数
    //size:字体大小
    //mode:模式	0,填充模式;1,叠加模式
    //num:数值(0~4294967295);	 		  
    void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size)
    {         	
    	u8 t,temp;
    	u8 enshow=0;						   
    	for(t=0;t<len;t++)
    	{
    		temp=(num/oled_pow(10,len-t-1))%10;
    		if(enshow==0&&t<(len-1))
    		{
    			if(temp==0)
    			{
    				OLED_ShowChar(x+(size/2)*t,y,' ');
    				continue;
    			}else enshow=1; 
    		 	 
    		}
    	 	OLED_ShowChar(x+(size/2)*t,y,temp+'0'); 
    	}
    } 
    //显示一个字符号串
    void OLED_ShowString(u8 x,u8 y,u8 *chr)
    {
    	unsigned char j=0;
    	while (chr[j]!='\0')
    	{		
    		OLED_ShowChar(x,y,chr[j]);
    		x+=8;
    		if(x>120)
    		{
    			x=0;
    			y+=2;
    		}
    		j++;
    	}
    }
    /***********功能描述:显示显示BMP图片128×64起始点坐标(x,y),x的范围0~127,y为页的范围0~7*****************/
    void oled_draw_picture(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[])
    {
    	unsigned int j=0;
    	unsigned char x,y;
    
    	if(y1%8==0) y=y1/8;      
    	else y=y1/8+1;
    	for(y=y0;y<y1;y++)
    	{
    		OLED_Set_Pos(x0,y);
    		for(x=x0;x<x1;x++)
    		{      
    			OLED_WR_Byte(BMP[j++],OLED_DATA);
    		}
    	}
    }
    void oled_gpio_init()
    {
    	GPIO_InitTypeDef  GPIO_InitStructure;
    
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);
    
    	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); 
    	
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_8;				 
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
    	GPIO_Init(GPIOA, &GPIO_InitStructure);					
    	GPIO_SetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_8);
    
    	
    }
    
    
     
    //初始化SSD1306					    
    void oled_init(void)
    { 	
    	oled_gpio_init();
    	SPI1_Init();
     
    //	OLED_RST_Set();//复位使用系统复位,所有此处不需要再复位
    //	delay_ms(5);
    //	OLED_RST_Clr();
    //	delay_ms(5);
    //	OLED_RST_Set(); 
    					  
    	OLED_WR_Byte(0xAE,OLED_CMD);//--turn off oled panel
    	OLED_WR_Byte(0x00,OLED_CMD);//---set low column address
    	OLED_WR_Byte(0x10,OLED_CMD);//---set high column address
    	OLED_WR_Byte(0x40,OLED_CMD);//--set start line address  Set Mapping RAM Display Start Line (0x00~0x3F)
    	OLED_WR_Byte(0x81,OLED_CMD);//--set contrast control register
    	OLED_WR_Byte(0xCF,OLED_CMD); // Set SEG Output Current Brightness
    	OLED_WR_Byte(0xA0,OLED_CMD);//--Set SEG/Column Mapping     0xa0左右反置 0xa1正常
    	OLED_WR_Byte(0xC0,OLED_CMD);//Set COM/Row Scan Direction   0xc0上下反置 0xc8正常
    	OLED_WR_Byte(0xA6,OLED_CMD);//--set normal display
    	OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
    	OLED_WR_Byte(0x3f,OLED_CMD);//--1/64 duty
    	OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset	Shift Mapping RAM Counter (0x00~0x3F)
    	OLED_WR_Byte(0x00,OLED_CMD);//-not offset
    	OLED_WR_Byte(0xd5,OLED_CMD);//--set display clock divide ratio/oscillator frequency
    	OLED_WR_Byte(0x80,OLED_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec
    	OLED_WR_Byte(0xD9,OLED_CMD);//--set pre-charge period
    	OLED_WR_Byte(0xF1,OLED_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
    	OLED_WR_Byte(0xDA,OLED_CMD);//--set com pins hardware configuration
    	OLED_WR_Byte(0x12,OLED_CMD);
    	OLED_WR_Byte(0xDB,OLED_CMD);//--set vcomh
    	OLED_WR_Byte(0x40,OLED_CMD);//Set VCOM Deselect Level
    	OLED_WR_Byte(0x20,OLED_CMD);//-Set Page Addressing Mode (0x00/0x01/0x02)
    	OLED_WR_Byte(0x02,OLED_CMD);//
    	OLED_WR_Byte(0x8D,OLED_CMD);//--set Charge Pump enable/disable
    	OLED_WR_Byte(0x14,OLED_CMD);//--set(0x10) disable
    	OLED_WR_Byte(0xA4,OLED_CMD);// Disable Entire Display On (0xa4/0xa5)
    	OLED_WR_Byte(0xA6,OLED_CMD);// Disable Inverse Display On (0xa6/a7) 
    	OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel
    	
    	OLED_WR_Byte(0xAF,OLED_CMD); /*display ON*/ 
    	OLED_Clear();
    	OLED_Set_Pos(0,0); 	
    	SPI1_SetSpeed(SPI_BaudRatePrescaler_2);
    }  
    
    

    main.c

    #include "sys.h"
    #include "delay.h"
    #include "usart.h"
    #include "oled.h"
    #include "tm1804.h"
    int main(void)
    {	
    	delay_init();	    //延时函数初始化	  
    	oled_init();
    	tm1804_init();
    	OLED_ShowString(0,0,"xupengxisxveryx1");
    	OLED_ShowString(0,2,"xupeng is very");
    	OLED_ShowString(0,4,"xupeng is very");
    	OLED_ShowString(0,6,"xupeng is very");
    	
    	while(1)
    	{
    		set_tm1804_data(0xcc,0x00);
    		delay_ms(1000);
    		set_tm1804_data(0x00,0x00);
    		delay_ms(1000);
    	}
    }
    
    

    三、完整工程下载
    完整工程下载点击此链接

    展开全文
  • 上一篇文章采用单片机cx32l003驱动了0.96寸OLED屏幕并实现其点亮。 《CX32l003 点亮0.96寸OLED屏幕》。 这一篇将在前面的基础上对这个屏幕进行详细讲解,尤其是一些屏幕控制器SSD1306比较重要的命令。 根据第...

     

    上一篇文章采用单片机cx32l003驱动了0.96寸OLED屏幕并实现其点亮。

    CX32l003 点亮0.96寸OLED屏幕》。

    这一篇将在前面的基础上对这个屏幕进行详细讲解,尤其是一些屏幕控制器SSD1306比较重要的命令。

    图片

    根据第9节COMMAND TABLE进行描述

    图片

    (Fundamental Command Table )

    图片

     0X81 xx:

    根据命令描述,这是一个双字节命令,从256个对比度中选择1个,对比度随着值得增加而增加。程序中输入的是0x7f值,最高为0xff。

    如下代码为适当对比度。

    write_cmd(0x81);write_cmd(0x7f);//对比度

    0XA4/0XA5:

    图片

    当选择0xA4时,屏幕输出的显示将跟随内部存储的RAM值。(此命令与0XA5/0XA7 有关)

    当选择0XA5时,屏幕将输出显示,不论内部存储RAM的值是多少。

    目前命令为0XA5。

    write_cmd(0XA5);

    若命令为0XA4时,屏幕将不显示任何画面。

    0XA6/0XA7:

    图片

    此命令用来控制内部存储的RAM值0或1代表像素点开或者关。

    当选择0XA6时,RAM处存储的0,是像素点关,1是像素点开。

    当选择0XA7时,RAM处存储的0,是像素点开,1是像素点关。

    就是说假如写数据写入RAM全是0,在此条命令的情况下,如果是0XA6那么屏幕就是黑屏的状态,如果是0XA7,那么屏幕就是点亮的状态。

    write_cmd(0XA6);

    0XAE/0XAF:

    图片

    根据描述很容易知道,0XAE关闭显示,0XAF打开显示。

    write_cmd(0XAF);

    到这里就先不根据下面的命令表格进行描述了,我们在OLED屏幕上显示一个自定义的图像来区别接下来的命令。

    图像取模采用常用的文字取模软件,如下图生成数组。

    图片

    //数组定义unsigned char word[]={0x80,0x80,0x9F,0x80,0x80,0x80,0x80,0xFF,0xFF,0x80,0x80,0x9D,0x95,0x95,0x97,0x80,0x00,0x54,0x54,0x54,0x7C,0x00,0x00,0xFF,0xFF,0x00,0x00,0x3C,0x20,0xFC,0x20,0x20};
        //以下为初始化命令  write_cmd(0xA8);write_cmd(0x3F);  write_cmd(0xD3);write_cmd(0x00);   write_cmd(0x40);  write_cmd(0xA1);  write_cmd(0xC8);  write_cmd(0xDA);write_cmd(0x12);  
        write_cmd(0x81);write_cmd(0xff);  write_cmd(0XA4);  write_cmd(0XA6);  write_cmd(0xd5);write_cmd(0x80);    write_cmd(0x8D);write_cmd(0x14);  write_cmd(0XAF); 

    要想将数组数据显示到屏幕,就需要将数据存入,此时我们就用到了SSD1306的RAM,对于RAM在8.7节有描述。

    图片

    GDDRAM是一个位映射的静态RAM,保持要显示的位模式。RAM大小为128x64位,RAM分为8页,从0页到7页,用于单色128x64点矩阵显示,如图8-13所示。

    图片

    到这里,如果将数据写入SSD1306的RAM,就需要知道其写入方式以及写入地址。

    而对于地址的说明,表格中已经做了说明

    图片

    表格结合描述

    首先,可以发现写入方式有3种:页地址模式,水平地址模式,竖直地址模式。

    本篇以地址模式来说明。由于默认就是页地址,所以对于地址模式无需设置。

    图片

    图片

    在页面寻址模式下,读写显示RAM后,列地址指针自动增加1。如果列地址指针到达列结束地址,则将列地址指针重置为列起始地址,而不对页面地址指针进行更改。用户必须设置新的页面和列地址,才能访问下一页的RAM内容。页面地址模式的页面页面和列地址点的移动顺序如图10-1所示。

    图片

    在正常显示数据RAM读写和页面寻址模式下,需要执行以下步骤来定义起始RAM访问指针位置:

    •通过命令将目标显示位置的页面起始地址设置为B0h到B7h。

    •通过命令00h~0Fh设置指针的低起始列地址。

    •通过命令10h~1Fh设置指针的高起始列地址。

    例如,如果页面地址设置为B2h,低列地址为03h,高列地址为10h,则表示开始列为PAGE2的SEG3。RAM访问指针的位置如图10-2所示。输入的数据字节将被写入第3列的RAM位置。

    根据上述说明,将文章开始所定义的文字数组写入GDDRAM。​​​​​​​

     //数组定义unsigned char word[]={0x80,0x80,0x9F,0x80,0x80,0x80,0x80,0xFF,0xFF,0x80,0x80,0x9D,0x95,0x95,0x97,0x80,0x00,0x54,0x54,0x54,0x7C,0x00,0x00,0xFF,0xFF,0x00,0x00,0x3C,0x20,0xFC,0x20,0x20};    write_cmd(0XB0); //页0  write_cmd(0X00); //0列开始  write_cmd(0X10); //16列结束  for(i=0;i<16;i++)  {    write_data(word[i]);      }    write_cmd(0XB1);  write_cmd(0X00);  write_cmd(0X10);  for(i=0;i<16;i++)  {    write_data(word[i+16]);  }

    显示如下

    图片

    还记得最开始的时候有一个命令A6/A7,在程序中设置的是A6,如果我们将其设置成A7会如何。

    现象如图:

    图片

    可以发现,背景和显示的文字正好反相了。正如命令描述所说,A6是正常显示,0就是像素点关闭,1是点亮;A7正好相反,0是像素点打开,1是关闭。

    0XA0/0XA1:

    这个命令是用来将屏幕中画面左右调换,其他扫描方式不影响。

    程序中为A1,我们将其改成A0(默认值),如下图:

    图片

    0XC0/0XC8:

    这个命令是用来将屏幕中画面竖直调换,其他扫描方式不影响。

    程序中为C8,我们将其改为C0(默认值),如下图:

    图片

    0XDA  XX  :

    这个命令可以说是相对重要的命令,因为这个命令配合上述C0/C8 的组合实在是太多了。并且通过手册中的描述可以看到

    图片

    图片

    图片

    图片

    可以看到 ,这扫描方式实在是太多了,达到8种,扫描方式的不同导致的画面显示也各有不同。对于这个组合,可以根据源码逐个试一下。

    通过对这款OLED屏幕页地址方式的说明,大概熟悉了这款OLED的应用。页地址模式有页地址模式的操作方式,还有另外两种模式后续会继续说明,或许显示起来与页地址各有千秋。不过总的来说,这款0.96寸OLED屏幕着实强大。

    关注公众号嵌入式软硬件爱好者

    发送消息“页模式”  获取源码

    展开全文
  • 0.96寸6针spi接口经典款OLED结构
  • iic四线OLED 屏幕

    千次阅读 2020-11-26 21:19:32
    以下两个10-7,10-8,10-9)显示了使用水平滚动的示例: 10-7:水平滚动示例:向右滚动1列 10-8:水平滚动示例:向左滚动1列 10-9:水平滚动设置示例 10.2.2连续垂直和水平滚动设置(29h / 2Ah) 此...
  • 使用stc51单片机驱动oled显示屏的c程序,适用于keil4开发。
  • 基于stm32f103芯片的oled显示dht11传感器采集的温湿度传感器的参考历程,内置丰富·的oled屏幕显示函数,方便初学者使用,下载方可运行。
  • 0.96寸OLED显示屏12864液晶屏模块IIC接口+12864模块+提供原理图.zip
  • 为两张普通的图片,乍一看是一张完整的图片,实际上是由非常多的像素点拼凑而成 像素点由红绿蓝(R\G\B)三个子像素构成,通过混合三个子像素的颜色比例,来合成一切想要的颜色 每个像素点各司其职,分别显示...
  • 除了生产成本便宜之外,OLED还有许多优势,比如自身发光的特性,目前LCD都需要背光模块(在液晶后面加灯管),但OLED通电之后就会自己发光,可以省掉灯管的重量体积及耗电量(灯管耗电量几乎占整个液晶屏幕的一半),...
  • OLED显示屏开发资料(包括取模软件、使用手册、程序例程、user guide、原理图
  • 显示字符串、显示图片,正反色显示、180°旋转
  • OLED的基础介绍 OLED的定义和优势 OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。OLED由于同时具备自发光,不需背光源、对比度...
  • 分享STM32驱动0.96寸OLED显示屏硬件原理图和PCB资料,有需要的可以下载
  • STM32控制OLED图文显示

    2018-11-12 13:15:30
    2:0.96寸OLED液晶屏显示模块 12864白色屏 3.3V5v兼容Arduino 参考价格12.88元;3:杜邦线若干,面包板一块,USB下载器或USB转TTL 软件:Win10环境,uVison5; 部分代码来自于网络,请勿在商业中使用,仅供大家学习...
  • OLED模块原理图OLED模块结构图: 市面上统一尺寸的配置和设计大差不差的,OLED生产商大部分都是中景园电子,官网可以下载OLED 显示屏裸屏的资料。 以驱动芯片为SSD1306的屏为例: OLED 显示屏裸屏外观: 驱动...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,485
精华内容 594
关键字:

oled屏幕原理图