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


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

相关文章

    收上述请求传递的两个变量ID和Password,使用$_GET['id]'和$_GET['password]'即可。 3.2、网页设计 网页设计采用HTML和PHP结合的方式,制作静态的页面,并且......
    毕业设计| STM32F4电子阅读器制作教程;开机logo 电子书列表扫描 电子书列表显示及小说选择菜单 阅读功能: 1)能够记录每本电子书的退出时处于什么阅读位置,下次进入从该位置继续阅读 2......
    公司,学芯片设计毕业学生在澳门根本找不到对口工作,为了让学生们毕业后有实践和就业的机会,余成斌带领学生在2002年创办了Chipidea,由此亲身建立起了澳门微电子的小生态圈,让澳门由“Chip......
    功能: – Edge浏览器“小睡(Snooze)”功能:大家可对当前正在浏览的网页设置一个 Cortana提醒事项。 人们经常习惯在浏览器中保留着已打开的标签页,将之视为一个“待办事项”。而“小睡”功能可以让你将一个网页......
    程序的执行效率,锻炼自己的编程能力;   单片机进阶篇   1、学习硬件是一件非常烧钱的事情,这不同于纯软件编程和网页设计只需要一台电脑和一个编程环境就能实现,硬件学习需要设计做电路板、买元件、买调......
    毕业设计| STM32版RFID医嘱专用手环;作为医嘱手环,除了有手环的常规功能之外,还有和医院的互动功能: ◇心率、血氧监测使用MAX30102模块,算法是FFT快速傅里叶变换,同时心率、血氧......
    的浏览与配置等操作。 具体实现内容:TCP/IP的驱动接口实现;HTTP协议的实现;HTML语言的网页设计;Web服务器的应用层实现;权限管理。 3.1TCP/IP的驱动接口的实现 驱动接口主要有: 其函......
    51单片机积累了太多的学习资料、例程、设计实例等,而且他们也非常愿意把这些资料共享出来方便后辈们学习。大学里的课程设计题目甚至毕业设计题目,在网上都能找到许多参考资料,这让很多同学更愿意在51单片机的基础上去实现自己的毕业设计......
    PNP三极管控制蜂鸣器无法完全关断-解析; -很多学生的毕业设计都用了PNP三极管去控制蜂鸣器,然后不少遇到蜂鸣器无法完全关断的问题,只是声音变小了。以下为分析思路,解决......
    表示:“毕业设计项目是学生开发实际应用的难得机会,同时为学生进入职场做好准备。亚利桑那州立大学几名学生在他们今年的项目中使用了 PolarFire SoC Discovery工具包,这对......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>