// //Read Sector(s) // DRESULT disk_read( uint8_t drv, /* Physical drive nmuber (0..) */ uint8_t* buff, /* Data buffer to store read data */ uint32_t sector, /* Sector address (LBA) */ uint8_t count /* Number of sectors to read (1..255) */ ) { DRESULT res = RES_ERROR; switch(drv) { #ifdef FUNC_CARD_EN case DEV_ID_SD : if(!SdReadBlock(sector, buff, count)) { res = RES_OK; } break; #endif //FUNC_CARD_EN #ifdef FUNC_USB_EN case DEV_ID_USB : if(HostStorReadBlock(sector, buff, count)) { res = RES_OK; } #endif //FUNC_USB_EN default: break; } return res; }
/******************************************************************************* * 函 数 名 :ShowFullSDPic * 函数功能 :显示SD卡的bin文件形式的图片 * 输 入 :add 图片起始地址,通过winhex查看 * 输 出 :无 *******************************************************************************/ void ShowFullSDPic(unsigned long add) { unsigned long i=0,j=0,k=0; AddressSet(0,0,239,319); while(i < 76800)//240*320 { LED = ~LED; SdReadBlock(DATA,add+k*512,512); for(j=0;j<256;j++) { LcdWriteData(DATA[j*2+1],DATA[j*2]); //写一个像素点 i++; if(i >= 76800) break; } k++; } }
/******************************************************************************* * 函 数 名: main * 函数功能: 主函数 * 输 入: 无 * 输 出: 无 *******************************************************************************/ void main() { //彩屏实验时最好关闭数码管的锁存器,避免数码管乱闪 DULA = 1; P0 = 0xff; DULA = 0; WELA = 1; P0 = 0xff; WELA = 0; LcdInit(); CLeanFullScreen(0xff,0xff);//清屏 ShowString(0,0,"LCD init OK",RED,WHITE); if(!SdInit()) { ShowString(0,20,"SD Init Fail",RED,WHITE); while(1); } if(!SdReadBlock(DATA,TXTADD,512)) { ShowString(0,20,"SD Read Fail",RED,WHITE); while(1); } ShowString(0,20,DATA,RED,WHITE);//显示TXT文本内容 Delayms(1000); while (1) { ShowFullSDPic(PIC1ADD); Delayms(2000); ShowFullSDPic(PIC2ADD); Delayms(2000); } }