SSD1331为彩色OLED 分辨率96*64
芯片资料地址+参考程序:
https://ic-item.jd.com/10032427814200.html
详细资料请查看对应的资料网盘
参考程序:
中景园电子0.95OLED显示屏STM32F103C8T6_SPI例程
调试时有部分错误
1.软件模拟SPI部分传输无效
解决办法:换成自己的SPI传输
void LCD_Writ_Bus(u8 dat)
{
SELECT_LCD();//此函数用于拉低OLED片选线
while (!SPI1->SR & SPI_SR_TXE){};//发送区非空
delay2(2);//us级延时函数
*((uint8_t*)&(SPI1->DR) + 1 ) = dat;
}
2.传输乱码
可能是自己SPI时钟速度 或者引脚速度的问题
或者是SPI DR寄存器问题
解决办法:在每个LCD_Address_Set函数后 需要添加一个us级延时函数 才能传输正确
且LCD_ShowChar函数在进行 row内 LCD_DrawPoint时 也需要延时函数
示例
void LCD_ShowChar(u16 x,u16 y,u8 num,u16 color)
{
u8 pos,t,temp;
u16 x1=x;
if(x>LCD_W-16||y>LCD_H-16)return; //设置窗口
num=num-' ';//得到偏移后的值
LCD_Address_Set(x,y,x+8-1,y+16-1); //设置光标位置
delay2(100);//添加的延时函数
for(pos=0;pos<16;pos++)
{
temp=asc2_1608[(u16)num*16+pos]; //调用1608字体
for(t=0;t<8;t++)
{
if(temp&0x01)LCD_DrawPoint(x+t,y+pos,color);//画一个点
else LCD_DrawPoint(x+t,y+pos,WHITE);
temp>>=1;
delay2(100);//添加的延时函数
}
}
}
此文章仅用于交流调试中出现过的问题,底层更改驱动等详细移植工作请根据自己的实际情况作改动