查看原文
其他

项目分享| STM32电子相册制作

妮mo 达尔闻说 2021-01-17

不想错过我的推送,记得右上角-查看公众号-设为星标,摘下星星送给我

前两期分享的项目(戳文末看原文),很多小伙伴说:真是太牛了,太难了,可惜我不会做!于是本期项目分享,妮姐就给大家找到一个简单些的项目——STM32电子相册。

电子相册展示

本次分享项目的相关原理图和代码可以在“达尔闻说”微信回复:电子相册,获取。

电子相册功能
基于stm32芯片进行开发,采用480*320分辨率内置显存模块的LCD显示屏模块,使用stm32芯片内置的FSMC模拟8080接口时序从而驱动LCD,现电子相册功能,循环播放SD卡中图片通过FatFS文件系统进行SD存储空间的管理。
工作流程
1)通过FatFS方式读取Fat32格式SD卡中的jpg图片数据。通过FatFS系统从已格式化为Fat32文件系统的SD卡中读取图片数据流,通过二进制流方式按照FSMC时序,以行的方式传输到LCD显示屏内置的显存中,传输完成后刷新缓冲区从而实现显示图片的功能。
2)通过stm32的FSMC模拟8080时序驱动LCD显示屏显示图片。通过循环进行图片的刷新播放,实现了自动循环播放的功能。程序使用C语言编写,使用stm32提供的库函数进行硬件配置与操作。

3)通过循环函数以及延时函数实现循环播放图片功能

4)通过KEY1按键复位程序 

流程图
系统硬件
1)核心板:使用野火的秉火指南者开发板,以STM32F103VET6为核心主控芯片。如果手上没有这款开发板,但是有同样的STM32开发板可以移植。
野火指南者开发板硬件资源包含:常用各类接口,如USB、串口;板载WIFI 8266 ;摄像头接口 OV7725;JTAG下载接口;2.4G无线接,可外接NRF24L01模块;蓝牙接口,可外接H05蓝牙模块;SD卡,可外接32GB的TF卡。

野火STM32F103开发板
2)LCD显示屏模块:480*320分辨率内置显存模块
系统软件代码

软件代码主要是移植野火开发板的代码,可以在“达尔闻说”微信回复:电子相册,获得。主程序main.c如下:

#include "stm32f10x.h"#include "./lcd/bsp_ili9341_lcd.h"#include "./usart/bsp_usart.h" #include "./led/bsp_led.h" #include "ff.h"#include <stdio.h>#include <string.h>#include <stdlib.h>
extern void jpgDisplay(char *pic_name);char *join(char *, char *,char *);
void delay_us(u16 t){ u16 i,j; for(i=0;i<t;i++){ for(j=0;j<t;j++){ } }}FATFS fs; /* FatFs文件系统对象 */FRESULT res_sd;                /* 文件操作结果 *//** * @brief 主函数 * @param 无 * @retval 无 */int main ( void ){  int p = 0  ILI9341_Init ();         //LCD 初始化 LCD_SetFont(&Font8x16); LCD_SetColors(RED,BLACK); ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH); /* 清屏,显示全黑 */  ILI9341_GramScan ( 6 ); USART_Config();   LED_GPIO_Config();  LED_BLUE; //本工程编译后 jpg解码库有一些warning,不影响使用。 //移植本工程时,请注意启动文件的堆栈大小 printf("\r\n ********** 显示JPG文件*********** \r\n");   printf("\r\n 实验前请确保SD卡的目录下具有实验使用的JPG图片文件, \r\n");  /*挂载sd文件系统*/ res_sd = f_mount(&fs,"0:",1); if(res_sd != FR_OK) { printf("\r\n请给开发板插入已格式化成fat格式的SD卡。\r\n");  } ILI9341_GramScan ( 6 ); /*显示SD卡内的JPG文件,请确保SD卡该路径下有该文件,  可在工程目录下的“需要拷贝到SD卡”的文件夹中复制到SD卡的该目录*/ jpgDisplay("0:/Image/background.jpg"); delay_us(4000); while ( 1 ) { switch(p%10){ case 0: jpgDisplay("0:/img0.jpg"); break; case 1: jpgDisplay("0:/img1.jpg"); break; case 2: jpgDisplay("0:/img2.jpg"); break; case 3: jpgDisplay("0:/img3.jpg"); break; case 4: jpgDisplay("0:/img4.jpg"); break; case 5: jpgDisplay("0:/img5.jpg"); break; case 6: jpgDisplay("0:/img6.jpg"); break; case 7: jpgDisplay("0:/img7.jpg"); break; case 8: jpgDisplay("0:/img8.jpg"); break; case 9: jpgDisplay("0:/img9.jpg"); break;    } p++; delay_us(8000); }} char* join(char *s1, char *s2,char *s3) {     char *result = malloc(strlen(s1)+strlen(s2)+strlen(s3)+1);//+1 for the zero-terminator   strcpy(result, s1); strcat(result, s2);     strcat(result, s3);  return result; }
以上就是电子相册的软硬件介绍,项目首发于CSDN,作者:Kevinten10。电子相册的实现难度较小,51单片机,STM32F103都可以制作。看的手痒的小伙伴,不妨做个试试。同时,欢迎加入达尔闻技术交流群,和小伙伴一起交流,进群方式:添加妮姐微信459888529,回复技术交流,邀请入群!
END

达尔闻项目分享系列——聚焦物联网、嵌入式、AI、FPGA等热门应用技术,开源分享原理图、代码等项目方案,做你手边的知识库。

项目分享系列集锦:

STM32物联网智能家居项目

树莓派+计算棒2完成实时人脸识别项目

嵌入式开发板的云计算平台搭建

STM32实现最简单空中鼠标

Arduino魔方机器人
STM32版“AI灵魂画手”


我们是妮mo,达尔闻创始人,只讲技术不撩汉的小姐姐。达尔闻在线教育平台旨在服务电子行业专业人士,提供技能培训视频,覆盖各细分领域热门话题,比如嵌入式,FPGA,人工智能等。并针对不同人群量身定制分层级学习内容,例如常用知识点,拆解评测,电赛/智能车/考研等,欢迎关注。官网:www.darwinlearns.comB站:达尔闻QQ群:786258064

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存