[菜农助学交流] 【第三期】M0+12864的文件浏览器

[复制链接]
 楼主| kyzb001 发表于 2011-12-15 10:57 | 显示全部楼层 |阅读模式
本帖最后由 kyzb001 于 2011-12-15 12:40 编辑

其实就是12864+M0+FATFS文件系统!


附上代码
没有12864的记得把 ST7588lcd_Init和DisplayDisk这个函数屏蔽!  串口一样可以打印消息的~!

  1. void disk_read_file()
  2. {
  3. uint8_t Disk_Key=0 ;
  4. uint8_t file_rank=0;
  5. uint8_t temp;
  6.     strcpy(diskname,"");
  7. obtain_folder();
  8. DisplayDisk(0);
  9. while(1)
  10. {
  11.   
  12.   Disk_Key=KeyVolat;
  13.   temp=file_rank;
  14.   switch(Disk_Key)
  15.   {
  16.    
  17.    case KEY_NONE: break;
  18.    case KEY_UP  :
  19.    {
  20.     if(file_rank++>=foldernum)
  21.      file_rank=foldernum;
  22.     while(Disk_Key==KEY_UP)
  23.      Disk_Key=KeyVolat;   
  24.    } break;
  25.    case KEY_DOWN:
  26.    {
  27.     if(file_rank--<=0)
  28.      file_rank=0;
  29.    
  30.     while(Disk_Key==KEY_DOWN)
  31.      Disk_Key=KeyVolat;
  32.    } break;
  33.    case KEY_MENU:
  34.    {
  35.     strcpy(diskname,disk[file_rank].foldername);
  36.     file_rank=0;
  37.     obtain_folder();
  38.    } break;
  39.   }
  40.   if(temp!=file_rank)
  41.   {
  42.    DisplayDisk(file_rank);
  43.   }  
  44. }  
  45. }  



  46. [code]
  47. void obtain_folder()
  48. {
  49. FATFS FatFs; /* File system object for logical drive */
  50. FRESULT res;
  51. FILINFO finfo;
  52. DIR dirs;

  53. uint8_t i;

  54. filenum=0;
  55. foldernum=0;

  56. for(i=0;i<20;i++)
  57. {
  58. memset(disk.foldername,0,20);
  59. memset(disk.filename,0,20);
  60. }

  61. f_mount(0, &FatFs);
  62. printf("--------------Open File:/%s-------------------------\n",diskname);
  63. res=f_opendir(&dirs, diskname);

  64. if ( res== FR_OK)
  65. {
  66. printf("--------------file name:%s--------------------------\n",diskname);
  67. while ((f_readdir(&dirs, &finfo) == FR_OK) && finfo.fname[0])
  68. {
  69. if (finfo.fattrib & AM_DIR)//如果是文件夹
  70. {
  71. printf("%s/%s\n",diskname,&finfo.fname[0]);
  72. strcpy(disk[foldernum++].foldername , &finfo.fname[0]);

  73. }
  74. if (finfo.fattrib & AM_ARC)//如果是文件
  75. {
  76. printf("%s/%s\n",diskname,&finfo.fname[0]);
  77. strcpy(disk[filenum++].filename , &finfo.fname[0]);
  78. }
  79. }
  80. }

  81. // DisplayDisk(0);

  82. f_mount(0, NULL);

  83. }
[/code]



  1. typedef struct
  2. {
  3. char filename[20];
  4. char foldername[20];
  5. }disk_t;

  6. disk_t disk[20];
  7. uint8_t filenum=0;
  8. uint8_t foldernum=0;
  9. char  diskname[20];

  10. void DisplayDisk(unsigned char x_line)
  11. {
  12. uint8_t i,j;
  13. uint8_t filenumber;
  14. filenumber=foldernum+filenum;
  15. j=0;
  16. CogLCDClr();

  17. for(i=0;i<filenumber;i++)
  18. {
  19.   if(i<foldernum)
  20.    DisPlay_12X12_Str((uint8_t *)disk.foldername ,5,i*12);
  21.   else if(i>=foldernum&&i<5)
  22.    DisPlay_12X12_Str((uint8_t *)disk[j++].filename  ,5,i*12);
  23.   else
  24.    break;
  25. }  
  26. DisPlay_Picture(0x00,0,3+(x_line*12),4,4);
  27. CogLCDRedraw();
  28. DrvSYS_Delay(8000);
  29. }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
wangjiahao88 发表于 2011-12-15 12:56 | 显示全部楼层
请问可以读取bin文件字库 图库吗?
 楼主| kyzb001 发表于 2011-12-15 14:15 | 显示全部楼层
en ! 可以图~ 显示没做!
lixiaoxu2meng 发表于 2011-12-16 08:11 | 显示全部楼层
很好啊 帮顶:lol
hotpower 发表于 2011-12-28 14:21 | 显示全部楼层
顶起来,水太深~~
consif 发表于 2011-12-28 21:52 | 显示全部楼层
mcs8098 发表于 2011-12-29 11:03 | 显示全部楼层
学习了
mandide 发表于 2012-1-4 10:16 | 显示全部楼层
学习~~~~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:Is this my life

15

主题

624

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:Is this my life

15

主题

624

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部