你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【Nucleo板开发日志】+以OLED驱动程序为例,说明如何使用C++开发STM32的应用程序

[复制链接]
wuzhujian 发布时间:2014-9-8 00:06
最近在开发一个智能光伏逆变器的产品,其上用到了OLED,用于显示相应电池电压、电流、输出的交流电压、电流、工作温度、逆变效率等参数。
一、OLED模块:
      1、 控制芯片为:SSD1306
       2、分辨率:128X64
       3、颜色:单色(白色或兰色)或双色(黄色(16X128)+兰色(48X128),固定)
       4、通信方式:4线SPI
二、字体
      字体主要有2种,12点阵和16点阵。其中:
     1、 ASCII:
       1> 12点阵:高12点,宽6点
       2> 16点阵:高16点,宽8点
      2、汉字:
       1> 12点阵:高12点,宽12点
       2> 16点阵:高16点,宽16点
三、软件要点
     1、屏幕显示点阵缓冲区
      开辟1K字节缓冲区,用于存放屏幕显示映像。以2维数组的形式组织,垂直方向8个点,用一个字节表示,垂直方向8个点,水平方向128个点的阵列,用128字节表示。2维数组定义为:  
       char m_Gram[8][128]; 
      2、点阵缓冲区数据刷新到OLED
      为了减少通信数据量,在程序中,用了一个8位的变量,其中的每1位,用于管理1行。当某1位为1时,表示在下一次刷新时,该行内容需要刷新到OLED中(该行内容已经有变化)。变量定义为:
       char m_Flash;
      3、字库
      采用的是点阵字库。排列方式为垂直方式,从上到下,从左到右。
      举例来说,12点阵的ASCII,第1个字节为第1列的上8个点,第2字节的高4位为第1列的下4个点,第3个字节为第2列的上8个点,依此类推,共12字节。
      ASCII字库从0x20(就是空格符)开始,到0x7F结束。全部的12点阵(95x12)和16点阵(95x16)的ASCII点阵字库直接编译中程序FLASH中,共增加2660字节的程序FLASH存储器。
      全部的汉字字库太大,MCU的FLASH很难放得下(可以外部加FLASH 存储器或SD卡),因此采用小汉字库,只把需要的汉字的点阵放进来。有一个软件,可以帮助大家如何生成小汉字库。
      由于上述小汉字库生成软件和C++的原因,定义了如下结构,用于存放小汉字库:
typedef struct _HZ12
{
    char    m_Lib[24];
    char     m_Code[3];

}HZ12;

typedef struct _HZ16
{
    char    m_Lib[32];
    char     m_Code[3];
}HZ16;
      4、OLED的C++驱动程序的实现
       1> 在基类中,实现显示的基本功能,包括:
         初始化OLED、 画点、画字符、画字符串、刷新点阵缓冲区内容到OLED等等。
       2> 在派生类中,实现与硬件操作相关的功能。在基类中,只定义相应虚函数。这些与硬件相关的操作有:
         初始化(引脚、寄存器、中断、DMA等)、发送单个数据或命令、发送多个数据或命令。
       5、C++类的使用
        1> 实例化一个OLED的派生类;
        2> 调用派生类的初始化函数;
        3> 调用基类的绘制功能(画点、画字符、画字符串等),把要显示的内容绘制到缓冲区中;
        4> 定时或非定时,把缓冲区内存刷新到OLED中,以便更新屏幕显示。
附件: OLED.rar (7.46 KB, 下载次数: 127)
收藏 1 评论6 发布时间:2014-9-8 00:06

举报

6个回答
霹雳之火 回答时间:2014-9-8 21:57:09

RE:【Nucleo板开发日志】+以OLED驱动程序为例,说明如何使用C++开发STM32的应用程序

中秋发帖不易,而且是关于OLED,是这方面的第一篇,也是关于显示屏的第一篇,只能说赞赞
不过可以上张图,大家同乐
congcong40 回答时间:2014-9-8 22:39:25

回复:【Nucleo板开发日志】+以OLED驱动程序为例,说明如何使用C++开发STM32的应用程序

支持支持!!!
wuzhujian 回答时间:2014-9-10 10:05:52

RE:【Nucleo板开发日志】+以OLED驱动程序为例,说明如何使用C++开发STM32的应用程序

写这个,主要是为了交差。
wkei007 回答时间:2015-4-14 17:29:03
不错,正在学习C++
anny 回答时间:2015-4-15 08:06:02
xjcent-18650 回答时间:2016-7-7 11:04:07
,C++开发赞一个

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版