[其他ST产品] STM32+OLED屏显应用实例

[复制链接]
1403|38
 楼主| l63t89 发表于 2023-3-27 10:21 | 显示全部楼层
主函数main.c文件:
  1. #include "delay.h"
  2. #include "usart.h"
  3. #include "bsp_i2c.h"
  4. #include "sys.h"

  5. #include "oled.h"
  6. #include "gui.h"
  7. #include "test.h"

  8. int main(void)
  9. {       
  10.         delay_init();                           //延时函数初始化              
  11.         uart_init(115200);         
  12.         IIC_Init();
  13.                   
  14.         NVIC_Configuration();            //设置NVIC中断分组2:2位抢占优先级,2位响应优先级        
  15.         OLED_Init();                                 //初始化OLED  
  16.         OLED_Clear(0);
  17.         while(1)
  18.         {
  19.                 //printf("温度湿度显示");
  20.                 read_AHT20_once();
  21.                 OLED_Clear(0);
  22.                 delay_ms(1500);
  23.   }
  24. }
 楼主| l63t89 发表于 2023-3-27 10:21 | 显示全部楼层
六、STM32+OLED上下或左右的滑动显示长字符
1、滚屏设置

水平左右移动
  1. OLED_WR_Byte(0x2E,OLED_CMD);        //关闭滚动
  2. OLED_WR_Byte(0x26,OLED_CMD);        //水平向左或者右滚动 26/27
  3. OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节
  4. OLED_WR_Byte(0x00,OLED_CMD);        //起始页 0
  5. OLED_WR_Byte(0x07,OLED_CMD);        //滚动时间间隔
  6. OLED_WR_Byte(0x07,OLED_CMD);        //终止页 7
  7. OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节
  8. OLED_WR_Byte(0xFF,OLED_CMD);        //虚拟字节
  9. OLED_WR_Byte(0x2F,OLED_CMD);        //开启滚动
 楼主| l63t89 发表于 2023-3-27 10:21 | 显示全部楼层
垂直和水平滚动
  1. OLED_WR_Byte(0x2e,OLED_CMD);        //关闭滚动
  2. OLED_WR_Byte(0x29,OLED_CMD);        //水平垂直和水平滚动左右 29/2a
  3. OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节
  4. OLED_WR_Byte(0x00,OLED_CMD);        //起始页 0
  5. OLED_WR_Byte(0x07,OLED_CMD);        //滚动时间间隔
  6. OLED_WR_Byte(0x07,OLED_CMD);        //终止页 1
  7. OLED_WR_Byte(0x01,OLED_CMD);        //垂直滚动偏移量
  8. OLED_WR_Byte(0x2F,OLED_CMD);        //开启滚动
 楼主| l63t89 发表于 2023-3-27 10:22 | 显示全部楼层
2、代码撰写

添加文字字模代码oledfont.h文件
在test.c中写入OLED显示函数TEST_MainPage:
  1. void TEST_MainPage(void)
  2. {       

  3.         GUI_ShowCHinese(10,20,16,"考研顺利上岸",1);
  4.        
  5.         //GUI_ShowString(40,32,"64X128",16,1);
  6.         //GUI_ShowString(4,48,"www.lcdwiki.com",16,1);*/
  7.         delay_ms(500);               
  8.         delay_ms(500);
  9. }
 楼主| l63t89 发表于 2023-3-27 10:22 | 显示全部楼层
主函数main.c文件:
  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "oled.h"
  4. #include "gui.h"
  5. #include "test.h"
  6. int main(void)
  7. {       
  8.         delay_init();                           //延时函数初始化          
  9.         NVIC_Configuration();            //设置NVIC中断分组2:2位抢占优先级,2位响应优先级        
  10.         OLED_Init();                                 //初始化OLED  
  11.         OLED_Clear(0);             //清屏(全黑)
  12.         OLED_WR_Byte(0x2E,OLED_CMD);        //关闭滚动
  13.     OLED_WR_Byte(0x27,OLED_CMD);        //水平向左或者右滚动 26/27
  14.     OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节
  15.         OLED_WR_Byte(0x00,OLED_CMD);        //起始页 0
  16.         OLED_WR_Byte(0x07,OLED_CMD);        //滚动时间间隔
  17.         OLED_WR_Byte(0x07,OLED_CMD);        //终止页 7
  18.         OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节
  19.         OLED_WR_Byte(0xFF,OLED_CMD);        //虚拟字节
  20.         TEST_MainPage();
  21.         OLED_WR_Byte(0x2F,OLED_CMD);        //开启滚动
  22. }
 楼主| l63t89 发表于 2023-3-27 10:22 | 显示全部楼层
七、总结

通过上面三个实验基本掌握了STM32+OELD的操作显示,也了解了SPI的相关知识。注意OELD显示时要对字长进行设置,否则显示会有问题。OLED是一个很常用的外设,在很多的硬件的项目中运用广泛,掌握其使用能对之后的硬件项目大有裨益。总的来说本次实验让我受益匪浅!
 楼主| l63t89 发表于 2023-3-27 10:22 | 显示全部楼层
八、参考资料

https://blog.csdn.net/qq_43279579/article/details/111414037
https://blog.csdn.net/qq_46467126/article/details/121439142?spm=1001.2014.3001.5502
童雨竹 发表于 2024-4-22 08:18 | 显示全部楼层

如果防护与热设计欠佳
公羊子丹 发表于 2024-4-22 11:17 | 显示全部楼层

缩合型灌封硅胶由于固化过程有体积收缩一般不使用在模块电源的灌封中
万图 发表于 2024-4-22 12:20 | 显示全部楼层

在交流电频率一定情况下,电感量越大,其对交流电阻碍能力越大
帛灿灿 发表于 2024-4-22 15:19 | 显示全部楼层

电路的结构类似于全桥式,只是把其中的两只开关管(T3、T4)换成了两只等值大电容C1、C2。
周半梅 发表于 2024-4-22 18:18 | 显示全部楼层

脉冲变压器磁能被积累的问题容易解决,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部