初级会员

- 积分
- 65
- 金钱
- 65
- 注册时间
- 2016-3-27
- 在线时间
- 9 小时
|
3金钱
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
#include "key.h"
#include "usmart.h"
#include "malloc.h"
#include "MMC_SD.h"
#include "ff.h"
#include "exfuns.h"
#include "fontupd.h"
#include "text.h"
#include "piclib.h"
#include "string.h"
#include "24cxx.h"
#include "myiic.h"
#include "touch.h"
/*****************************定义函数****************************************/
void show_image(u8 *route,u16 x,u16 y,u16 z,u16 w);
u8 copy(u8 *name);
void Next_one();
/****************************************************************************/
//ALIENTEK Mini STM32开发板范例代码31
//图片显示 实验
//技术支持:www.openedv.com
//广州市星翼电子科技有限公司
//得到path路径下,目标文件的总个数
//path:路径
//返回值:总有效文件数
/*****************初始定义*****************************/
u8 res;
DIR picdir; //图片目录
FILINFO picfileinfo;//文件信息
u8 *fn; //长文件名
u8 *fn1;
u8 *fn11;
u8 *pname; //带路径的文件名
u8 *ddd0="0:/PICTURE/1.jpg";
u8 *ddd1="0:/PICTURE/2.jpg";
u8 *ddd2="0:/PICTURE/3.jpg";
u8 *ddd3="0:/PICTURE/4.jpg";
u8 *ddd[32]={"0:/PICTURE/1.jpg","0:/PICTURE/2.jpg","0:/PICTURE/3.jpg","0:/PICTURE/4.jpg","0:/PICTURE/5.jpg","0:/PICTURE/6.jpg","0:/PICTURE/7.jpg","0:/PICTURE/8.jpg","0:/PICTURE/9.jpg","0:/PICTURE/10.jpg","0:/PICTURE/11.jpg","0:/PICTURE/12.jpg",
"0:/PICTURE/13.jpg","0:/PICTURE/14.jpg","0:/PICTURE/15.jpg","0:/PICTURE/16.jpg"};
char count=0; //标记显示的位置
u16 totpicnum; //图片文件总数
u8 key; //键值
u8 pause=0; //暂停标记
u8 t;
u8 floag;
u16 *picindextbl; //图片索引表
/*************************************************************/
/**************************************************************/
/**********************************************/
u8 copy(u8 *name)
{
strcpy((char*)pname,(char*)name); //复制路径(目录)
return *pname;
}
/**********************************************/
/********************************************/
void star()
{
u8 temp; //控制是否跳出点餐
tp_dev.scan(0);
if(tp_dev.sta&TP_PRES_DOWN) //触摸屏被按下
{
if(tp_dev.x[0]<lcddev.width&&tp_dev.y[0]<lcddev.height)
{
if(tp_dev.x[0]>180&&tp_dev.y[0]<280)
{
show_image(ddd[1],0,0,240,320);
temp=1;
} } }
while(temp==1);
}
/****************显示图片**********************/
void show_image(u8 *route,u16 x,u16 y,u16 z,u16 w)
{
piclib_init(); //初始化画图
totpicnum=1;
picfileinfo.lfsize=_MAX_LFN*2+1; //长文件名最大长度
picfileinfo.lfname=mymalloc(picfileinfo.lfsize); //为长文件缓存区分配内存
pname=mymalloc(picfileinfo.lfsize); //为带路径的文件名分配内存
picindextbl=mymalloc(2*totpicnum); //申请2*totpicnum个字节的内存,用于存放图片索引
*pname= copy(route);
ai_load_picfile(pname,x,y,z,w,1);
}
/**************************显示按下一张****************************************/
void Next_one()
{
u16 temp;
u16 x=0;
u16 y=0;
// u16 record; //记录目标
x=0; y=0;
if(count == 15) {count=11;}
if(count <= 0) {count=0; }
if(floag == 1) { count = count; }
if(floag == 0) { count = count-8; }
{
for(temp=0;temp<2;temp++)
{
show_image(ddd[count],x,y,80,80);
count++;
x=x+80;
}
x=x-160;
y=y+80;
for(temp=0;temp<2;temp++)
{
show_image(ddd[count],x,y,80,80);
x=x+80;
count++;
}
myfree(picfileinfo.lfname); //释放内存
myfree(pname); //释放内存
myfree(picindextbl); //释放内存
}
}
/**********************************end*************************************/
/****************************按下shang一张*******************************************/
/*
u16 fuck()
{
u8 check; //用作数据的显示
u8 i,j;
u16 x=0,y=0;
if(floag==1)
{
for(j=0;j<2;j++)
{
show_image(ddd,x,y,80,80);
x=x+80;
}
x=x-160;
y=y+80;
}
}
*/
/*********************************end**************************************/
int main(void)
{
delay_init(); //延时函数初始化
tp_dev.init(); //触摸屏初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
uart_init(9600); //串口初始化为9600
LCD_Init(); //初始化液晶
LED_Init(); //LED初始化
KEY_Init(); //按键初始化
usmart_dev.init(72);//usmart初始化
mem_init(); //初始化内部内存池
exfuns_init(); //为fatfs相关变量申请内存
f_mount(fs[0],"0:",1); //挂载SD卡
f_mount(fs[1],"1:",1); //挂载FLASH.
POINT_COLOR=RED;
while(font_init()) //检查字库
{
LCD_ShowString(60,50,200,16,16,"Font Error!");
delay_ms(200);
LCD_Fill(60,50,240,66,WHITE);//清除显示
delay_ms(200);
}
while(1)
{
//show_image(ddd[0],0,0,240,320);
//star();
tp_dev.scan(0);
if(tp_dev.sta&TP_PRES_DOWN) //触摸屏被按下
{
if(tp_dev.x[0]<lcddev.width&&tp_dev.y[0]<lcddev.height)
{
if(tp_dev.x[0]>180&&tp_dev.y[0]<280)
{
floag = 1;
Next_one();
}
else
{
floag = 0;
Next_one();
}
}
}
}
}
程序写的不好,希望不要批评。真心向各位大神求助
|
|