Arduino UNO 驱动1.5寸 128*128像素的OLED-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5277|回复: 0

Arduino UNO 驱动1.5寸 128*128像素的OLED

[复制链接]
发表于 2018-11-26 21:30 | 显示全部楼层 |阅读模式
本帖最后由 希岩 于 2018-11-26 21:43 编辑

手头有一个微雪的1.5寸OLED屏,白色,SPI接口,像素点128*128个,具有16阶灰度,驱动芯片为SSD1327。这个屏幕特点就是像素多,屏大。但是卖家给的例程用的RAM高达83%了,用的FLASH到了67%,占的资源太多了。程序也很复杂。
因此对其进行了简化。简化成字符显示的程序。12点的字符。可以看看程序,可以说非常简单了,使用的一个小缓冲区,占用RAM 52%,FLASH 13%。
好了,不多说了,全部代码在附件里,供大家学习开发。以下是部分代码。
[mw_shl_code=arduino,true]/***********************************************************************************************************************
  | file       : OLED_Show
  | version    : V1.0
  | date       : 2017-12-12
  | function  :
  | Author:凌晨七點半
  | QQ 群:871103113

引脚定义:
   VCC : +5V/3V3
   GND : GND
   DIN : 11
   CLK : 13
   CS  : 10   //也可以接地
   DC  : 7
   RST : 8    //可有可无

***********************************************************************************************************************/
#include "OLED_Driver.h"

//行位置,总共可以显示10行英文
enum {
    Line1  = 0,  
    Line2  = 13,
    Line3  = 26,
    Line4  = 39,
    Line5  = 52,
   
    Line6  = 64,
    Line7  = 77,
    Line8  = 90,
    Line9  = 103,
    Line10  = 116
      
} LINE;
/********************************************************************************
  function:
      initialization
********************************************************************************/
void OLED_Init(void)
{
   //set pin
  pinMode(OLED_CS, OUTPUT);
  pinMode(OLED_RST, OUTPUT);
  pinMode(OLED_DC, OUTPUT);
  digitalWrite(OLED_CS,LOW);
  //digitalWrite(OLED_RST,HIGH);
  //set OLED SPI
  SPI.setDataMode(SPI_MODE0);
  SPI.setClockDivider(SPI_CLOCK_DIV2);
  SPI.begin();

  Serial.println("OLED initializing... ");

  OLED_Reset();    //Hardware reset

  //Set the initialization register
  OLED_InitReg();
  delay(200);
  
  OLED_Fill_Screen(0);
  delay(200);  
  
}
//------------------------------------------------
void setup()
{
  //set Serial
  Serial.begin(9600);
  OLED_Init();
  OLED_CS_0;
  Serial.println("OLED Init OK ");
  OLED_Fill_Screen(0xff);
  delay(1000);
  OLED_Fill_Screen(0);
   
    OLED_DisStr_EN(18,"1.5' OLED",15);//横轴位置,数据,亮度
    OLED_Window_Display(Line1);             //表示行
    OLED_ClearBuf();
   
    OLED_DisStr_EN(0,"OLED",15);//横轴位置,数据,亮度
    OLED_DisStr_EN(54,"128*128",15);//横轴位置,数据,亮度
    OLED_Window_Display(Line2);             //表示行
    OLED_ClearBuf();

    OLED_DisStr_EN(0,"QQ GROUP:871103113",15);//横轴位置,数据,亮度
    OLED_Window_Display(Line7);             //表示行
    OLED_ClearBuf();

    OLED_DisStr_EN(50,"Email:",7);//横轴位置,数据,亮度
    OLED_Window_Display(Line9);             //表示行
    OLED_ClearBuf();
   
    OLED_DisStr_EN(8,"820329503@qq.com",2);//横轴位置,数据,亮度
    OLED_Window_Display(Line10);             //表示行
    OLED_ClearBuf();
    Serial.println("OLED test OK ");
}
//-----------------------------------------------------------
void loop()
{

}

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/
[/mw_shl_code]
2018-11-26_211830.png
IMG_20181126_211636.jpg

128128OLED_Simple.zip

8.77 KB, 下载次数: 144

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:36 , Processed in 0.102539 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表