STM32CubeMX——OLED开辟底子(HAL 库)

科技 科技 981 人阅读 | 0 人回复

<
1、开拓根底概述:

1、0.96 微暇 OLED 模块接心界说:

SPI 接心模块

  • GND   电源天
  • VCC   电源正(3 ~ 5.5V)
  • D0    OLED 的 D0 足,正在 SPI 战 IIC 通讯中为时钟管足
  • D1    OLED 的 D1 足,正在 SPI 战 IIC 通讯中为数据管足
  • RES    OLED 的 RES 管足,用于复位(低电仄复位)
  • DC    OLED 的 D/C 管足,数据战号令掌握管足
  • CS    OLED 的 CS 管足,片选管足
IIC 接心模块:

  • GND   电源天
  • VCC   电源正(3 ~ 5.5V)
  • SCL    OLED 的 D0 足,正在 SPI 战 IIC 通讯中为时钟管足
  • SDA    OLED 的 D1 足,正在 SPI 战 IIC 通讯中为数据管足
2、0.96微暇 OLED 模块 128×64 分辩率剖析:

105119dy0ke0qxqvoyvq0t.jpg

  0.96微暇 OLED(128×64分辩率)模块,128×64分辩率即 OLED 显现横坐标有 128 个像素格纵坐标有 64 个像素格,可是因为 OLED 不克不及一次掌握一个面阵,只能掌握 8 个面阵,并且是垂曲标的目的扫描掌握,因而垂曲标的目的坐标可选为 0~7 页(一页 8 个像素格)程度标的目的可选坐标 0~128普通一其中笔墨体占 16×16 个像素格字母和标记占 8×16 个像素格

3、基于 STM32 的 OLED 使用,需求做哪些工作:


  • 移植 OLED 的底层驱动函数库
  • 筹办需求的中笔墨符战图片等数据
  • 挪用 OLED 驱动库中的底层函数停止使用开拓

2、STM32CubeMX 设置:

1、此处我们利用 SPI 接心,接线如图:

105120tevr3v9j9t09ttj5.jpg

2、STM32CubeMX 设置:

105121f1oo440400v0p6o9.jpg

把PB12、PB13、PB14、PB15均设置为 GPIO 输出功用

3、

1、移植 OLED 的底层驱动函数库:

① 将 4 个驱动文件拷贝到工程文件(战main.c统一目次)中,将oled.c文件增加到工程代码文件中,并正在main.c中引进oled.h头文件(.c、.h文件的文件名按照本人脚上的驱动文件而不同,能够去自淘宝商家、妙技社区等)

示例文件:
105121c95kpkok21w24y1c.png

105121kswiuai7heisa1tg.jpg

main.c中引进oled.h头文件:
105123mtdyolmioobsmb3o.png


② 按照所选用的芯片型号,修正oled.h头文件中所用的芯片的头文件:

105124gw9gfyzzcyjr4dtf.png
头文件名能够参考main.h中的头文件

③ 按照电路道理图,修正oled.h中 OLED 的引足界说:

105124rumm3touov4nmyjm.jpg
并查抄其他界说能否准确

④ 检察OLED_Init(void)初初化函数的源码,按照电路接心战使用需求停止修正:

  1. void OLED_Init(void)
  2. {
  3.         GPIO_InitTypeDef GPIO_InitStruct;
  4.        
  5.         __HAL_RCC_GPIOB_CLK_ENABLE();
  6.         //CS
  7.         GPIO_InitStruct.Pin = OLED_CS_GPIO_PIN;
  8.     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  9.     GPIO_InitStruct.Pull = GPIO_PULLUP;
  10.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  11.     HAL_GPIO_Init(OLED_CS_GPIO, &GPIO_InitStruct);
  12.         //DC
  13.         GPIO_InitStruct.Pin = OLED_DC_GPIO_PIN;
  14.     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  15.     GPIO_InitStruct.Pull = GPIO_PULLUP;
  16.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  17.     HAL_GPIO_Init(OLED_DC_GPIO, &GPIO_InitStruct);
  18.         //SCLK
  19.         GPIO_InitStruct.Pin = OLED_SCLK_GPIO_PIN;
  20.     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  21.     GPIO_InitStruct.Pull = GPIO_PULLUP;
  22.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  23.     HAL_GPIO_Init(OLED_SCLK_GPIO, &GPIO_InitStruct);
  24.         //SDIN
  25.         GPIO_InitStruct.Pin = OLED_SDIN_GPIO_PIN;
  26.     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  27.     GPIO_InitStruct.Pull = GPIO_PULLUP;
  28.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  29.     HAL_GPIO_Init(OLED_SDIN_GPIO, &GPIO_InitStruct);
  30.         HAL_GPIO_WritePin(OLED_CS_GPIO, OLED_CS_GPIO_PIN, GPIO_PIN_SET);
  31.         HAL_GPIO_WritePin(OLED_DC_GPIO, OLED_DC_GPIO_PIN, GPIO_PIN_SET);
  32.         HAL_GPIO_WritePin(OLED_SCLK_GPIO, OLED_SCLK_GPIO_PIN, GPIO_PIN_SET);
  33.         HAL_GPIO_WritePin(OLED_SDIN_GPIO, OLED_SDIN_GPIO_PIN, GPIO_PIN_SET);
复造代码
2、筹办需求的中笔墨符战图片等数据:

利用与字模硬件 PCtoLCD2002
105124ebvnqqdqqbvq0qf6.jpg

PCtoLCD2002 的利用办法本文没有做介绍。
3、OLED 驱动库中经常使用的函数:

  1. void OLED_Init(void);                        // OLED 初初化函数
  2. void OLED_Clear(void);                        // OLED 浑屏函数
  3. void OLED_ShowString(u8 x, u8 y, u8 *chr);                                // 显现英笔墨符串函数
  4. void OLED_ShowChinese(u8 x, u8 y, u8 no);                                // 显现中笔墨符串函数
  5. void OLED_ShowPicture(u8 x0, u8 y0, u8 x1, u8 y1, u8 BMP[]);                // 显现图片函数
复造代码
4、法式编写:

1、main.c:
  1. /* USER CODE BEGIN 0 */
  2. extern unsigned char BMP1[];
  3. void OLED_display_info()
  4. {
  5.         OLED_Clear();
  6.         OLED_ShowString(0, 0, (uint8_t *)"CSDN @");
  7.         OLED_ShowCHinese(48, 0, 0);
  8.         OLED_ShowCHinese(64, 0, 1);
  9.         OLED_ShowCHinese(80, 0, 1);
  10.         OLED_DrawBMP(77, 2, 127, 7, BMP1);
  11. }
  12. /* USER CODE END 0 */
  13.   /* USER CODE BEGIN 2 */
  14.         OLED_Init();
  15.         OLED_display_info();
  16.   /* USER CODE END 2 */
复造代码
2、oledfont.h:
  1. const unsigned char Hzk[][32]={
  2. {0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00},
  3. {0x00,0x02,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00},/*"~",0*/
  4. /* (16 X 16 , 宋体 )*/
  5. {0x04,0x04,0x24,0x24,0xAF,0x24,0x2C,0x34,0x24,0x24,0xAF,0x24,0x24,0x04,0x04,0x00},
  6. {0x02,0x12,0x12,0x12,0x12,0x13,0x12,0xFE,0x12,0x13,0x12,0x12,0x12,0x12,0x02,0x00},/*"莘",1*/
  7. /* (16 X 16 , 宋体 )*/
  8. };
复造代码
3、bmp.h:
  1. const unsigned char BMP1[] =
  2. {
  3. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  4. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0xC0,
  5. 0xE0,0xE0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0x60,0x00,
  6. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  7. 0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFC,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,
  8. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xF9,0xF8,
  9. 0xF8,0xF8,0xF0,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,
  10. 0xE0,0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  11. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  12. 0xFF,0x1F,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0xFC,
  13. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  14. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x1F,0x0F,
  15. 0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF8,0xFE,0xFF,
  16. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  17. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x81,0x00,0x00,0x00,
  18. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x3F,
  19. 0xC7,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  20. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xC1,0x3F,0xFF,0xFE,
  21. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  22. 0x03,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
  23. 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,
  24. 0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  25. /* (50 X 50 )*/
  26. };
复造代码
4、运转:
105125hn0c0nadjxox7an7.jpg


免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作!
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

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

本版积分规则