STM32基于IIC接口下的OLED显示

一、OLED简介

1、简介
在这里插入图片描述
2、模型
在这里插入图片描述

3、参数
在这里插入图片描述
4、接口
在这里插入图片描述

二、STM32F103的IIC接口实现

1、任务要求:
(1)显示自己的学号和姓名;
(2)显示AHT20的温度和湿度;
(3)上下或左右的滑动显示长字符,比如“Hello,欢迎来到重庆交通大学物联网205实训室!”或者歌词、诗词。(最好使用硬件刷屏模式)
2、代码获取
链接:https://pan.baidu.com/s/1NwMuZeHV97SOPWsftSshGA
提取码:07ho
网站:https://detail.tmall.com/item.htm?spm=a1z0d.6639537.1997196601.80.201d74841fbMPw&id=556732249552
3、打开百度网盘下载的文件解压后
在这里插入图片描述
在这里插入图片描述
打开工程后如图
在这里插入图片描述
4、代码修改
(1)打开oledfont.h文件(HARDWARE文件夹里面)
在这里插入图片描述
(2)字模生成
打开文件包里的PCtoLCD2002软件
先进行设置
在这里插入图片描述
生成需要的字模块
在这里插入图片描述
(3)把生成的模块复制到oledfont.h文件相应的地方
在这里插入图片描述
5、植入AHT20温湿度模块
(1)AHT20工程库分享
链接:https://pan.baidu.com/s/13xDBvulFlWlwmLLYIBHFaQ
提取码:kbet
(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实现字体滑动
(1)参考该博客:0.96oled屏,驱动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接口),再通过串口转接线连接电脑,烧录即可
9、效果演示
在这里插入图片描述

  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等风来1249

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值