一、OLED显示原理
OLED,即有机发光二极管。通过有机发光二极管制成OLED显示屏,通过正确上电即可发光。OLED模块提供了4种接口:6800、8080两种并行接口方式,SPI接口方式,IIC接口方式。
(1)6800与8080的区别:
对于内存的存储,需要数据总线和地址总线,这都是一样的。但对于存取的控制,它们则采用了不同的方式——
8080是通过“读使能(RE)”和“写使能(WE)”两条控制线进行读写操作
6800是通过“总使能(E)”和“读写选择(W/R)”两条控制线进行
(2)SPI与IIC的区别:
1、IIC为半双工,SPI为全双工
2、IIC有应答机制,SPI无应答机制
3、IIC通过向总线广播从机地址来寻址,SPI通过向对应从机发送使能信号寻址
4、IIC的时钟极性和时钟相位固定(空闲时SDA,SCL为高电平),SPI时钟极性和时钟相位可调
(3)驱动:
驱动核心:驱动OLED驱动芯片SSD106。 单片机驱动IC,IC驱动屏幕。
- 选择驱动芯片时序(8080) 根据时序实现数据传输
- 初始化序列 厂家提供
- 实现画点函数,读点函数(选择,教程没教) 由这两个函数实现屏幕显示
二、OLED显示英文字符
代码:
oled初始化:
OLED_Init();
OLED_Display_On();
OLED_Clear();
oled.c:
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++;
}
}
三、OLED显示中文
代码:
oled.c:
void OLED_ShowCHinese(u8 x,u8 y,u8 no)
{
u8 t,adder=0;
OLED_Set_Pos(x,y);
for(t=0;t<16;t++)
{
OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);
adder+=1;
}
OLED_Set_Pos(x,y+1);
for(t=0;t<16;t++)
{
OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);
adder+=1;
}
}
显示中文还需要用到取模软件,将生成的编码粘贴到oledfont.h中。
此次使用的是中景园电子的驱动代码,硬件是7针的OLED屏。