我造轮子,你造车,创客一起造起来!塔克创新资讯【塔克社区 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/

    

OLED显示屏具有自发光特性,不需要背光,对比度高等特点,常用于电子制作。

本节介绍0.96寸OLED显示屏的使用,X-CTR100控制器配套专用OLED显示模块X-CTR100-OLED,即插即用。

本节例程也适用于具有SPI接口的通用OLED模组(SSD1306不带字库)。

原理

OLED有机发光二极管(Organic Light-Emitting Diode),同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。

X-CTR100-OLED为X-CTR100控制器专用OLED显示模块,显示模块直接安插在X-CTR100控制器上。

显示模块采用0.96寸128X64规格OLED显示屏,驱动芯片为SSD1306,不带字库,关于OLED显示屏详细资料请参考技术资料相关内容。

例程

实现了OLED显示功能,并读取加速度数据通过OLED实时显示,显示功能包括图片显示、字符显示、汉字显示、反色显示。

硬件说明

硬件资源:

  • 串口UART1
  • MPU6050
  • SPI3扩展接口(LE)
  • X-CTR100-OLED显示屏模组或具有SPI接口的OLED显示模组(需自备)

    

连接图

    

软件生态

X-SOFT软件生态,X-API扩展文件如下。

ax_oled.c——OLED操作函数源文件

ax_oled.h——OLED操作头文件

ax_oled_ascii.h——ASCII字模数据文件

ax_oled_chinese.h——汉字字模数据文件

ax_oled_picture.h——图片数据文件

接口函数

void AX_OLED_Init(void); //OLED初始化

void AX_OLED_ClearScreen(void); //OLED清除屏幕

void AX_OLED_DisplayChar(uint8_t x, uint8_t y, uint8_t ch, uint8_t mode);

// OLED指定位置显示一个ASCII字符(8X16)

void AX_OLED_DisplayAsciiStr(uint8_t x, uint8_t y, uint8_t *ch, uint8_t mode);

//OLED指定位置显示ASCII字符串(8X16)

void AX_OLED_DisplayChinese(uint8_t x, uint8_t y, const uint8_t *pbuf, uint8_t mode);

//OLED指定位置显示一个汉字(16X16)

void AX_OLED_DisplayPicture(uint8_t x, uint8_t y, uint8_t xsize, uint8_t ysize, const uint8_t *pbuf, uint8_t mode); //OLED指定位置显示一个指定尺寸照片

void AX_OLED_DisplayNum(uint8_t x, uint8_t y, uint8_t num, uint8_t mode);

//OLED指定位置显示一个数字(8X16)

void AX_OLED_DisplayValue(uint8_t x, uint8_t y, int32_t value, uint8_t inte, uint8_t deci, uint8_t mode);

//OLED指定位置显示数值

软件说明

X-CTR100-OLED模块为不带字库OLED模组,字模需自己采集。当前X-API函数默认字符大小为16X8,汉字大小为16X16。ASCII字符已在ax_oled_ascii.h文件中,无须用户准备,可直接使用。汉字和图片需要用户自己取模,下面以PCtoLCD2002完美版为例进行说明。

汉字提取,打开软件,选择字符模式。

    

选择"选项"按钮,按如下配置。

    

字高,字宽选择16,输入要取模的汉字,例如下"塔克科技",点击"生成字模"按钮,即可完成取模。

    

图像取模类似,首先准备要取模的黑白BMP图片,尺寸为小于128X64的任意图片,可通过Windows自带画图软件编辑。打击"文件-打开"按钮,可载入图片。点击"生成字模"即可生成需要的字模。

    

例程代码开始显示XTARK LOGO图片,然后显示实时加速度数据,主程序代码。

int main(void)

{    

    int16_t acel[3];

    

    //XRT1初始化

    AX_Init(115200);

    printf("***OLED 显示例程***\r\n\r\n");

    

    //模块初始化及配置

    AX_OLED_Init();

    

    //MPU6050初始化

    AX_MPU6050_Init();

    AX_MPU6050_SetAccRange(AX_ACC_RANGE_2G); //设置加速度量程

    AX_MPU6050_SetGyroRange(AX_GYRO_RANGE_250); //设置陀螺仪量程

    AX_MPU6050_SetGyroSmplRate(200); //设置陀螺仪采样率

    AX_MPU6050_SetDLPF(AX_DLPF_ACC94_GYRO98); //设置低通滤波器带宽

    

    AX_OLED_DisplayPicture(0, 0, 128, 8, PIC64X128_XTARK, 0);

    AX_Delayms(1000);

    AX_OLED_DisplayPicture(0, 0, 128, 8, PIC64X128_XTARK, 1);

    AX_Delayms(1000);    

    AX_OLED_ClearScreen();

    

    AX_OLED_DisplayChinese(0, 0, CH_塔, 1);

    AX_OLED_DisplayChinese(16, 0, CH_克, 1);

    AX_OLED_DisplayChinese(32, 0, CH_科, 1);

    AX_OLED_DisplayChinese(48, 0, CH_技, 1);

    AX_OLED_DisplayChinese(64, 0, CH_创, 0);

    AX_OLED_DisplayChinese(80, 0, CH_客, 0);

    AX_OLED_DisplayChinese(96, 0, CH_精, 0);

    AX_OLED_DisplayChinese(112, 0, CH_品, 0);

    

    AX_OLED_DisplayAsciiStr(0, 2, "ACC_X:", 0);    

    AX_OLED_DisplayAsciiStr(0, 4, "ACC_Y:", 0);    

    AX_OLED_DisplayAsciiStr(0, 6, "ACC_Z:", 0);    

    

    while (1)

    {            

        AX_MPU6050_GetAccData(acel); //读取三轴加速度数据

        AX_OLED_DisplayValue(48, 2, acel[0], 4, 2, 0); //显示加速度数值

        AX_OLED_DisplayValue(48, 4, acel[1], 4, 2, 0); //显示加速度数值

        AX_OLED_DisplayValue(48, 6, acel[2], 4, 2, 0); //显示加速度数值

        

        AX_Delayms(200);

        AX_LEDG_Toggle();

    }

}

实现效果

显示效果如下,其中"塔克科技"为反色显示,"创客精品"为正色显示,加速度数据实时显示,更新频率为5Hz。

玩转X-CTR100 l STM32F4 l OLED显示-SSD1306无字库的更多相关文章

  1. 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 AD转换接 ...

  2. 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载加速度 ...

  3. 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...

  4. 玩转X-CTR100 l STM32F4 l 舵机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...

  5. 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器控制步进电机 ...

  6. 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器基础板载资源 ...

  7. 玩转X-CTR100 l STM32F4 l PS2无线手柄

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...

  8. 玩转X-CTR100 l STM32F4 l DSP指令集性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 DSP库的 ...

  9. 玩转X-CTR100 l STM32F4 l FPU单精度浮点性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器如何开启ST ...

随机推荐

  1. c#之有参和无参构造函数,扩展方法

    例如在程序中创建 Parent类和Test类,在Test有三个构造函数,parent类继承Test类,那么我们可以在Test类自身中添加 扩展 方法吗? 答案:是不可以的.因为扩展方法必须是静态的,且 ...

  2. 【Coursera】Security Introduction -Eighth Week(1)

    Security Introduction People With Bad Intent 今天,Bob 向 Alice 发送了一条 "Hello,Allice!" 的信息,他们希望 ...

  3. java命令行执行程序解决依赖外部jar包的问题

    用java命令行直接执行程序,如果这个程序需要引用外部jar包.就不能单纯用java xx来执行 如果你的jar包和程序就在一个目录: 编译 javac -cp D:\yy\yy.jar,D\xx\x ...

  4. UOJ 171 【WC2016】挑战NPC

    一开始还真没想到是一般图匹配这种模型(毕竟才会的带花树) 把每一个盒子拆成3个,每一个可以放置进它的小球分别向这三个点连边,然后这三个点在连成一个三元环,最终答案就是小球数目-匹配数. 由于是一般图, ...

  5. python 集合的运算

    x = frozenset([, , , , ]) y = frozenset([, , , , ]) #如果x与y没有公共元素,返回true print(x.isdisjoint(y)) #返回x与 ...

  6. 创意时钟 人形时钟 可惜不是 https

    ; (function () { $('#header').css({ 'position':'relative' }).prepend('<div id="clockWrap&quo ...

  7. 浏览器滚动条及其影响 calc()

    1.浏览器滚动条 默认风格各异,推荐一插件  mCustomScrollbar 不考虑兼容也可自定义样式    链接二 2.影响 以垂直方向为例,当内容变化的时候,如果设置的是overflow:aut ...

  8. Java的八种基本类型:(按字节来分)

    Java的八种基本类型:(按字节来分) boolean   布尔型   1个字节 8bit(8位) byte     字节类型   1个字节 char     字符类型   2个字节 short    ...

  9. Oracle学习笔记(二)——临时表

    在针对大数据量的多表级联查询或复杂事务处理的时候,引入Oracle临时表是一种不错的策略.因此,在解决实际需求时经常会遇到需要使用存储过程和临时表相互配合的情况.下面就Oracle如何创建临时表以及注 ...

  10. angular5中使用echart的方法

    注意两点安装的版本 安装好后可以参照echart的官网使用 1.实现package.json中安装这两个包 2.index.html中引入 3.在appModule中添加 然后再html中就可以这么使 ...