基于stm32的数码相框系统设计与实现软件_毕业设计论文(编辑修改稿)内容摘要:
的功能将更强大,这是传统的大规模半导体集成电路所无法比拟的。 低成本。 玻璃基板和塑料基板从根本上解决了大规模半导体集成电路的成本问题,为大规模半导体集成电路的应用开拓了广阔的应用空间。 工艺灵活。 除了采用溅射、 CVD(化学气相沉积) MCVD(分子化学气相沉积)等传统工艺成膜以外,激光退火技术也开始应用,既可以制作非晶膜、多晶膜,也可以制造单晶膜。 不仅可以制作硅膜,也可以制作 其他的Ⅱ Ⅵ族和Ⅲ Ⅴ族半导体薄膜。 应用领域广泛。 以 TFT 技术为基础的液晶平板显示器是信息社会的支柱产业,技术 可应用到正在迅速成长中的薄膜晶体管有机电致发光 (TFTOLED)平板显示器也在迅速的成长中。 TFT液晶显示屏亮度好、对比度高、层次感强、颜色鲜艳 ,其广泛应用于手机、 MP4等消费品。 因此,本系统选用 TFTLCD屏(如图 22所示)可显 26万色,分辨率 320*240,控制器为ILI9320,采用 16位的 80并口,配合触摸屏专用芯片 XPT2046,可对屏幕进行触摸操作,更显智能化和个性化。 为了方便用户使用,我们存储方式采用兼容 FAT 的文件系统,同时该文件系统也兼容FAT32等电脑主流的文件系统方式进行存储。 图 22 英寸 TFTLCD 模块 该模块的 80 并口有如下一些信号线: CS: TFTLCD片选信号。 WR:向 TFTLCD写入数据。 RD:从 TFTLCD读取数据。 D[15:0]: 16位双向数据线。 RST:硬复位 TFTLCD。 RS:命令 /数据标志( 0,读写命令; 1,读写数据)。 TFTLCD模块的 RST 信号线是直接接到 STM32 的复位脚上,并不由软件控制, 这样可以省下来一个 I/O 口。 另外我们还需要一个背光控制线来控制 TFTLCD的背光。 所以我们总共需要的 I/O 口数目为 21个。 模块的控制器为 ILI9320(可能为其他型号,但是他们的设置很相似,除了初始化序列有些区东南大学成贤学院毕业论文 8 别,其他大都是一摸一样的,这里仅以 9320为例介绍),该控制器自带显存,其显存总大小为 172820( 240*320*18/8),即 18位模式( 26万色)下的显存量。 模块的 16位数据线与显寸的对应关系为565方式,如下图所示: 图 23 16 位数据与显存对应关系图 最低 5位代表蓝色,中间 6位为 绿色,最高 5 位为红色。 数值越大,表示该颜色越深。 接下来介绍一下 ILI9320的几个重要命令,因为 ILI9320 的命令很多,这里不一一介绍。 这里我们要介绍的命令列表如下: 表 ILI9320 常用命令表 R0,这个命令,有两个功能,如果对它写,则最低位为 OSC,用于开启或关闭振荡器。 而如果对它读操作,则返回的是控制器的型号。 这个命令最大的功能就是通过读它可以得到控器的型号,而我们代码在知道了控制器的型号之后,可以针对不同型号的控制器,进行不同的初始化。 因为 93xx 系列的初始化,其实都比较类似,我 们完全可以用一个代码兼容好几个控制器。 R3,入口模式命令。 我们重点关注的是 I/D0、 I/D AM 这 3 个位,因为这 3 个位控制了屏幕的显示方向。 AM:控制 GRAM更新方向。 当 AM=0的时候,地址以行方向更新。 当 AM=1的时候,地址以列方向更新。 I/D[1:0]:当更新了一个数据之后,根据这两个位的设置来控制地址计数器自动增加 /减少 1,其关系如下图: 东南大学成贤学院毕业论文 9 图 24 GRAM 显示方向设置图 通过这几个位的设置,我们就可以控制屏幕的显示方向了。 R7,显示控制命令。 该命令 CL位用来控制是 8位彩色,还 是 26万色。 为 0时 26万色,为 1时八位色。 D D0、 BASEE这三个位用来控制显示开关与否的。 当全部设置为 1的时候开启显示,全 0是关闭。 我们一般通过该命令的设置来开启或关闭显示器,以降低功耗。 R32, R33,设置 GRAM的行地址和列地址。 R32用于设置列地址( X 坐标, 0~239), R33用于设置行地址( Y坐标, 0~319)。 当我们要在某个指定点写入一个颜色的时候,先通过这两个命令设置到改点,然后写入颜色值就可以了。 R34,写数据到 GRAM 命令,当写入了这个命令之后,地址计数器才会自动的增加和减少。 该 命令是我们要介绍的这一组命令里面唯一的单个操作的命令,只需要写入该值就可以了,其他的都是要先写入命令编号,然后写入操作数。 R80~R83,行列 GRAM 地址位置设置。 这几个命令用于设定 显示区域的大小,我们整个屏的大小为 240*320,但是有时候我们只需要在其中的一部分区域写入数据,如果用先写坐标,后写数据这样的方式来实现,则速度大打折扣。 此时我们就可以通过这几个命令,在其中开辟一个区域,然后不停的丢数据,地址计数器就会根据 R3 的设置自动增加 /减少,这样就不需要频繁的写地址了,大大提高了刷新的速度。 通过以 上介绍,我们可以得出 TFTLCD显示需要的相关设置步骤如下: 1)设置 STM32与 TFTLCD模块相连接的 I/O。 这一步,先将我们与 TFTLCD模块相连的 I/O 口设置为输出,具体使用哪些 I/O口,这里需要根据连接电路以及 TFTLCD模块的设置来确定。 2)初始化 TFTLCD模块。 通过向 TFTLCD写入一系列的设置,来启动 TFTLCD的显示。 为后续显示字符和数字做准备。 3)通过函数将字符和数字显示到 TFTLCD模块上。 这里就是通过我们设计的程序,将要显示的字符送到 TFTLCD 模块就可 以了,这些函数将在软件设计部分向大家介绍。 通过以上三步,我们就可以使用 TFTLCD 模块来显示字符和数字了,并且可以显示各种颜色的背景。 SD 存储卡模块 SD卡( Secure Digital Memory Card)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地应用于便携式装置上,例如数码相机、个人数码助理 (PDA)和多媒体东南大学成贤学院毕业论文 10 播放器等。 SD 卡由日本松下、东芝及美国 SanDisk 公司于 1999 年 8 月共同开发研制。 大小犹如一张邮票的 SD记忆卡,重量只有 2克,但却拥有高记忆 容量、快速数据传输率、极大的移动灵活性以及很好的安全性,此外它可存多种格式数据文件,具有很强的可扩展性;用户可方便使用 SD卡读卡器对其进行用户信息修改。 2G金士顿 SD 卡实物如下图 25所示。 SD卡一般支持两种操作模式: SD卡模式与 SPI模式。 主机可以选择以上任意一种模式同 SD卡通信, SD卡模式允许 4线的高速数据传输。 SPI模式允许简单的通过 SPI接口来和 SD卡通信,这种模式同 SD卡模式相比就是丧失了速度。 SD卡的引脚排序如下图 26所示: 图 25 Kingston SD 卡 图 26 SD 卡引脚排序图 SD 卡引脚功能描述如下表所示: 表 SD 卡引脚功能表 SD卡只能使用 I/O电平,所以, MCU一定要能够支持 I/O端口输出。 在 SPI 模式下, CS/MOSI/MISO/CLK都需要加 10~100K左右的上拉电阻。 SD卡要进入 SPI模式很简单,就是在SD 卡收到复位命令( CMD0)时, CS 为有效电平(低电平)则 SPI模式被启用。 不过在发送 CMD0 之前,要发送 74 个时钟,这是因为 SD 卡内部有个供电电压上升时间,大概为 64 个 CLK,剩下的 10个 CLK用于 SD卡同步 ,之后才能开始 CMD0的操作,在卡初始化的时候, CLK时钟最大不能超过 400KHZ。 本次硬件电路板使用的是 SPI 模式来读写 SD卡,下面我们就重点介绍一下 SD 卡在 SPI 模式下的相关操作。 SPI模式下几个重要的操作命令,如下表所示: 表 SPI 模式下 SD 卡部分操作指令 其中 R1 的回应格式如下表所示: 东南大学成贤学院毕业论文 11 表 SD 卡 R1 回应格式 SD卡的典型初始化过程如下: 初始化与 SD卡连接的硬件条件( MCU的 SPI配置, I/O口配置); 上电延时( 74个 CLK); 复位卡( CMD0); 激活卡,内部初始化并获取卡类型( CMD1(用于 MMC卡)、 CMD5 CMD41); 查询 OCR,获取供电状况( CMD58); 是否使用 CRC( CMD59); 设置读写块数据长度( CMD16); 读取 CSD,获取存储卡的其他信息( CMD9); 发送 8CLK后,禁止片选; 这样我们就完成了对 SD卡的初始化,这里面我们一般设置读写块数据长度为 512个字节,并禁止使用 CRC。 在完成了初始化之后,就可以开始读写数据了。 SD 卡读取数据,这里通过 CMD17来实现,具体过程如下 : 发送 CMD17; 接收卡响应 R1; 接收数据起始令牌 0XFE; 接收数据; 接收 2 个字节的 CRC,如果没有开启 CRC,这两个字节在读取后可以丢掉 ; 8CLK 之后禁止片选; 以上就是一个典型的读取 SD 卡数据过程, SD 卡的写与读数据差不多,写数据通过 CMD24 来实现,具体过程如下: 发送 CMD24; 接收卡响应 R1; 发送写数据起始令牌 0XFE; 发送数据; 发送 2字节的伪 CRC; 8CLK之后禁止片选; 东南大学成贤学院毕业论文 12 第三章 编程环境介绍 简介 RVMDK源自德国的 KEIL公司,是 RealView MDK的简称,在全球 RVMDK被超过 10万的嵌入式开发工程师使用。 RealView MDK集成了业内最领先的技术,包括 181。 Vision3集成开发环境与 RealView编译器。 支持 ARM ARM9和最新的 CortexM3核处理器,自动配置启动代码,集成 Flash烧写模块,强大的 Simulation设备模拟,性能分析等功能。 与 ARM之前的工具包 , RealView编译器具有代码更小、性能更高的优点。 RealView编译器与 :代码密度方面比 译的代码尺寸小 10%;代码性能方面比 20%。 现在 RealView的最新版本是 , RVMDK对 IDE界面进行了很大改变,并且支持 CortexM0内核的处理器。 虽然 ,支持的器件也多了,但编译效率没有 ,尤其是编译后的代码执行速度( FFT运算), O2优化才能和。 另外,国内大多数单片机工程师都接触和使用过 KEIL,相信大家都知道 KEIL的使用是非常简单的,而且很容易入手。 基于以上几点,此次选择 来对软件进行编译。 新建 RVMDK 工程 首先,打开 MDK(以下简称 RVMDK 为 MDK)软件 , 再点击 ProjectNew uVision Project菜单项,则弹出如图 31所示界面 : 图 31 保存工程界面 新建一个文件夹 TEST,然后把工程名字设为 test, 点击“保存”按 钮,弹出选择器件的对话框,因为我们的开发板使用的是 STM32F103RBT6,所以在这里我们选择 STMicroelectronics下面的STM32F103RB(如果使用的是其他系列的芯片,选择相应的型号就可以了 )。 如图 32所示 : 东南大学成贤学院毕业论文 13 图 32 器件选择界面 点击 OK, MDK 会弹出一个对话框,问你是否加载启动代码到当前工程下面,这里我们选择是。 如图 33所示 : 图 33 提示界面 启动代码是一段和硬件相关的汇编代码 , 是必不可少的 !这段代码的具体作用如下:①堆栈的初始化;②向量表定义;③地址重映射及中 断向量表的转移;④设置系统时钟频率;⑤中断寄存器的初始化。 在上面点击了是以后, MDK就把启动代码。 到这里,我们就可以开始编写自己的代码了。 由于上面我们还没有任何代码在工程里面,我们在 TEST 目录下新建一个新文件夹 USER,这里我们把系统代码 复制 过来 (整个 SYSTEM 文件夹,这些代码在任何 STM32F103的芯片上都是通用的,可以用于快速构建自己的工程,后面会有详细介绍 )。 之后, TEST文件夹下的文件如图 34所示 : 东南大学成贤学院毕业论文 14 图 34 TEST 文件夹最终摸样 然后我 们在 USER 文件夹下面找到 ,打开它 , 然后在 Target 目录树上右键 Manage Components。 如图 35所示 : 图 35 调出 Manage Components 在进入 Manage Components界面之后,弹出如下对话框 : 东南大学成贤学院毕业论文 15 图 36 Components 选项卡 在上面对话框的中间栏,点新建 (用红圈标出。基于stm32的数码相框系统设计与实现软件_毕业设计论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。