嵌入式应用实验报告_——电子相册

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式应用实验报告——电子相册

目录

一.实验目的: (3)

二.电子相册功能简介: (3)

三.程序流程图: (3)

四.中断程序: (4)

五.Bmp文件的转换(888-565): (5)

六.音乐文件的转换: (7)

七.图像缩放: (8)

八.图像显示: (8)

一.实验目的:

1、掌握基本的软件编程能力

2、熟悉STM32F103开发板的结构

二.电子相册功能简介:

由两个按键(User和Wakeup)控制相片的的切换(向前或向后),由temper键控制音乐的播放与暂停。

三.程序流程图:

初始化

系统时钟

I/O

L

C

D

显示欢迎图

检测temper键

是否按下?

音乐播放

状态修改

四.中断程序:

9_5中断

相片序号变量是否溢出?溢出时序号回到第一幅序号加1按序号显示相

片清除中断标志,中断返回

User 键下降沿0中断

相片序号变量是否溢出?

溢出时序号回到第三幅

序号减1按序号显示相

片清除中断标志,中断返回

Wakeup 键下降沿

User 键连接的是G 端口的第8位,Wakeup 键连接的是A 端口的第0位,temper 键连接的是C 端口的第13位。

五.Bmp文件的转换(888-565):

本实验是将bmp图转换为位图数据写进内部Flash的,采用的LCD型号为ILI9325,显示的彩色图片各通道位数为5/6/5(共两字节),而BMP格式的真彩色图片各通道位数为8/8/8(共三字节);因此为获得转换数据,在VC++6.0里编写了转换程序。

#include "stdio.h"

#include "bmp.h"

char readPath[]="13.bmp";

char datePath[]="3_2date.txt";

int bmpWidth;

int bmpHeight;

unsigned short biBitCount;

RGBQUAD *pColorTable;

unsigned char *pBmpBuf;

void getdate();

void changeBmp();

void main()

{

bool bmpread(char *rbmpname);

bool bmpwrite(char *wbmpname);

int a=bmpread(readPath);

if(!a)printf("cann't read the file!");

else

{

changeBmp();

getdate();

}

}

void getdate()

{

FILE *fp=fopen(datePath,"wb");

int i,j;

unsigned char *p;

int count=bmpWidth*bmpHeight*2;

p=pBmpBuf;

for(i=0;i

{

for(j=0;j<15;j++)

{

fprintf(fp,"0X%x,",pBmpBuf[2*i]|pBmpBuf[2*i+1]<<8);

i++;

}

fprintf(fp,"0X%x,\r\n",pBmpBuf[2*i]|pBmpBuf[2*i+1]<<8);

i++;

}

fclose(fp);

printf("i=%d",i);

}

void changeBmp()

{

int i,j,k=0;

unsigned char a[3];

int lineByte=(bmpWidth*biBitCount/8+3)/4*4;

for(i=0;i

for(j=0;j

{

a[0]=pBmpBuf[i*lineByte+3*j+2];

a[1]=pBmpBuf[i*lineByte+3*j+1];

a[2]=pBmpBuf[i*lineByte+3*j+0];

a[0]=a[0]>>3;

a[1]=a[1]>>2;

a[2]=a[2]>>3;

pBmpBuf[k]=a[2]|(a[1]<<5);

k++;

pBmpBuf[k]=(a[0]<<3)|(a[1]>>3);

k++;

}

printf("k=%d",k);

}

六.音乐文件的转换:

本实验是将wave格式音乐转换为音乐数据写进内部Flash的,wave文件采用的是RIFF格式,音频格式为PCM编码,单声道,8000HZ,

128kbps;因此为获得转换数据,在VC++6.0里编写了转换程序。

#include

#include

#include "wave_data.h"

unsigned char cTxt;

long i=0;

void main()

{

FILE *fp,*fpn;

if((fp=fopen("abc.wav","rb"))=NULL)

printf("cannot open this file !\n");

fp=fopen("abc.wav","rb");

fpn=fopen("abc_data.txt","wb");

while(!feof(fp))

{

cTxt=fgetc(fp);

fprintf(fpn,"%d,",cTxt);

if((i+1)%16==0)

fprintf(fpn,"\r\n");

i++;

}

fclose(fp);

fclose(fpn);

printf("\n");

printf("i=%d\n",i);

}

相关文档
最新文档