硬件课程设计报告简易电子书Word格式.docx
- 文档编号:16193594
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:23
- 大小:1.06MB
硬件课程设计报告简易电子书Word格式.docx
《硬件课程设计报告简易电子书Word格式.docx》由会员分享,可在线阅读,更多相关《硬件课程设计报告简易电子书Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
4.4VS1003音频解码芯片17
4.5整机结构18
4.5.1MSP430开发板与12864液晶屏的连接19
4.5.2MSP430开发板与SD卡的连接19
4.5.3MSP430开发板与VS1003芯片的连接20
4.6菜单功能20
4.7电子书显示功能21
4.7.1实现显示功能的基本函数21
4.7.2向下翻页功能22
4.7.3向上翻页功能22
4.7.4显示阅读时间23
4.7.5按百分比跳转23
4.7.6书签功能的实现23
4.7.7英文单词的人性化显示24
4.8音乐播放功能24
4.9俄罗斯方块游戏功能25
4.10按键检测27
5.系统测试28
5.1菜单功能的测试28
5.2电子书阅读功能测试29
5.3音乐播放功能测试31
5.4游戏功能的测试31
6.心得体会31
7.参考文献32
1.概述
1.1课程设计的核心任务
随着嵌入式技术的飞速发展,各种电子产品出现了小型化,智能化,多功能化方向发展的趋势。
在这种趋势下,许多小型电子产品层出不穷,并且逐渐开始替代传统的生活用品,并走近我们的生活。
电子书阅读器的出现就再图书信息的承载和阅读方式上有了很大的革新。
本项目的目的就是制作一个电子阅读器,可以让人们方便的进行随身阅读。
同时在阅读疲劳时还可以利用其中的mp3播放器和内置的游戏进行放松娱乐。
1.2课程设计的工作进程
本课设由段经璞,赵冰洁,张琢三人组队共同完成。
大家相互之间进行分工合作,以取得快速的工作进展和优秀的最后结果。
2.需求分析
2.1功能分析
电子书,最出名的代表应该是亚马逊公司的kindle电子书阅读器。
Kindle使用电子墨水屏幕,可以提供接近纸质书的阅读体验。
同时还可以进行音乐播放,以及无线上网等功能。
并且kindle通过和亚马逊的网上书店整合,可以实现图书的快速查找,购买以及阅读。
而现在,单纯的电子书几乎不存在,电子书的功能几乎都被整合在了各式各样掌上终端中。
这样的掌上终端在进行电子书阅读的同时,可以播放音乐,无线浏览网页以及进行游戏。
因此单纯的电子书可以说是完全没有市场的,它必须被整合其他的功能才能实现良好的效果。
通过以上的分析可以发现,电子书阅读器必须与其他功能进行整合才能被推入市场。
当然,在整合其他功能的同时,我们更要把电子书阅读的功能完善好。
根据分析,我们决定在课设中实现电子书,音乐播放以及俄罗斯方块游戏的功能。
电子书阅读部分,我们决定实现以下功能:
1.SD卡及FAT32文件系统的读写
2.长/短文件名的显示
3.电子书的显示
4.按阅读进度百分比直接跳转
5.阅读时间显示
6.书签功能
7.英文单词的人性化显示
在音乐播放部分,我们决定实现以下功能:
1.歌曲名称的显示
2.歌曲音量的调节
3.歌曲的前进,后退,快进,快退及暂停的功能。
2.2可行性分析
2.2.1技术可行性分析
在电子书阅读部分,我们组使用msp430f149芯片作为主控芯片。
使用SD卡作为存储设备。
因为msp430f149芯片自带spi控制器,所以可以直接使用spi接口,利用SD卡的spi模式与SD卡进行数据交换。
同时准备使用12864液晶屏作为我们电子书的显示部分。
12864具有内建的英文及中文字库,可以方便的显示各种文字信息,从而实现电子书的显示。
在音乐播放部分,我们组使用vs1003音频解码芯片来进行音频解码。
Vs1003自带spi接口,可以方便的利用spi总线与msp430f149主控芯片进行连接。
在进行音乐播放时,只要把音频文件从SD卡中取出再直接发送到vs1003中即可。
在游戏部分,我们利用12864的绘图功能实现俄罗斯方块游戏。
2.2.2经济可行性
因为我们小组不具备自己焊接电路板的时间和能力,因此我们组直接从市场上购买现成的开发板。
最终购买的开发板的价格如下:
1、msp430f149开发板:
64元。
2、12864液晶屏:
56元。
3、vs1003音频解码芯片:
43元。
4、1GB大小的SD卡:
20元
5、SD卡插座:
6元。
整体系统的总价格:
179元。
整体价格在可以接受的范围内。
而且如果可以自己直接购买芯片并焊接电路板的话,就可以大幅度降低整体系统的价格。
3.概要设计
3.1对MSP430F149单片机的使用
MSP430F149单片机是由TI公司开发的一款高性能低功耗单片机。
实验中主要使用F149的CPU内核,SPI控制器,IO端口及TimerA定时器。
3.2SD卡及FAT32文件系统的读写
要想实现电子书阅读功能,就必须实现SD卡的读写,因为电子书及音乐数据都是以SD卡作为存储介质的。
为了使用SD卡,就必须实现SD卡的初始化功能,读扇区功能及写扇区功能。
同时,我们组在进行设计时,确定了使用FAT32文件系统作为SD卡上得文件系统。
FAT32文件系统是一种简单高效的文件系统,在实现SD卡读写扇区功能的基础上,我们需要基于FAT32文件系统的特性实现对FAT32文件系统的读写,这样才能获取SD卡上的文本文件及音乐文件数据。
3.3菜单显示
一个完整可用的电子书系统一定要有良好的菜单系统的支持。
我们组设计了两级菜单显示,其设计思想如下:
1、主菜单:
当进入系统时,会显示主菜单,其中包含电子书,音乐,游戏三个选项,用户选择这三个选项中的一个就可以进入下一级菜单。
2、目录菜单:
当在主菜单中选择电子书或音乐时,就会进入电子书或音乐的目录菜单。
在电子书目录菜单中,会列出当前SD卡中所存储的所有电子书的文件名,用户选择项阅读的文件即可进行阅读。
同样的,在音乐目录菜单中,会列出当前SD卡中所存储的所有音乐文件的文件名,用户选择项播放的音乐即可进行音乐播放。
3.4电子书显示
电子书显示功能是一个电子书阅读器的核心,它以12864液晶显示屏作为基础,从SD卡中读取文件并显示在屏幕上。
整个电子书的显示功能是为12864液晶屏量身设计的,它文本模式可以显示4行文字,每行显示8个汉字或16个英文字母。
为了取得良好的阅读体验,我们组设计了以下的功能:
1、向上向下翻页功能:
当人在阅读电子书时,如果翻来一页新的文字时,读者有可能会因暂时性忘记上一页最后一行的若干内容而造成对下一页起始内容的理解困难。
因此,我们决定在向下翻页时,仅会翻三行内容,也就是说,我们会以当前屏幕的最后一行,为新一页的第一行。
这样就可以保证阅读的流畅性。
同理,在向上翻页时,我们会以当前屏幕的第一行,为后一页的最后一行。
2、按比例跳转功能:
读者在读书的时候,有时会想直接跳转到这本书的后面去进行阅读。
这时候就需要一个按书内容的百分比进行跳转的功能。
本课设中实现了这个功能。
3、英文单词的人性化显示功能:
为了保证在阅读英文文章时的流畅性,我们必须保证每一个词都不会因为换行而被截断。
本课设就实现了这个功能,从而保证了阅读英文文章时的流畅性。
4、书签功能:
这个功能对电子书至关重要,因为读者几乎无法连续的读完一本书,当读者退出阅读时,他需要保存当前的阅读进度以便在下次方便的继续阅读。
这也是本课设中所实现的关键功能。
5、阅读时间的显示:
大家都知道,阅读时间过长对视力不好。
因此一个完善的电子书阅读器必须可以显示当前电子书的阅读时间,以使读者可以清楚的知道自己何时需要休息。
3.5音乐播放功能
在前面已经讨论过,一个成熟的电子书,一定要集成其他的附加功能才能提升整个系统的档次。
音乐播放功能就是非常重要的一个功能。
本课设中利用vs1003制作了一个mp3播放器,可以播放高品质的音乐。
并且实现了调整音量,暂停,快进快退,向前向后选择歌曲的功能。
这样,当阅读电子书感到疲劳时,就可以听听音乐放松一下心情。
3.6游戏功能
课设中利用12864的绘图模式制作了俄罗斯方块的游戏。
这样读者可以在阅读疲劳时玩玩俄罗斯方块来放松心情。
4.详细设计
4.1SD卡及其结构
SD卡SPI模式下与单片机的连接图:
SD卡支持两种总线方式:
SD方式与SPI方式。
其中SD方式采用6线制,使用CLK、CMD、DAT0~DAT3进行数据通信。
而SPI方式采用4线制,使用CS、CLK、DataIn、DataOut进行数据通信。
SD方式时的数据传输速度与SPI方式要快,采用单片机对SD卡进行读写时一般都采用SPI模式。
采用不同的初始化方式可以使SD卡工作于SD方式或SPI方式。
这里只对其SPI方式进行介绍。
1、SPI方式驱动SD卡的方法
SD卡的SPI通信接口使其可以通过SPI通道进行数据读写。
从应用的角度来看,采用SPI接口的好处在于,很多单片机内部自带SPI控制器,不光给开发上带来方便,同时也见降低了开发成本。
然而,它也有不好的地方,如失去了SD卡的性能优势,要解决这一问题,就要用SD方式,因为它提供更大的总线数据带宽。
SPI接口的选用是在上电初始时向其写入第一个命令时进行的。
以下介绍SD卡的驱动方法,只实现简单的扇区读写。
1)命令与数据传输
SD卡自身有完备的命令系统,以实现各项操作。
命令格式如下:
命令的传输过程采用发送应答机制,过程如下:
每一个命令都有自己命令应答格式。
在SPI模式中定义了三种应答格式,如下表所示:
字节
位
含义
1
7
开始位,始终为0
6
参数错误
5
地址错误
4
擦除序列错误
3
CRC错误
2
非法命令
擦除复位
闲置状态
溢出,CSD覆盖
擦除参数
写保护非法
卡ECC失败
卡控制器错误
未知错误
写保护擦除跳过,锁/解锁失败
锁卡
2~5
全部
操作条件寄存器,高位在前
2)初始化
SD卡的初始化是非常重要的,只有进行了正确的初始化,才能进行后面的各项操作。
在初始化过程中,SPI的时钟不能太快,否则会造初始化失败。
在初始化成功后,应尽量提高SPI的速率。
在刚开始要先发送至少74个时钟信号,这是必须的。
在很多读者的实验中,很多是因为疏忽了这一点,而使初始化不成功。
随后就是写入两个命令CMD0与CMD1,使SD卡进入SPI模式
初始化时序图:
在项目中,初始化SD卡的函数为:
unsignedcharInitMmc()。
3)扇区读
扇区读是对SD卡驱动的目的之一。
SD卡的每一个扇区中有512个字节,一次扇区读操作将把某一个扇区内的512个字节全部读出。
过程很简单,先写入命令,在得到相应的回应后,开始数据读取。
扇区读的时序:
在项目中,读SD卡扇区的函数由
ReadMmcSector(unsignedlonglba,unsignedintBytes,unsignedchar*buffer),调用
WriteMmcSectorAddress(unsignedlongsector)和MMC_get_data(unsignedintBytes,unsignedchar*buffer)实现。
其中ReadMmcSector输入的参数为SD卡的物理扇区号lba,要读出的字节数Bytes,以及读出后的数据所存放的数组的首地址buffer。
4)写扇区
扇区写是SD卡驱动的另一目的。
每次扇区写操作将向SD卡的某个扇区中写入512个字节。
过程与扇区读相似,只是数据的方向相反与写入命令不同而已。
扇区写的时序:
在项目中,写SD卡的函数为SD_write_sector(unsignedlongaddr,unsignedchar*Buffer)。
输入参数为SD卡的物理扇区号以及写入SD卡指定扇区中的内容的数组的首地址。
4.212864液晶屏结构及用法
4.2.112864液晶屏的硬件结构
12864是一种具有具有4位/8位并行,2线或3线串行多种接口方式。
在本课设中使用了8位并行方式与MSP430单片机进行链接。
该液晶屏内部含有国标一级,二级简体中文字库的点阵图形液晶显示模块,其显示分辨率为128x64。
其汉字的分辨率为16x16。
其ASCii字符的分辨率为16x8。
也就是说12864液晶屏总共可以显示四行字符,每一行可以显示8个汉字或16个英文字母。
其8位串行状态下引脚接口如下表所示:
4.2.212864内部的数据缓存
下面仅介绍课设中使用倒的两个数据缓存:
1、显示RAM(DDRAM)
显示RAM提供64x2字节的空间,最多可以显示4行每行8个汉字,或4行每行16个ASCii字符。
只要直接将汉字或ASCii的编码写入DDRAM中,屏幕中就会出现相应的文字。
屏幕上第一行到第四行所对应的DDRAM中的地址分别为0x80-0x87,0x90-0x97,0x88-0x8f,0x98-0x9f。
其中,每一个地址对应屏幕上分辨率为16x16的一个区域。
在其中可以显示两个ASCii字符,或一个汉字。
要将文字写入显存并显示在屏幕中指定的位置上,就必须先向12864芯片写入指定位置的地址,然后再连续的写入两字节的数据。
然后这两字节的数据所对应的文字就会显示在地址指定位置的16x16的点阵区域内。
因为汉字编码为两个字节,而ASCii编码为1一个字节。
所以屏幕上指定位置的16x16的点阵区域可以显示两个英文字符或一个汉字。
12864屏幕上的位置以及其在DDRAM中所对应的地址如下图所示。
注意,其中每一个位置均表示一个16x16的区域。
2、绘图RAM(GDRAM)
绘图RAM中每一位的值用来控制12864液晶屏上每一个像素点的亮灭。
值为1,对应的像素点就被点亮,值为0,对应的像素点就被熄灭。
在设定绘图RAM的值时,先写入垂直地址,再写入水平地址。
之后向绘图RAM里连续写入两字节的数据。
这样可以完成12864液晶屏上连续16个像素点控制。
绘图RAM的地址所控制的像素点在屏幕上的对应位置如下图所示:
4.2.312864液晶屏的指令
以下仅仅列出程序中所使用的指令:
4.2.412864液晶屏驱动函数
1、写数据函数:
voidLCD_write_data(unsignedchardata)
2、读数据函数:
unsignedcharLCD_read_data()
3、写命令函数:
voidLCD_write_com(unsignedcharcom)
4、文本显示模式初始化函数:
voidLCD_init(void)
其初始化过程为,先发送两次命令0x30,设置显示模式为基本指令集。
然后发送命令
0x0c,打开液晶屏屏幕显示。
最后发送命令0x01,清屏。
5、将一个长度为17的字符串显示在屏幕指定行的函数:
voidDisplayCgrom(ucharaddr,uchar
*hz)
6、绘图模式初始化函数:
voidGraph_Init(void)
初始化好绘图模式之后,就可以利用绘图模式来进行俄罗斯方块游戏。
7、点亮屏幕上指定位置像素的函数:
voidPut_Pixel(unsignedcharrow,unsignedchar
column)
该函数先将指定位置像素所在的GDRAM中的连续16个像素点的值读出来,改变需要改变的那个像素点的值,在将这16个像素点的值写回GDRAM的原位置中。
8、清楚屏幕上指定位置像素点的函数:
voidClear_Pixel(unsignedcharrow,unsignedchar
该函数的实现机制和上一个函数相同。
4.3FAT32文件系统
4.3.1FAT32文件系统结构简介
课设中选用了FAT32文件系统来存储文件。
下面简介FAT32文件系统
1)主引导扇区(MBR):
主引导扇区位于整个SD卡物理扇区的第0号扇区。
从中可以读取引导代码以及文件系统的起始位置。
在课设中,仅从MBR中读取整个SD卡大小以及文件系统的其实扇区位置。
2)隐藏扇区(HiddenSectors):
从MBR一直到文件系统的起始扇区之间的扇区被称为隐藏扇区。
3)保留扇区(ReservedSectors):
文件系统的起始扇区及其后的若干扇区被称为保留扇区。
保留扇区中的第一个扇区,也就是文件系统的起始扇区是整个SD卡中最重要的部分。
这个扇区又被称为DBR。
DBR记录了文件系统的基本信息,其中包括:
每扇区字节数,每簇扇区数,保留扇区数,FAT表个数,文件系统总扇区数,每个FAT表的扇区数,根目录的其实簇号(通常为2)及其他一些附加信息。
课设中,系统初始化时,就需要读取DBR扇区,并在内存中记录其中的信息。
4)FAT表:
位于保留扇区后的是FAT表区,它由两个完全相同的FAT表组成。
FAT表有两个重要的作用,分别是描述簇的分配状态以及表明文件或目录的下一簇的簇号。
在FAT表中,每个簇由4个字节的FAT表项来进行代表。
FAT表从第0号簇开始进行划分,每四个字节代表一个簇。
其中第0号簇和第1号通常情况下不使用。
如果某个簇未被分配使用,则它所对应的FAT表内的FAT表项值为0。
当某个簇已经被分配使用时,则它所对应的FAT表项内的FAT表项值也就是在该文件中,该簇的下一个簇的簇号。
若这个簇号为0x0fffffff,则表明当前簇为该文件的最后一个簇。
5)根目录:
FAT表后面就是数据区。
数据区的开始是整个文件系统的根目录。
它由目录项组成,用来记录每个文件的文件名,大小,起始簇号,类型,创建时间等信息。
6)目录项:
每个目录项占32个字节,其结构如下图所示:
7)长文件名目录项:
FAT32系统在为文件分配一个普通目录项时,还会为那些文件名长度超过8字节的文件分配长文件名目录项,长文件名目录项专门用来记录它所对应的文件的文件名。
长文件名目录项通常顺序排列在短文件名目录项的上面,其结构如下图所示:
4.3.2FAT32文件系统驱动函数
1、unsignedcharstrcmp(char*string1,char*string2)
这个函数主要是比较两个字符串是否是相同的,相同就返回1,不相同就返回0;
简单来说就是比较后缀的。
2、voidReadMBR()
这个函数主要是读出文件系统的起始扇区号
3、voidReadDBR()
DBR中保存的是文件系统的基本信息,每簇扇区数,隐藏扇区数(起始扇区数前面的那
些没有读的,)FAT表的个数,FAT表扇区数,保留扇区数等
4、voidReadSectorFromCluster(unsignedlongClusterNumber,unsignedcharSectorOffset)
这个函数作用的是找到扇区的位置,然后读出512字节
5、voidGetFileNumber(void)
这里面是包含这种文件,只要不是被删除的文件或者是长文件名(特征是他的第11字节是0X0F)则所找到的文件都会是filenumber+1,同时各种文件类型各自加1.。
同时比较文件名是不是convert,或者是dirtable,若果是convert,那么长文件名转码文件是存在的,置一,以长文件名显示;
若是dirtable,那么是存在书签的,则在下次读取文本信息的时候就会调用书签信息,实现书签功能。
7、unsignedlongGetAudioFile(unsignedlongAudioFileIndex)
8、unsignedlongGetTextFile(unsignedlongTextFileIndex)
这两个函数的原理是有些相同的,第一,先在根目录中找每一个目录项,如果说是音频文件且他的音频索引是audiofileindex,那么这就是要找到的音频文件。
同理第八个函数就是所要找到的文本文件。
对于第七个函数,首先,要记住来两个信息,1,记录当前目录项在整个根目录所有目录的偏置信息,2,记录当前目录项在整个音频文件目录项中的偏置位置。
然后返回当前音频文件的起始簇号。
对于第八个函数,只用记录当前目录项在真整个根目录所有目录项中的偏置信息,然后返回当前文本文件的起始簇号。
9、unsignedlongFindNextCluster(unsignedlongThisCluster)
10、unsignedlongFindPreviousCluster(unsignedlongThisCluster)
第九第十就是找一个文件中当前读的簇的下一个簇或是上一个簇,然后返回簇号
11、voidGetDirItem(unsignedlongDirItemIndex)
在根目录项中找到DIRitemindex这个目录项,将这32字节值保存在全局数组DIRitem[32]中。
这个函数主要是给78这两个函数调用用的,7,8用这个函数找到所需要的目录项
12、voidReadSectorFromFile(unsignedlongThisCluster,unsignedlongoffset)
Longoffset是扇区在整个文件的偏置根据这个偏置信息找到相应的扇区,读取相应的信息
13、voidWriteSectorToFile(unsignedlongThisCluster,unsignedlongoffset)
这个就是12函数的一个写操作。
。
15、voidInitFAT()
初试化FAT就是调用readMBR和readDBR这两个函数
4.5整机结构
课设的整机结构由MSP430F149开发板与12864液晶屏,VS1003解码芯片,SD卡及SD卡插座组成。
整机结构图如下所示:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件 课程设计 报告 简易 电子书