毕业设计| STM32F4电子阅读器制作教程

2023-05-05  

开机logo

电子书列表扫描

电子书列表显示及小说选择菜单

阅读功能:

1)能够记录每本电子书的退出时处于什么阅读位置,下次进入从该位置继续阅读

2)字体选择

3)字体大小选择

4)字体颜色设置

5)阅读背景设置

6)书签设置

7)目录生成功能(字符匹配)

8)章节跳转功能(基于目录生成功能)

9)阅读翻页设置(滚动/切换)


项目功能要求

项目偏软件,但是要依赖于自己对硬件的熟悉和驱动才能完成,用到的主要技术:

1)SD卡驱动(难–不过可移植 SD卡驱动细节可在用完再了解其驱动协议)2)FatFs文件系统移植使用3)LCD屏驱动(加载字库文件 做字库在LCD上的显示)

材料准备

✔ STM32F4开发板(本设计用的是普中STM32F4ZGT6最小系统板)作为毕设的话,最好自己硬件设计一块开发板,这样可以体现硬件的工作量。淡然不论是购买,还是自己做,注意一定要具备LCD屏接口。

在电子阅读器中,STM32F4作为整个项目的核心主控器件,用来处理各种数据。

✔ 800*480 4.3寸电容触摸LCD屏(项目中用的正点原子的屏)

作用:显示与触摸控制

✔ 一张32G以下的SD卡和一个读卡器

作用:存储小说文件与图片文件

硬件连接非常简单,把屏幕插到开发板上即可。

相关知识点


✦ txt文件数据的读取

1)谈谈txt文件学过C语言的文件IO都知道,用open函数打开后,用read函数读取的第一个字节开始就是文本内容,txt文件是文档文件,对于我们程序员来说文档文件是最容易操作的文件类型之一,因为它不像图片那样还需要考虑头部的一大堆信息。

2)读取txt文件数据利用FATFS文件系统提供的函数f_open 、f_read即可对数据进行读取出来,当然读取出来的都是文字的编码,可以先用串口函数打印出来看看数据对不对 printf("%srn",buf)。

✦ 汉字的显示(具体代码参考正点原子“汉字显示实验”)1)汉字的显示原理学习过屏幕驱动的应该都知道,屏幕的显示无非就是在屏幕上打相应颜色的点,比如要显示一个字符 ‘A’ 那么我只需要知道 ‘A’ 相应的点阵数据就可以把它显示出来,汉字也一样。

2)汉字库的存储但是汉字与字符不同的是,汉字有1万多个,字符却只有100多个,并且汉字的显示明显比字符的点阵复杂程度高,比如说字体是12的字符占用点阵是12x6,每个字符需要12x6/8=9个字节的存储空间。字体是12 的汉字占用12x12的点阵,每个汉字需要12x12/8=18个字节存储空间,这还是最小字体,大的字体所需要的存储空间只会成倍增加。

3)一般12号字体的汉字库需要500K字节、16号字体700K、24号字体1.6M、32号字体3M,这对于单片机来说数据量太大了,内部FLASH512K~1M表示压力很大。


4)需要把汉字库通过SD卡再保存到外部FILASH才行,w25q128无疑是个好选择,它拥有16M的存储空间,SPI通信协议,读写速度也是相当快。

毕设推荐:【全系列】电子专业毕业设计项目合集:选题/工具使用/项目/调试

✦ txt文件数据显示到MCU有关显示汉字就必然会涉及编码格式的问题,不同的编码格式对应的汉字编码是不同的,比如UTF-8编码的文件用GB2312编码打开就会乱码。


同理,比如文档的格式是UTF-8编码,但是我的字库是GBK编码,读出来的数据直接显示到屏幕就必然会乱码。


下载调试

步骤一:SD卡根目录文件拷贝阅读器的源码分享给各位,可以在“达尔闻说”的微信回复:电子阅读器。下载好配套资料,把下面两个文件夹拷贝到SD卡根目录下:

注意:一定要是根目录不然不能正常运行。

步骤二:初始化外部FLASH -W25Q128用keil打开代码工程,编译通过后下载。下载完成等待外部FLASH -W25Q128初始化完成,一开始会黑屏一段时间,是在擦除FLASH,然后会提示字库加载进度,直到LCD显示阅读界面为止。

如果下载代码后运行不正常:

1)注释掉这些代码,编译下载



2)不要断电,取消注释这段代码,编译下载,下载完成后W25Q128初始化完成,应该就可以运行



步骤三:动态logo显示(化作尘)

步骤四:进入主界面

啥都没有,先导入图书。图书要从SD卡中导入,txt文件在资料里已经打包好了,直接导入。

找到0:/TXT目录下的.txt文件,选择导入:

导入“斗罗大陆.txt”,主界面开始显示。图片是系统自动匹配,检测是否有与小说同名图片文件,比如“斗罗大陆.txt” 对应 “斗罗大陆.jpg”。如果没有匹配图片会显示默认图片。

点击左下角删除图书,再点击 X 即可移除图书操作,只是移除,并不是真正删除。


阅读界面都是根据页数匹配相应文字,因为读写速度问题加上需要算法识别加载,翻页加载过程都会有一段时间



目录功能:自动检测目录,通过检测“第” 与 “章”加上相应算法就可以检测显示目录,并记录偏移,可以跳转,上划可以显示下一页目录:

设置字体、背景:可以设置显示背景颜色,字体颜色,字体大小(4种字号)来适应自己喜欢的阅读方式:


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。