stm32电子相框设计.docx
- 文档编号:14957106
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:9
- 大小:19.44KB
stm32电子相框设计.docx
《stm32电子相框设计.docx》由会员分享,可在线阅读,更多相关《stm32电子相框设计.docx(9页珍藏版)》请在冰点文库上搜索。
stm32电子相框设计
实习报告
实习类型生产实习
题目华迪实训报告
学院名称信息与科学技术学院
专业名称信息工程1班(电子方向)
学生姓名严鹏
学生学号201213010118
指导教师李俊(校外)/余小平(校内)
实习地点成都华迪公司
实习成绩
二〇15年3月二〇15年3月
华迪实训报告
本次实训是一款基于嵌入式硬件平台的数码相框,主控芯片为基于ARMCortex-M3内核的STM32系列嵌入式处理器,本设计包含主控制器核心板、LCD液晶显示、SD卡存储器等多个功能模块。
实现对SD卡里多幅图片以幻灯片形式在TFT屏上动态显示的效果,且带有实时时钟的功能。
一.项目简介
这将是以数字照片的重显为主要功能的产品,其功能更接近于传统意义上的相框。
由于人机界面的限制,为了更方便的重显和浏览以及确定重显的规则,这类产品并不强调有大容量的内存以及丰富的存储卡接口。
嵌入式系统具有以下几个重要特征:
①系统内核小,由于嵌入式系统一般应用于小型电子装置,系统资源相对有限,所以内核较之传统的操作系统要小得多。
比如,ENEA公司的OSE分布式系统,内核只有5KB,而Windows的内核则要大得多。
②专用性强,嵌入式系统的个性化很强,其中的软件系统和硬件结合非常紧密,一般要针对硬件进行系统的移植,同时针对不同的任务,往往需要对系统进行较大的更改。
另外,程序的编译下载要和系统相结合。
③嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能的设计及实现过于复杂,这样既利于控制系统成本,也利于实现系统安全。
④高实时性的操作系统软件是嵌入式软件的基本要求,而且软件要求固化存储,以提高速度,软件代码要求高质量和高可靠性。
⑤嵌入式软件开发要想走向标准化,就必须使用多任务操作系统。
嵌入式系统的应用程序可以没有操作系统而直接在芯片上运行,但为了更合理的调度多任务,利用系统资源、系统函数,用户必须自行选配RTOS开发平台。
⑥执行的实时性、可靠性,并减少开发时间,保障软件质量。
嵌入式系统开发需要专门的开发工具和环境。
由于嵌入式系统本身不具备自主开发能力,即使完成设计后,用户通常也不能对其中的程序功能进行修改,因此必须有一套基于通用计算机的开发工具和环境才能进行开发。
二.功能简介
本次我们做的产品的主要特征是:
1)可以修改播放方式和播放的时间
2)设计了开关机动画。
3)设计了主菜单和目录。
4)可以动态显示温度。
主程序设计
本系统先对STM32及其外设进行初始化,再对界面进行初始化,接着根据功能选择而分别进入幻灯片模式或时间模式。
按键具体功能如下:
按键KEY0:
播放下一张图片;按键KEY1:
播放上一张图片;按键KEY2:
切换幻灯片模式与日期时间模式;按键RESET:
系统复位;程序流程图如图4-8所示。
三.软件实现
intmain(void)
{
u8key;//返回检测按键值
u8t=0;//此值用于是否进行RTC的秒更新判断
FileInfoStruct*FileInfo;
u16pic_cnt=0;//当前目录下图片文件的个数
u16index=0;//当前选择的文件编号
u16time=0;//控制时间的变量
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72);//延时初始化
uart_init(72,9600);//串口1初始化
LCD_Init();//初始化液晶
KEY_Init();//按键初始化
LED_Init();//LED初始化
SPI_Flash_Init();//SPIFLASH使能
RTC_Init();//RTC初次可配置时间
//EXTIX_Init();//外部中断初始化
if(Font_Init())//字库不存在,则更新字库
{
POINT_COLOR=RED;
LCD_ShowString(60,50,"MiniSTM32");
LCD_ShowString(60,70,"FontERROR");
while
(1);
}
POINT_COLOR=RED;
Show_Str(60,50,"CDUT",16,0);
Show_Str(40,70,"数码相框",16,0);
POINT_COLOR=DARKBLUE;
Show_Str(70,90,"信工一班",16,0);
Show_Str(90,110,"严鹏",16,0);
Show_Str(60,130,"201503",16,0);
Show_Str(50,150,"welcome",16,0);
POINT_COLOR=RED;
SD_Init();
while(FAT_Init())//FAT错误
{
Show_Str(60,170,"文件系统错误!
",16,0);
if(SD_Init())
{
Show_Str(60,190,"SD卡初始化失败!
",16,0);//SD卡初始化失败
Show_Str(60,210,"请检查SD卡是否插入?
",16,0);
}
delay_ms(500);
LCD_Fill(60,170,240,230,WHITE);//清除显示
delay_ms(500);
LED0=!
LED0;//红灯DS0指示运行有误
}
while(SysInfoGet
(1))//得到图片文件夹
{
Show_Str(60,170,"图片文件夹未找到!
",16,0);
Show_Str(0,190,"请在SD卡创建“PICTURE”文件夹!
",16,0);
delay_ms(500);
FAT_Init();
SD_Init();
LED0=!
LED0;//红灯DS0指示运行有误
LCD_Fill(0,170,240,210,WHITE);//清除上两行显示
delay_ms(500);
}
Show_Str(60,170,"开始显示图片...",16,0);
for(;time<3;time++)//延时3秒(注意:
delay_ms(u16)实参大于1000时延时不准)
delay_ms(1000);
time=0;
Cur_Dir_Cluster=PICCLUSTER;
while
(1)
{
pic_cnt=0;
Get_File_Info(Cur_Dir_Cluster,FileInfo,T_JPEG|T_JPG|T_BMP,&pic_cnt);//获取当前文件夹下面的目标文//件个数
if(pic_cnt==0)//没有图片文件
{
LCD_Clear(WHITE);//清屏
while
(1)
{
if(time%3==0)//调整闪屏时间
Show_Str(20,170,"没有图片,请复制图片至SD卡中的PICTURE文件夹中,并重启系统!
",16,0);
elseLCD_Clear(WHITE);
time++;
delay_ms(300);
}
}
FileInfo=&F_Info[0];//开辟暂存空间.
index=1;
while
(1)
{
Get_File_Info(Cur_Dir_Cluster,FileInfo,T_JPEG|T_JPG|T_BMP,&index);//得到这张图片的信息
LCD_Clear(WHITE);//清屏,加载下一幅图片的时候,一定清屏
AI_LoadPicFile(FileInfo,0,0,240,320);//显示图片
POINT_COLOR=BLUE;
Show_Str(0,0,FileInfo->F_Name,16,1);//显示图片名字
while
(1)//延时5s
{
key=KEY_Scan();
if(key==1)break;//下一张
elseif(key==2)//上一张
{
if(index>1)
index-=2;
else
index=pic_cnt-1;
break;
}
四.项目总结
实习时所遇到的问题:
电子相框用来播放展示电子照片,实现播放照片,同时可以设置照片播放方式,以及照片播放的时间,显示名字。
温度显示。
在写代码的时候,首先用已给的模版做出了目录的雏形,发现有些菜单名目不能准确准确点击。
第二,在做出能够进入二级菜单,以及返回之后。
加入图片显示,发现所有的目录都不能生效,仅能够通过复位回到菜单。
第三,屏幕不停闪烁。
有的菜单点击之后不闪烁,有的又不停刷屏闪烁。
第四,按键不能启用,仅有复位键可以实现程序从头运行。
第五,软件的任务分配不合实际,有的任务实际比预期更难。
第六,有些函数的意义误解,导致程序一直出错。
五.实训体会
这次实训加强了软件编程和硬件调试的实战能力,提高了项目开发水平。
有关于C语言的使用进一步熟悉,认识了工程的代码量和培养了做工程的代码习惯。
硬件上再一次掌握了一些较难焊接的芯片的焊接方法和调试方法。
同时和团队中的同学一起合作完成了原本十分困难的任务。
认识了STM32的部分开发技巧和技能,给予了我关于学习开发和团队配合的知识。
提高了团队合作的素质。
提高了和团队队员沟通的能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- stm32 电子 设计