OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 活动中心 » 下载专区 » STM32 SPI驱动OLED(ssd1306 12864)

共13条 1/2 1 2 跳转至

STM32 SPI驱动OLED(ssd1306 12864)

工程师
2013-09-14 08:18:42    评分

最近驱OLED发现卖家给的程序有些不足,自己就改了下。

希望对你有帮助。code.zip

 




关键词: STM32     驱动     ssd1306     12864    

院士
2013-09-14 09:41:06    评分
2楼
感谢分享~~~~

高工
2013-09-14 09:49:41    评分
3楼

看看楼主的改进方案


高工
2013-09-14 12:24:14    评分
4楼

楼主好人,话说没玩过OLED,倒是看过不少资料。SSD系列的应该是用的比较多的。

感谢楼主分享。


工程师
2013-09-14 20:18:40    评分
5楼

应该的。。。。。


专家
2013-09-15 10:22:13    评分
6楼
支持开源

工程师
2013-09-15 18:12:50    评分
7楼
想法来源于OLED现实汉字,不行繁琐的取模,把字库存单片机里面,无奈容量不够,板子也做好了。


只有做ASCII的转换了,为了提高兼容性  就自己写了个转换函数。把以前32例程中的AsciiLib.c  AsciiLib.H包含进去直接可以用了,就是有点慢。。。。


void FORM_CONVERT(unsigned char* pBuffer,unsigned char* dBuffer)

 

{


uint8_t val_tem1[8][8] = {},val_tem2[8][8] = {};
 uint8_t i,j,temp;

 for(i=0;i<8;i++)
 {
  temp = pBuffer[i];
  for(j=0;j<8;j++)
  {
   if(temp & 0x80)
   {
    val_tem1[7-i][j] = 1;
   }
   else
   {
    val_tem1[7-i][j] = 0;
   }
   temp = temp << 1;
  }
 }

 for(i=0;i<8;i++)
 {
  for(j=0;j<8;j++)
  {
   temp = temp << 1;
   temp |= val_tem1[j][i];
  }
  dBuffer[i] = temp;
  temp = 0;
 }

 for(i=0;i<8;i++)
 {
  temp = pBuffer[i+8];
  for(j=0;j<8;j++)
  {
   if(temp & 0x80)
   {
    val_tem2[7-i][j] = 1;
   }
   else
   {
    val_tem2[7-i][j] = 0;
   }
   temp = temp << 1;
  }

 }
 for(i=0;i<8;i++)
 {
  for(j=0;j<8;j++)
  {
   temp = temp << 1;
   temp |= val_tem2[j][i];
  }
  dBuffer[i+8] = temp;
  temp = 0;
 }

}




菜鸟
2014-10-12 17:28:02    评分
8楼
谢谢,再用

专家
2014-10-29 10:21:51    评分
9楼
模拟还是硬件spi?

工程师
2014-11-02 16:31:42    评分
10楼
硬件SPI。

共13条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]