一、实验任务
理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能:
- 显示自己的学号和姓名;
- 显示AHT20的温度和湿度;
- 上下或左右的滑动显示长字符,比如“Hello,欢迎来到******物联网205实训室!”或者一段歌词或诗词(最好使用硬件刷屏模式)。
功能(1)(2)见前面的文章,本篇文章实现功能(3)
二、OLED滚动指令
参考文章:
http://www.51hei.com/bbs/dpj-180145-1.html
1、水平左右移动
OLED\_WR\_Byte(0x2E,OLED_CMD); //关闭滚动
OLED\_WR\_Byte(0x26,OLED_CMD); //水平向左或者右滚动 26/27
OLED\_WR\_Byte(0x00,OLED_CMD); //虚拟字节
OLED\_WR\_Byte(0x00,OLED_CMD); //起始页 0
OLED\_WR\_Byte(0x07,OLED_CMD); //滚动时间间隔
OLED\_WR\_Byte(0x07,OLED_CMD); //终止页 7
OLED\_WR\_Byte(0x00,OLED_CMD); //虚拟字节
OLED\_WR\_Byte(0xFF,OLED_CMD); //虚拟字节
OLED\_WR\_Byte(0x2F,OLED_CMD); //开启滚动
2、设置垂直和水平滚动
OLED\_WR\_Byte(0x2e,OLED_CMD); //关闭滚动
OLED\_WR\_Byte(0x29,OLED_CMD); //水平垂直和水平滚动左右 29/2a
OLED\_WR\_Byte(0x00,OLED_CMD); //虚拟字节
OLED\_WR\_Byte(0x00,OLED_CMD); //起始页 0
OLED\_WR\_Byte(0x07,OLED_CMD); //滚动时间间隔
OLED\_WR\_Byte(0x07,OLED_CMD); //终止页 1
OLED\_WR\_Byte(0x01,OLED_CMD); //垂直滚动偏移量
OLED\_WR\_Byte(0x2F,OLED_CMD); //开启滚动
垂直滚动偏移量=0时,就只有水平左右移了。
通过设置起始页 终止页 被设置的区域就垂直和水平滚动,,其余的区域就只有垂直滚动
3、设置滚动区域
OLED\_WR\_Byte(0x2e,OLED_CMD); //关闭滚动
OLED\_WR\_Byte(0x29,OLED_CMD); //水平垂直和水平滚动左右 29/2a
OLED\_WR\_Byte(0x00,OLED_CMD); //虚拟字节
OLED\_WR\_Byte(0x00,OLED_CMD); //起始页 0
OLED\_WR\_Byte(0x07,OLED_CMD); //滚动时间间隔
OLED\_WR\_Byte(0x07,OLED_CMD); //终止页 1
OLED\_WR\_Byte(0x01,OLED_CMD); //垂直滚动偏移量
三、程序编写
int main(void)
{
delay\_init(); //延时函数初始化
NVIC\_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
OLED\_Init(); //初始化OLED
OLED\_Clear(0); //清屏(全黑)
OLED\_WR\_Byte(0x2E,OLED_CMD); //关闭滚动
OLED\_WR\_Byte(0x27,OLED_CMD); //水平向左或者右滚动 26/27
OLED\_WR\_Byte(0x00,OLED_CMD); //虚拟字节
OLED\_WR\_Byte(0x00,OLED_CMD); //起始页 0
OLED\_WR\_Byte(0x07,OLED_CMD); //滚动时间间隔
OLED\_WR\_Byte(0x07,OLED_CMD); //终止页 8
OLED\_WR\_Byte(0x00,OLED_CMD); //虚拟字节
OLED\_WR\_Byte(0xFF,OLED_CMD); //虚拟字节
TEST\_MainPage();
OLED\_WR\_Byte(0x2F,OLED_CMD); //开启滚动
while(1)
{
}
}
其中OLED_WR_Byte(0x2F,OLED_CMD)
的内容:
void TEST\_MainPage(void)
{
GUI\_ShowCHinese(10,20,16,"好好学习嵌入式",1);
delay\_ms(500);
delay\_ms(500);
}
GUI_ShowCHinese()
函数中的内容:
void GUI\_ShowCHinese(u8 x,u8 y,u8 hsize,u8 \*str,u8 mode)
{
while(\*str!='\0')
{
if(hsize == 16)
{
GUI\_ShowFont16(x,y,str,mode);
}
else if(hsize == 24)
{
GUI\_ShowFont24(x,y,str,mode);
}
else if(hsize == 32)
{
GUI\_ShowFont32(x,y,str,mode);
}
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/c63832bd8478e53ed3c3e92cd9b52587.png)
![img](https://img-blog.csdnimg.cn/img_convert/d96c911a6e9757f7eb8591730ab2e161.jpeg)
![img](https://img-blog.csdnimg.cn/img_convert/2b1de188c3d420d684edf27c18ccaedd.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**
![img](https://img-blog.csdnimg.cn/img_convert/7c6103f0ab1b4b3fdfbfe045a0e76ce1.png)
![img](https://img-blog.csdnimg.cn/img_convert/79fd15281d0598d2b427a6b685e033d6.png)
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)**
<img src="https://img-community.csdnimg.cn/images/73bb5de17851459088c6af944156ee24.jpg" alt="img" style="zoom: 67%;" />
# 最后
**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**
**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**
ty.csdnimg.cn/images/73bb5de17851459088c6af944156ee24.jpg" alt="img" style="zoom: 67%;" />
# 最后
**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**
**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**
**[更多资料点击此处获qu!!](https://bbs.csdn.net/topics/618376385)**