(实验12)单片机,STM32F4学习笔记,代码讲解【OLED显示实验】【正点原子】【原创】


❤🧡💛2023年重写❤🧡💛

关于STM32F4系列代码讲解,博主已经更新了20几篇。可是在后台中博主却发现,这一篇【OLED显示实验】有很多人点击浏览,不知道是大家喜欢OLED的原因?还是说CSDN大数据推荐了这篇文章?鉴于我当初写这篇文章时并不细致(可以说是20几篇中比较水的一篇),因此决定于2023年进行细节补充重写,希望能帮助到想了解OLED实验的小伙伴。

❤🧡💛1、OLED液晶显示屏图片

在这里插入图片描述
正点原子这家的OLED因为兼容了四种通信方式,因此才看起来这么丑八怪,我们平时用不到6800和8080通信,因此这款OLED一般没人用

在这里插入图片描述
这是我在京东随便截图的两个OLED,左边是IIC,右边是SPI通信,这两种我都玩过,也是大家常用的显示屏模块,0.96寸和1.3寸无非就是大小不一样,我个人还是喜欢0.96寸,看着小巧一点,我印象比较深的是一家叫“中景园”的公司
在这里插入图片描述
就是这个,在学校时经常买他家的显示屏,因为代码资料给得很全,各种单片机OLED驱动都有,价格也不贵,图片上似乎是涨价了,我随便截的图

❤🧡💛2、工程代码讲解(新)

在这里插入图片描述
这是正点原子的代码框架,很多人说正点的代码很乱,我觉得乱不乱倒是其次,能够实用才是王道。虽然确实不是很完美,但是对于当初学生时代的我来说,他们的风格确确实实影响到了我,或许也影响到了很多其它人,关于代码框架,集百家之长,我以后有时间也会整理,详情可看我的【工作专栏】,这里我们主要关注oled.c这个驱动文件
在这里插入图片描述
通过名字也可以知道函数干什么用的
在这里插入图片描述
更新显存是说,将二维数组的内容更新到OLED屏显示,这本身就是个demo工程,且可以看出这个二维数组是空,也就是都是0,你如果想实现自己的功能,就可以把自己真实采集到的数据存到这个二维数组里面,所以叫做GRAM就是说软件模拟的数组存储,并不是真实的硬件存储

OLED_ShowNum函数调用了OLED_ShowChar函数,OLED_ShowChar函数调用了OLED_GRAM数组,即无论是显示字符还是显示数字最终都把数据存到了数组里面,所以叫临时的中间缓存

OLED_ShowNum()->OLED_ShowChar()->OLED_DrawPoint()->OLED_GRAM[x][pos]

在这里插入图片描述
这个demo工程支持三种格式大小的字体库,很简单就不解释了

	while(1) 
	{		
		OLED_ShowChar(36,52,t,12,1);//显示ASCII字符	
		OLED_ShowNum(94,52,t,3,12);	//显示ASCII字符的码值    
		OLED_Refresh_Gram();        //更新显示到OLED
		t++;
		if(t>'~')t=' ';  
		delay_ms(500);
		LED0=!LED0;
	}

这块代码呢,就是说~字符是ASCII表的最后一个字符,而空字符就是ASCII的第一个字符,因此这个demo代码就是把所有ASCII表的字符轮询显示出来了,也很简单,不懂的留意即可,博主看到会尽力解答

其它文章链接,独家吐血整理

(实验3)单片机,STM32F4学习笔记,代码讲解【按键输入实验】【正点原子】【原创】
(实验4)单片机,STM32F4学习笔记,代码讲解【串口实验】【正点原子】【原创】
(实验5)单片机,STM32F4学习笔记,代码讲解【外部中断实验】【正点原子】【原创】
(实验6,实验7)单片机,STM32F4学习笔记,代码讲解【看门狗实验】【正点原子】【原创】
(实验8)单片机,STM32F4学习笔记,代码讲解【定时器实验】【正点原子】【原创】
(实验9)单片机,STM32F4学习笔记,代码讲解【PWM输出实验】【正点原子】【原创】
(实验10)单片机,STM32F4学习笔记,代码讲解【输入捕获实验】【正点原子】【原创】
(实验11)单片机,STM32F4学习笔记,代码讲解【电容触摸按键实验】【正点原子】【原创】
(实验12)单片机,STM32F4学习笔记,代码讲解【OLED显示实验】【正点原子】【原创】
(实验13)单片机,STM32F4学习笔记,代码讲解【TFTLCD彩屏显示实验】【正点原子】【原创】
(实验15)单片机,STM32F4学习笔记,代码讲解【RTC实时时钟实验】【正点原子】【原创】
(实验17)单片机,STM32F4学习笔记,代码讲解【待机唤醒实验】【正点原子】【原创】
(实验23)单片机,STM32F4学习笔记,代码讲解【DMA实验】【正点原子】【原创】
(实验25)单片机,STM32F4学习笔记,代码讲解【SPI实验】【正点原子】【原创】
(实验34)单片机,STM32F4学习笔记,代码讲解【FLASH模拟EEPROM实验】【正点原子】【原创】
(实验36)单片机,STM32F4学习笔记,代码讲解【外部SRAM实验】【正点原子】【原创】
(实验37)单片机,STM32F4学习笔记,代码讲解【内存管理实验】【正点原子】【原创】
(实验38)单片机,STM32F4学习笔记,代码讲解【SD卡实验】【正点原子】【原创】
(实验39)单片机,STM32F4学习笔记,代码讲解【FATFS实验】【正点原子】【原创】
(实验46)单片机,STM32F4学习笔记,代码讲解【FPU测试实验】【正点原子】【原创】
(实验47)单片机,STM32F4学习笔记,代码讲解【DSP-FFT测试实验】【正点原子】【原创】
(实验50)单片机,STM32F4学习笔记,代码讲解【串口IAP实验】【正点原子】【原创】
(实验50)单片机,STM32F4学习笔记,代码讲解【串口IAP实验-RTC时钟实验】【正点原子】【原创】
(实验55)单片机,STM32F4学习笔记,代码讲解【网络通信实验】【正点原子】【原创】

实验现象

本实验利用开发板的OLED/CAMERA接口连接ALIENTEK OLED模块,实现OLED模块的显示,下载成功后,通过把OLED模块插入开发板左下角的OLED/CAMERA模块接口,按下复位之后,就可以看到OLED模块不停的显示ASCII码和码值。

主程序

int main(void)
{ 
	u8 t=0;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
	delay_init(168);     //初始化延时函数
	uart_init(115200);	//初始化串口波特率为115200
	LED_Init();					//初始化LED
	OLED_Init();				//初始化OLED
	OLED_ShowString(0,0,"ALIENTEK",24);  
	OLED_ShowString(0,24, "0.96' OLED TEST",16);  
	OLED_ShowString(0,40,"ATOM 2014/5/4",12);  
	OLED_ShowString(0,52,"ASCII:",12);  
	OLED_ShowString(64,52,"CODE:",12);  
	OLED_Refresh_Gram();//更新显示到OLED	 
	t=' ';  
	while(1) 
	{		
		OLED_ShowChar(36,52,t,12,1);//显示ASCII字符	
		OLED_ShowNum(94,52,t,3,12);	//显示ASCII字符的码值    
		OLED_Refresh_Gram();        //更新显示到OLED
		t++;
		if(t>'~')t=' ';  
		delay_ms(500);
		LED0=!LED0;
	}
}

OLED初始化程序

这一处略,因为是函数库,直接调用即可

代码讲解(旧)

//OLED_Refresh_Gram();//更新显示到OLED,这一句是将STM32F4自己导入的字库GRAM更新到OLED的GRAM

//显示字符串
//x,y:起点坐标  
//size:字体大小 
//*p:字符串起始地址 
//void OLED_ShowString(u8 x,u8 y,const u8 *p,u8 size)
//size字体大小中,24=24*12,1=16*8,12=12*6,OLED液晶屏=128*64,该代码只支持这三种大小字体

//在指定位置显示一个字符,包括部分字符
//x:0~127
//y:0~63
//mode:0,反白显示;1,正常显示
//size:选择字体 12/16/24
//void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode)
//size字体大小,同上

//注意ASCII字符集就是从 空格 开始的,所以第一个是’ '字符****

//常用ASCII表
//偏移量32 
//ASCII字符集: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
//PC2LCD2002取模方式设置:阴码+逐列式+顺向+C51格式
//总共:3个字符集(12*12、16*16和24*24),用户可以自行新增其他分辨率的字符集。
//每个字符所占用的字节数为:(size/8+((size%8)?1:0))*(size/2),其中size:是字库生成时的点阵大小(12/16/24...)
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32F4是一种单片机芯片,而OLED是一种显示技术。在引用\[1\]中,作者提到了在STM32F4上使用OLED显示屏的问题,并分享了他解决问题的经验。他修改了引脚和GPIO的起始程序,并通过IIC驱动OLED。然而,尽管程序没有报错,但没有达到他想要的效果。最终,经过一番折腾,他解决了相应的问题。 在引用\[2\]中,OLED被描述为一种新型的显示技术,具有低功耗、高对比度、自发光和可弯曲等优点。它可以用于各种嵌入式系统,如STM32F4单片机。作者分享了他如何使用STM32F4单片机OLED外设进行显示汉字、图片和动态图的项目,并提到了在实现过程中遇到的一些问题和解决方法。 在引用\[3\]中,作者分享了主函数的代码,其中包括了初始化OLED、MPU6050和MPU6050的DMP模式的代码。他还使用OLED显示了姿态角、温度、加速度传感器数据和陀螺仪数据。 综上所述,STM32F4可以通过使用OLED显示屏来实现各种功能,并且可以通过相应的代码进行控制和显示。 #### 引用[.reference_title] - *1* *3* [STM32F4系列驱动OLED的IIC方式](https://blog.csdn.net/Mzh171717/article/details/126769867)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [STM32F4+OLED 显示汉字、图片和动态图](https://blog.csdn.net/m_qingbo/article/details/131391583)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值