• HaaS100 OLED信息屏显示案例


    此文转载自:https://blog.csdn.net/HaaSTech/article/details/110792528#commentBox

    1、前言

    本文主要为了手把手教会大家如何用HaaS100打造一款OLED信息显示系统。

    眼见为实,眼睛能看见的才是最直观、最真实、最有体感的。

    OLED信息显示屏案例可以指引开发者通过OLED显示展现其智能硬件的信息,像温湿度传感器设备、日历系统等设备都可以通过OLED显示。

    2、OLED介绍

    OLED,即有机发光二极管(Organic Light-Emitting Diode)。OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性。

    与LCD相比,LCD需要背光,同样的显示,OLED 效果要来得好一些。但是,OLED 的尺寸还难以大型化,不过OLED分辨率确可以做到很高。

    2.1、OLED模块引脚

    image.pngimage.png

    OLED模块引脚

    GND:电源地

    VDD:电源正3V3-5V

    SCK/D0 :SPI时钟线

    SDA/D1 :SPI数据线

    RES:OLED在上电的时候需要复位一次

    DC:SPI数据/命令选择脚

    CS:SPI片选引脚,低电平有效

    2.2、OLED显存

    1.3寸OLED屏驱动IC为SSD1106(与0.96寸OLED稍有不同,SSD1306),SSD1106点阵132*64,SSD1306点阵128*64,都是8页的显存,SSD1106每页132字节,SSD1306每页128字节。

    下面看一下其对应关系(SSD1106 1.3寸OLED为例)

    3、HaaS OLED信息屏开发

    3.1、HaaS100与OLED模组连接

    HaaS100

    OLED

    说明

    GND

    GND

    电源地

    3V3

    VDD

    接HaaS电源正3V3

    GPIO05

    SCK/D0

    HaaS模拟SPI CLK,上升沿有效

    GPIO40

    SDA/D1

    HaaS模拟SPI SDA

    GPIO41

    RES

    复位引脚,初始化低电平脉冲(1S)

    GPIO27

    DC

    0-命令 1-数据

    GND

    CS

    CS接地

    3.2、OLED开发

    3.2.1、初始化配置

    #define OLED_CLK_PIN	HAL_IOMUX_PIN_P0_5
    #define OLED_SDA_PIN	HAL_IOMUX_PIN_P4_0
    #define OLED_RES_PIN	HAL_IOMUX_PIN_P4_1
    #define OLED_DC_PIN		HAL_IOMUX_PIN_P2_7
    
    static gpio_dev_t oled_gpio;
    int oled_gpio_init(void)
    {
        //对各个PIN进行初始化
    	oled_gpio.port = OLED_CLK_PIN;
        oled_gpio.config = OUTPUT_PUSH_PULL;
        hal_gpio_init(&oled_gpio);
    	oled_gpio.port = OLED_SDA_PIN;
        oled_gpio.config = OUTPUT_PUSH_PULL;
        hal_gpio_init(&oled_gpio);
    	oled_gpio.port = OLED_RES_PIN;
        oled_gpio.config = OUTPUT_PUSH_PULL;
        hal_gpio_init(&oled_gpio);
    	oled_gpio.port = OLED_DC_PIN;
        oled_gpio.config = OUTPUT_PUSH_PULL;
        hal_gpio_init(&oled_gpio);  
    }
    
    void OLED_Init(void)
    {
    	//正对OLED驱动IC进行配置
        ...
    }

    3.2.2、字库选择

    SSD1106不带字库,本示例给出ASCII显示字符,需要中文显示,可以进一步探索,原理都是一样的。

    下面是ASCII字符集点阵的数组库,一个字符占用12*6点阵,即高度12位*宽度6位,占用12个字节。

    /*
        ASCII字符集-》!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ
             KLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~
        */
    const unsigned char asc2_1206[95][12]={
        {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
    	{0x00,0x00,0x00,0x00,0x3F,0x40,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/
    	{0x00,0x00,0x30,0x00,0x40,0x00,0x30,0x00,0x40,0x00,0x00,0x00},/*""",2*/
    	{0x09,0x00,0x0B,0xC0,0x3D,0x00,0x0B,0xC0,0x3D,0x00,0x09,0x00},/*"#",3*/
        ... 
        ...
        ...
    };

    3.2.3、字符串显示接口

    /*
      x->点阵列起点
      y->点阵行起点
      p->显示字符串内容
      size->字库中每个字符的高度,本例为12
      mode-> 0-反显 1-正常显示
    */
    void OLED_Show_String( uint8_t x,
                          uint8_t y,
                          const uint8_t *p, 
                          uint8_t size, 
                          uint8_t mode)
    {
    	//
        ...
    }

    3.3、示例效果

    image.png

    后续会有用Javascript 以及 小程序开发 嵌入式界面开放出来哦,敬请关注

    4、开发者技术支持

    如需更多技术支持,可加入钉钉开发者群

    更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/

  • 相关阅读:
    RequestMapping_PathVariable注解
    RequestMapping_Ant 路径
    RequestMapping_请求参数&请求头
    RequestMapping_请求方式
    RequestMapping注解_修饰类
    18)C++对C的增强
    17)C++开始--命名空间
    16)未理解透
    15)文件函数例子
    14)文件操作
  • 原文地址:https://www.cnblogs.com/phyger/p/14108561.html
Copyright © 2020-2023  润新知