一、OLED简介
1、简介
2、模型
3、参数
4、接口
二、STM32F103的IIC接口实现
1、任务要求:
(1)显示自己的学号和姓名;
(2)显示AHT20的温度和湿度;
(3)上下或左右的滑动显示长字符,比如“Hello,欢迎来到重庆交通大学物联网205实训室!”或者歌词、诗词。(最好使用硬件刷屏模式)
2、代码获取
3、打开百度网盘下载的文件解压后
打开工程后如图
4、代码修改
(1)打开oledfont.h文件(HARDWARE文件夹里面)
(2)字模生成
打开文件包里的PCtoLCD2002软件
先进行设置
生成需要的字模块
(3)把生成的模块复制到oledfont.h文件相应的地方
5、植入AHT20温湿度模块
(1)AHT20工程库分享
(2)解压后把HARDWARE里面这两个文件夹复制到OLED文件夹模块里面HARDWARE文件夹下
(3)添加到oled工程
(4)添加头文件路径
(5)重定义函数修改(改myiic.c和temhum.c文件里的)
void IIC_Start(void)改为void IIC_Start1(void)
void IIC_Stop(void)改为void IIC_Stop1(void)
u8 IIC_Wait_Ack(void)改为u8 IIC_Wait_Ack1(void)
temhum.c里面引用的这三个函数都要修改!
6、控制硬件ssd1306实现字体滑动
(2)有参数可知,该OLED自带ssd1306硬件
(3)在ssd1306初始化函数里面加滑动函数
在该函数最后面加
OLED_WR_Byte(0x2e,OLED_CMD);//关滚动
OLED_WR_Byte(0x2A,OLED_CMD);//29向右,2a向左
OLED_WR_Byte(0x00,OLED_CMD);//A:空字节
OLED_WR_Byte(0x00,OLED_CMD);//B:水平起始页
OLED_WR_Byte(0x00,OLED_CMD);//C:水平滚动速度
OLED_WR_Byte(0x01,OLED_CMD);//D:水平结束页
OLED_WR_Byte(0x2f,OLED_CMD);//开滚动
注意:发送开始滚屏(2f)前要先传输好显示数据,如果在滚屏的时候传输显示数据RAM中的内容可能被损坏。
7、main.c函数修改
(1)名字、学号输出代码模块
OLED_ShowCHinese(36,3,0);//鲜
OLED_ShowCHinese(56,3,1);//露
OLED_ShowString(16,6,"631807030226",16);
delay_ms(5000);
OLED_Clear(0);
(2)温湿度输出模块
AHT20_Read_CTdata(CT_data); //²»¾¹ýCRCУÑ飬ֱ½Ó¶ÁÈ¡AHT20µÄζȺÍʪ¶ÈÊý¾Ý
hum = CT_data[0]*100*10/1024/1024; //¼ÆËãµÃµ½Êª¶ÈÖµ£¨·Å´óÁË10±¶£©
tem = CT_data[1]*200*10/1024/1024-500;//¼ÆËãµÃµ½Î¶ÈÖµ£¨·Å´óÁË10±¶£©
OLED_ShowCHinese(0,2,0);//ʪ
OLED_ShowCHinese(16,2,1);//¶È
OLED_ShowCHinese(32,2,0);//:
OLED_ShowNum(48,2,hum/10,2,16);
OLED_ShowChar(62,2,'%',16);
OLED_ShowCHinese(0,4,0);//ÎÂ
OLED_ShowCHinese(16,4,1);//¶È
OLED_ShowCHinese(32,4,0);//:
OLED_ShowNum(48,4,tem/10,2,16);
OLED_ShowChar(62,4,'C',16);
delay_ms(5000);
OLED_Clear(0);
(3)滑动字模块
OLED_ShowCHinese(0,3,2);
OLED_ShowCHinese(16,3,3);
OLED_ShowCHinese(32,3,4);
OLED_ShowCHinese(48,3,5);
OLED_ShowCHinese(64,3,6);
OLED_ShowCHinese(80,3,7);
OLED_ShowCHinese(96,3,8);
OLED_ShowCHinese(112,3,9);
OLED_ShowCHinese(128,3,10);
OLED_ShowCHinese(144,3,11);
OLED_ShowCHinese(160,3,12);
OLED_ShowCHinese(176,3,13);
OLED_ShowCHinese(192,3,14);
delay_ms(5000);
OLED_Clear(0);
注意定义数组和变量
![]()
8、连接oled和stm32核心板(IIC接口),再通过串口转接线连接电脑,烧录即可。