在线时间694 小时
UID406727
注册时间2012-12-12
NXP金币20
TA的每日心情 | 奋斗 2023-2-15 00:12 |
---|
签到天数: 969 天 连续签到: 1 天 [LV.10]以坛为家III
金牌会员
 
- 积分
- 7124
- 最后登录
- 2023-4-20
|
YL-KL26Z-V2开发板提供了丰富的外设资源,值得我们去不断地探索和研究。例如板载的SDHC接口与内部的DAC相配合已实现了语音播放功能,那能否利用板载的资源来实现一个多媒体的管控平台呢?我认为是可以期待的。这里先以一个LCD5110显示屏实现SDHC卡的文本显示为例做个开端,后续想为它在配上一个基于板上32MB SPIflash W25Q32的中文字库,从而实现中英混排显示。当然最终的目标是将功能移植到TFT显示屏上,以便配上BMP图片显示功能从而达到文本、图形、图像及音频的多媒体管控平台。 下面就说说LCD5110显示屏实现SDHC卡文本显示的原理,由于SDHC卡的存储容量相对比较大,所以可以存储外部制作好文本文件。要读取此类文件,涉及SDHC卡的读写及FATFS32文件系统,好在这些函数在例程中都提供了,只需合理利用即可。在显示方面已有的LCD5110使用经验,比较容易利用程序中的小字符库来实现相应字符的显示功能。
由于只是个可行性的测试,目前只是实现了非中文的字符显示,待配上中文字库后来解决中英混排显示。在换行处理方面,可借助LCD5110的自有功能来实现自动换行,在换页上还需以限定字符数的方式配合按键来清屏。此外,目前显示的字节数限定在一个扇区内的512字节,若需要显示更多字节,则需要打开多个扇区乃至多个簇。
关键代码如下:
- int main (void)
- { INT8U flag,part;
- int i;
- INT32U cluster,size=0;
- struct FileInfoStruct FileInfo;
- SystemCoreClockUpdate();
- gpioInit();
- Led5Set(1);
- LCD_Init();
- LCD_write_english_string(0,0,"SD_SPI Test Star");
- spiInit(SPI0_BASE_PTR , Master);
- flag=SD_Init();
- if(flag!=0)
- { LCD_write_english_string(0,1,"SSD_Init...Fall!");
- while(1);
- }
- FAT_Init();
- FAT_DisDir("\");
- cluster=FAT_OpenFile("\\1.txt",&FileInfo);
- if(cluster==0 || FileInfo.Size == 0)
- { LCD_write_english_string(0,1,"File open err!");
- return 0;
- }
- //printf("File size is %d",FileInfo.Size);
- FIFO_out = 0;
- FIFO_in = 0;
- part=0;
- LCD_set_XY(0,2);
- FAT_LoadPartCluster(cluster,part,(uint8_t *)(Buffer+FIFO_in));
- for(FIFO_out=0;FIFO_out<FileInfo.Size;FIFO_out++)
- { printf("V=%d\n",Buffer[FIFO_out]);
- LCD_write_char(Buffer[FIFO_out]);
- }
- while(1);
- }
复制代码 以显示SD卡内的1.txt文件为例,其显示效果如下:
|
-
LCD5110显示SD卡内文本信息
-
文本内的存储信息
评分
-
查看全部评分
|