STM32F103C8T6驱动0.96OLED实现动态图片教学(静态原神和动态坤坤动画)

您所在的位置:网站首页 静态图更美如何形容 STM32F103C8T6驱动0.96OLED实现动态图片教学(静态原神和动态坤坤动画)

STM32F103C8T6驱动0.96OLED实现动态图片教学(静态原神和动态坤坤动画)

2024-07-17 11:38| 来源: 网络整理| 查看: 265

前言:

        编者第一想法是做一个原神的登陆界面的动态图片,但奈何找不到与之对应的GIF图片(如读者有这张GIF动图请务必联系我),只能做了一张原神标题的静态图片和坤坤的经典动图,这其中更繁琐的是一张一张的取模,制作不易还请大家点赞+收藏+关注后再进行学习。

一、效果图

静态图:原神

动态图:坤坤起舞

df67f16466d85539487e963c3f9f4e04

二、制作过程 1.先去网上找一张自己心仪的GIF图片,时间不宜过长,否则会撑爆你的单片机。编者找的坤坤用软件i_view64把GIF图片提取拆分成逐帧的形式。

然后你就能得到每一帧的坤坤了。

这其中会有一些照片帧率和其他的照片明显不一样,一定要把每一帧的照片都过一遍,把尺寸和大众不同的都给删去,最后保留30张(连一起能完成整套的动作即可)!切记不可多留!

2.再打开i_view64软件,把每一张坤坤的彩色照片转格式成为对应OLED尺寸的黑白坤

打开逐帧拆分的坤坤这一文件夹格式要转成BMP的,切记!

迎面走来的正是你帅气的坤哥,然后在左上角处找到文件(F)这一选项,单击打开出现很多选项,点击批量转换/重命名。

按图中步骤进行操作

按图中所示进行勾选,然后点击确定保存自己的选择。

确定好自己的保存地址,不要和动图掺杂一起了。

点击开始即可完成转换,找到对应的文件夹

此时已经得到了极具特征并且有些可爱的黑白坤。

3.打开取模软件

设置成如图所示模样,在软件最上方的工具栏中的模式中选择图形模式,按图示进行设置,一定要把行前缀和行后缀给删掉。

打开我们的黑白坤文件

点击生成字模即可得到如图所示的字模数组,把得到的数组储存到字模的.H文件中即可,重复上述操作得到每一帧坤坤图片对应的数组。这个过程是枯燥且无味的。注意:数组应是所有图片转后的的长度都一样,如有不一样的图片应立即舍去不用,否则会造成程序错误!

三、代码制作

main.c

// //本程序只供学习使用,未经作者许可,不得用于其它任何用途 //测试硬件:单片机STM32F103C8T6,晶振72M 单片机工作电压3.3V或5V //作者:肆伍 //技术交流QQ群:821417708 //群中有完整资料免费开源 //创建日期:2024/1/16 //版本:V1.0 //版权所有,盗版必究。 #include "stm32f10x.h" #include "delay.h" #include "oled.h" #include "smg.h" //static int msec,num; extern unsigned char Yuanshen[]; extern unsigned char Yuan[][472]; extern unsigned char kun[][384]; void System_Init(void)//关闭所有外设,也可以拔出跳冒使外设无效 { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE); //使能GPIOG的时钟 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); //关闭JTAG 释放出PB3,PB4,PA15 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //高速GPIO GPIO_Init(GPIOC,&GPIO_InitStructure); //初始化PC13 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//输出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //高速GPIO GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_12; GPIO_Init(GPIOB,&GPIO_InitStructure); //初始化PB0、1、12 GPIO_SetBits(GPIOB,GPIO_Pin_1); //关闭蜂鸣器 GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_12); //点亮LED灯 GPIO_ResetBits(GPIOC,GPIO_Pin_13); //点亮LED灯 GPIO_ResetBits(GPIOA,GPIO_Pin_15); //点亮LED灯 } int main(void) { delay_init(); HC595D_Init(); System_Init(); OLED_Init(); OLED_Clear(0); while(1) { // OLED_DrawGIF(35,0,94,7,6,472,Yuan); OLED_DrawGIF(32,1,96,7,48,384,kun); // OLED_DrawBMP(13,0,115,7,Yuanshen); } }

完整代码和制作过程中的各种工具后续我会打包放在下载链接中,如有需要可自行下载,也可在评论区留言或者直接私信我。

文章若有侵权请及时联系,看到后必会及时处理!

文章编写不易还请各位读者多多点赞收藏和关注,后续我会为大家推出更多的优质项目。

下载链接:https://download.csdn.net/download/weixin_66429380/88762969



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3