查看: 8568|回复: 12

[原创] 基于LCD5110显示屏实现SDHC卡的文本显示

[复制链接]
  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7124
    最后登录
    2023-4-20
    发表于 2016-3-1 08:58:57 | 显示全部楼层 |阅读模式
           YL-KL26Z-V2开发板提供了丰富的外设资源,值得我们去不断地探索和研究。例如板载的SDHC接口与内部的DAC相配合已实现了语音播放功能,那能否利用板载的资源来实现一个多媒体的管控平台呢?我认为是可以期待的。这里先以一个LCD5110显示屏实现SDHC卡的文本显示为例做个开端,后续想为它在配上一个基于板上32MB SPIflash W25Q32的中文字库,从而实现中英混排显示。当然最终的目标是将功能移植到TFT显示屏上,以便配上BMP图片显示功能从而达到文本、图形、图像及音频的多媒体管控平台。        下面就说说LCD5110显示屏实现SDHC卡文本显示的原理,由于SDHC卡的存储容量相对比较大,所以可以存储外部制作好文本文件。要读取此类文件,涉及SDHC卡的读写及FATFS32文件系统,好在这些函数在例程中都提供了,只需合理利用即可。在显示方面已有的LCD5110使用经验,比较容易利用程序中的小字符库来实现相应字符的显示功能。
             由于只是个可行性的测试,目前只是实现了非中文的字符显示,待配上中文字库后来解决中英混排显示。在换行处理方面,可借助LCD5110的自有功能来实现自动换行,在换页上还需以限定字符数的方式配合按键来清屏。此外,目前显示的字节数限定在一个扇区内的512字节,若需要显示更多字节,则需要打开多个扇区乃至多个簇。


    关键代码如下:

    1. int  main (void)
    2. {   INT8U flag,part;
    3.         int i;
    4.     INT32U         cluster,size=0;
    5.     struct        FileInfoStruct FileInfo;
    6. SystemCoreClockUpdate();   
    7.         gpioInit();                                                         
    8.     Led5Set(1);                       
    9.         LCD_Init();
    10.         LCD_write_english_string(0,0,"SD_SPI Test Star");
    11.         spiInit(SPI0_BASE_PTR , Master);                                          
    12.         flag=SD_Init();
    13.         if(flag!=0)
    14.         {   LCD_write_english_string(0,1,"SSD_Init...Fall!");
    15.                 while(1);
    16.         }       
    17.         FAT_Init();
    18.         FAT_DisDir("\");
    19.         cluster=FAT_OpenFile("\\1.txt",&FileInfo);
    20.         if(cluster==0 || FileInfo.Size == 0)
    21.           {        LCD_write_english_string(0,1,"File open err!");
    22.                 return 0;
    23.         }
    24.         //printf("File size is %d",FileInfo.Size);
    25.         FIFO_out = 0;
    26.     FIFO_in  = 0;
    27.         part=0;
    28.         LCD_set_XY(0,2);
    29.         FAT_LoadPartCluster(cluster,part,(uint8_t *)(Buffer+FIFO_in));       
    30.         for(FIFO_out=0;FIFO_out<FileInfo.Size;FIFO_out++)
    31.         {                        printf("V=%d\n",Buffer[FIFO_out]);
    32.                                 LCD_write_char(Buffer[FIFO_out]);
    33.         }
    34.                         while(1);
    35. }
    复制代码
    以显示SD卡内的1.txt文件为例,其显示效果如下:


    LCD5110显示SD卡内文本信息

    LCD5110显示SD卡内文本信息

    文本内的存储信息

    文本内的存储信息

    评分

    参与人数 1NXP金币 +30 收起 理由
    小七 + 30 赞一个!

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-3 11:19
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    50

    主题

    1万

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    14090
    最后登录
    2024-4-19
    发表于 2016-3-1 09:13:53 | 显示全部楼层
    学习一下。。。 blank.png blank1.png blank2.png blank3.png blank4.png blank5.png blank6.png blank7.png blank8.png blank9.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-18 11:35
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    21

    主题

    945

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2001
    最后登录
    2020-6-8
    发表于 2016-3-1 09:20:04 | 显示全部楼层

    学习一下,谢谢分亨。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16805
    最后登录
    1970-1-1
    发表于 2016-3-1 13:10:06 | 显示全部楼层
    不错,多谢分享
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2016-3-1 14:55:06 | 显示全部楼层
    谢谢分享!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-12 00:23
  • 签到天数: 745 天

    连续签到: 1 天

    [LV.9]以坛为家II

    27

    主题

    1万

    帖子

    26

    金牌会员

    Rank: 6Rank: 6

    积分
    6868
    最后登录
    2020-7-15
    发表于 2016-3-1 19:25:30 | 显示全部楼层
    有参考价值。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-17 08:07
  • 签到天数: 273 天

    连续签到: 1 天

    [LV.8]以坛为家I

    74

    主题

    2338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7515
    最后登录
    2021-8-30
    发表于 2016-3-2 09:58:49 | 显示全部楼层
    学习啦!!
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7124
    最后登录
    2023-4-20
     楼主| 发表于 2016-3-2 10:46:28 | 显示全部楼层
    lkl0305 发表于 2016-3-1 13:10
    不错,多谢分享

    看你得过FreeLink+KL27 mini Board板,发现些资料上来呗,参考参考。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16805
    最后登录
    1970-1-1
    发表于 2016-3-2 11:56:11 | 显示全部楼层
    jinglixixi 发表于 2016-3-2 10:46
    看你得过FreeLink+KL27 mini Board板,发现些资料上来呗,参考参考。

    你也有么?还是这次准备入手
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-5-29 08:54
  • 签到天数: 2992 天

    连续签到: 8 天

    [LV.Master]伴坛终老

    45

    主题

    5548

    帖子

    22

    金牌会员

    Rank: 6Rank: 6

    积分
    12035
    最后登录
    2025-5-29
    发表于 2016-3-2 16:18:30 | 显示全部楼层
    这个屏幕不错哦。
    签到签到
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-21 08:43 , Processed in 0.102485 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表