你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32电子相册制作的分享

[复制链接]
fightingboon 发布时间:2020-1-20 16:06
给大家找到一个简单些的项目——STM32电子相册。
# L  T* I+ H5 Z. W* {( Y. [" P
11.png
电子相册展示
+ [. Y8 ?* C5 L" R: {1 p( ]
电子相册功能

: L& `  \+ {8 L- Y
基于stm32芯片进行开发,采用480*320分辨率内置显存模块的LCD显示屏模块,使用stm32芯片内置的FSMC模拟8080接口时序从而驱动LCD,实现电子相册功能,循环播放SD卡中图片。通过FatFS文件系统进行SD存储空间的管理。
1 u! e- ?) U' R3 G
工作流程
+ U+ P6 a1 Y$ q# n8 h& J
1)通过FatFS方式读取Fat32格式SD卡中的jpg图片数据。通过FatFS系统从已格式化为Fat32文件系统的SD卡中读取图片数据流,通过二进制流方式按照FSMC时序,以行的方式传输到LCD显示屏内置的显存中,传输完成后刷新缓冲区从而实现显示图片的功能。
2)通过stm32的FSMC模拟8080时序驱动LCD显示屏显示图片。通过循环进行图片的刷新播放,实现了自动循环播放的功能。程序使用C语言编写,使用stm32提供的库函数进行硬件配置与操作。
3)通过循环函数以及延时函数实现循环播放图片功能
4)通过KEY1按键复位程序

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

8 ]$ p1 G2 L1 h7 P+ c- m& G
44.png

, O8 d1 A* @$ Y& F' f* s
野火STM32F103开发板
2)LCD显示屏模块:480*320分辨率内置显存模块

7 a4 j6 D; T9 z+ N# ]
系统软件代码
$ R6 G2 |# r. \+ }+ i) m
软件代码主要是移植野火开发板的代码,可以在“达尔闻说”微信回复:电子相册,获得。主程序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)
{  
  u16i,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 )
{
  intp = 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 thezero-terminator  
   strcpy(result, s1);  
   strcat(result, s2);  
   strcat(result, s3);
   return result;  
}

9 U4 n5 j3 E8 \8 Y! l/ q* [' }
以上就是电子相册的软硬件介绍,电子相册的实现难度较小,51单片机,STM32F103都可以制作。看的手痒的小伙伴,不妨做个试试。

1 C8 ?9 P( E$ D( L+ F' ]
收藏 评论1 发布时间:2020-1-20 16:06

举报

1个回答
pkoko 回答时间:2020-2-15 19:20:19
图片要提前进行处理吧?

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版