久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于stm32的TFTLCD屏圖片顯示源碼
[打印本頁]
作者:
好歹
時間:
2018-10-23 17:10
標題:
基于stm32的TFTLCD屏圖片顯示源碼
基于stm32的TFTLCD屏圖片顯示
SZ9~L8A004]UO7C]R2DN38A.png
(44.94 KB, 下載次數(shù): 111)
下載附件
2018-10-23 17:08 上傳
單片機源程序如下:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "key.h"
#include "usmart.h"
#include "malloc.h"
#include "sdio_sdcard.h"
#include "w25qxx.h"
#include "ff.h"
#include "exfuns.h"
#include "text.h"
#include "piclib.h"
#include "string.h"
#include "math.h"
//得到path路徑下,目標文件的總個數(shù)
//path:路徑
//返回值:總有效文件數(shù)
u16 pic_get_tnum(u8 *path)
{
u8 res;
u16 rval=0;
DIR tdir; //臨時目錄
FILINFO tfileinfo; //臨時文件信息
u8 *fn;
res=f_opendir(&tdir,(const TCHAR*)path); //打開目錄
tfileinfo.lfsize=_MAX_LFN*2+1; //長文件名最大長度
tfileinfo.lfname=mymalloc(SRAMIN,tfileinfo.lfsize);//為長文件緩存區(qū)分配內存
if(res==FR_OK&&tfileinfo.lfname!=NULL)
{
while(1)//查詢總的有效文件數(shù)
{
res=f_readdir(&tdir,&tfileinfo); //讀取目錄下的一個文件
if(res!=FR_OK||tfileinfo.fname[0]==0)break; //錯誤了/到末尾了,退出
fn=(u8*)(*tfileinfo.lfname?tfileinfo.lfname:tfileinfo.fname);
res=f_typetell(fn);
if((res&0XF0)==0X50)//取高四位,看看是不是圖片文件
{
rval++;//有效文件數(shù)增加1
}
}
}
return rval;
}
int main(void)
{
u8 res;
DIR picdir; //圖片目錄
FILINFO picfileinfo;//文件信息
u8 *fn; //長文件名
u8 *pname; //帶路徑的文件名
u16 totpicnum; //圖片文件總數(shù)
u16 curindex; //圖片當前索引
u8 key; //鍵值
u8 pause=0; //暫停標記
u8 t;
u16 temp;
u16 *picindextbl; //圖片索引表
delay_init(); //延時函數(shù)初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應優(yōu)先級
uart_init(115200); //串口初始化為115200
usmart_dev.init(72); //初始化USMART
LED_Init(); //初始化與LED連接的硬件接口
KEY_Init(); //初始化按鍵
LCD_Init(); //初始化LCD
W25QXX_Init(); //初始化W25Q128
my_mem_init(SRAMIN); //初始化內部內存池
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(30,50,200,16,16,"Font Error!");
delay_ms(200);
LCD_Fill(30,50,240,66,WHITE);//清除顯示
delay_ms(200);
}
Show_Str(30,50,200,16,"ELITE STM32F1開發(fā)板",16,0);
Show_Str(30,70,200,16,"圖片顯示程序",16,0);
Show_Str(30,90,200,16,"KEY0:NEXT KEY1:PREV",16,0);
Show_Str(30,110,200,16,"KEY_UP:PAUSE",16,0);
Show_Str(30,130,200,16,"正點原子@ALIENTEK",16,0);
Show_Str(30,150,200,16,"2015年1月20日",16,0);
while(f_opendir(&picdir,"0:/PICTURE"))//打開圖片文件夾
{
Show_Str(30,170,240,16,"PICTURE文件夾錯誤!",16,0);
delay_ms(200);
LCD_Fill(30,170,240,186,WHITE);//清除顯示
delay_ms(200);
}
totpicnum=pic_get_tnum("0:/PICTURE"); //得到總有效文件數(shù)
while(totpicnum==NULL)//圖片文件為0
{
Show_Str(30,170,240,16,"沒有圖片文件!",16,0);
delay_ms(200);
LCD_Fill(30,170,240,186,WHITE);//清除顯示
delay_ms(200);
}
picfileinfo.lfsize=_MAX_LFN*2+1; //長文件名最大長度
picfileinfo.lfname=mymalloc(SRAMIN,picfileinfo.lfsize); //為長文件緩存區(qū)分配內存
pname=mymalloc(SRAMIN,picfileinfo.lfsize); //為帶路徑的文件名分配內存
picindextbl=mymalloc(SRAMIN,2*totpicnum); //申請2*totpicnum個字節(jié)的內存,用于存放圖片索引
while(picfileinfo.lfname==NULL||pname==NULL||picindextbl==NULL)//內存分配出錯
{
Show_Str(30,170,240,16,"內存分配失敗!",16,0);
delay_ms(200);
LCD_Fill(30,170,240,186,WHITE);//清除顯示
delay_ms(200);
}
//記錄索引
res=f_opendir(&picdir,"0:/PICTURE"); //打開目錄
if(res==FR_OK)
{
curindex=0;//當前索引為0
while(1)//全部查詢一遍
{
temp=picdir.index; //記錄當前index
res=f_readdir(&picdir,&picfileinfo); //讀取目錄下的一個文件
if(res!=FR_OK||picfileinfo.fname[0]==0)break; //錯誤了/到末尾了,退出
fn=(u8*)(*picfileinfo.lfname?picfileinfo.lfname:picfileinfo.fname);
res=f_typetell(fn);
if((res&0XF0)==0X50)//取高四位,看看是不是圖片文件
{
picindextbl[curindex]=temp;//記錄索引
curindex++;
}
}
}
Show_Str(30,170,240,16,"開始顯示...",16,0);
delay_ms(1500);
piclib_init(); //初始化畫圖
curindex=0; //從0開始顯示
res=f_opendir(&picdir,(const TCHAR*)"0:/PICTURE"); //打開目錄
while(res==FR_OK)//打開成功
{
dir_sdi(&picdir,picindextbl[curindex]); //改變當前目錄索引
res=f_readdir(&picdir,&picfileinfo); //讀取目錄下的一個文件
if(res!=FR_OK||picfileinfo.fname[0]==0)break; //錯誤了/到末尾了,退出
fn=(u8*)(*picfileinfo.lfname?picfileinfo.lfname:picfileinfo.fname);
strcpy((char*)pname,"0:/PICTURE/"); //復制路徑(目錄)
strcat((char*)pname,(const char*)fn); //將文件名接在后面
LCD_Clear(BLACK);
ai_load_picfile(pname,0,0,lcddev.width,lcddev.height,1);//顯示圖片
Show_Str(2,2,240,16,pname,16,1); //顯示圖片名字
t=0;
while(1)
{
key=KEY_Scan(0); //掃描按鍵
if(t>250)key=1; //模擬一次按下KEY0
if((t%20)==0)LED0=!LED0;//LED0閃爍,提示程序正在運行.
if(key==KEY1_PRES) //上一張
{
if(curindex)curindex--;
else curindex=totpicnum-1;
break;
}else if(key==KEY0_PRES)//下一張
{
curindex++;
if(curindex>=totpicnum)curindex=0;//到末尾的時候,自動從頭開始
break;
}else if(key==WKUP_PRES)
{
pause=!pause;
LED1=!pause; //暫停的時候LED1亮.
}
if(pause==0)t++;
delay_ms(10);
}
res=0;
}
myfree(SRAMIN,picfileinfo.lfname); //釋放內存
myfree(SRAMIN,pname); //釋放內存
myfree(SRAMIN,picindextbl); //釋放內存
}
復制代碼
下載:
實驗38 圖片顯示實驗.rar
(1.65 MB, 下載次數(shù): 280)
2018-10-23 17:39 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
winkle
時間:
2019-6-27 16:01
正需要這個程序呢
作者:
阿含
時間:
2020-10-12 21:12
請問這個文件的工程在哪啊,怎么整體打開啊
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
免费的色网站
|
亚洲一区二区久久
|
亚洲精品一区二区三区蜜桃久
|
a级片在线观看
|
一区二区日韩
|
男女羞羞视频免费看
|
69性欧美高清影院
|
欧美精品一二区
|
亚洲精品在线观看网站
|
99reav
|
亚洲精品久久久一区二区三区
|
欧美日韩一区二区在线观看
|
一区二区三区四区电影视频在线观看
|
色网在线看
|
欧美一区二区在线播放
|
91av入口
|
91精品久久久久
|
国产乱码精品一品二品
|
日日干日日
|
欧美天堂在线观看
|
亚洲日韩中文字幕一区
|
一区二区三区在线观看免费视频
|
美女天天干天天操
|
精品一级
|
国产精品久久久久久久久久久免费看
|
日本三级精品
|
综合色播
|
一区二区不卡视频
|
精品国产视频
|
91av在线免费
|
久久99这里只有精品
|
欧美日韩国产不卡
|
国产乱码久久久久久
|
成av在线
|
激情综合五月
|
精品国产黄色片
|
久久人人爽人人爽
|
一区二区三区在线播放视频
|
日本久久久久久
|
中文字幕一区在线观看视频
|
精品国产乱码久久久久久中文
|