开机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种字号)来适应自己喜欢的阅读方式: