资源描述
课程设计说明书课程设计说明书 设计题目: 基于STM32的智能万年历 专 业: 电气工程及其自动化 班 级: 2013-3 设 计 人: 山 东 科 技 大 学 2016 年 7 月 8 日 课程设计任务书课程设计任务书 学院 电气信息系 专业 电气工程及其自动化 班级 2013-3 姓名 一、课程设计题目: 基于 STM32 的智能万年历 专题名称:最小应用系统 二、课程设计主要参考资料 (1) 刘火良,杨森.STM32 库开发实战指南M.北京:机械工业出版社.2013.5 (2) ADS7943 中文参考资料M/CD. (3) ILI9320 控制器中文参考资料M/CD. 三、课程设计应解决主要问题 (1)最小应用系统:包括 MCU、复位、启动、晶振、电源等。 (2)日历的显示和设置; (3)万年历的算法和实现; (4)定时闹钟功能; (5)无线设置功能。 四、课程设计相关附件(如:图纸、软件等) (1)软件:Keil Vision4 (2)开发平台:神州号 STM32 嵌入式技术开发板 五、任务发出日期: 2016.6.27 课程设计完成日期: 2016.7.8 指导教师签字: 系主任签字: 指导教师对课程设计的评语指导教师对课程设计的评语 指导教师(签章): 日期: 山东科技大学学生课程设计山东科技大学学生课程设计 IV 摘要摘要 单片机应用技术飞速发展,从导弹的导航装置,到飞机上各种仪表的 控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数 据处理,以及生活中广泛使用的各种智能IC卡、电子宠物等,从大到国家防 卫,小到日常生活,方方面面都离不开单片机。单片机是集CPU,RAM,ROM, 定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广 泛应用于智能产业和工业自动化上。 二十一世纪的今天科技与经济迅速发展,人们的生活节奏变得越来越 快,生活水平越来越高,对于生活的品味和质量的要求也更高。人们不再满 足于只能提供简单计时功能的时钟,希望在能保证计时精确的基础上能多添 加一些其他功能,诸如日历、定时等。 本文主要介绍了以STM32F103VCT6开发板为核心部件来设计的一款万年 历,以其内部的RTC时钟模块作为时钟,用TFTLCD液晶显示器作为显示模块, 时钟电路能准确提供24小时制时间、平年闰年的判断以及定时。采用Keil uVision4进行编写调试程序,以神州二号嵌入式技术开发板为硬件平台进行 设计,最终实现在显示屏上显示时间、日期、以及进行定时等功能。 以基于 STM32 的智能万年历作为设计的课题,因为它有很好的开放性 和可发挥性,不仅考察了对单片机的掌握能力而且强调了对单片机扩展的应 用。另外液晶显示的万年历已经越来越流行,特别适合在家庭居室、办公室、 大厅、会议室、车站和广场等地方使用,它具有显示清晰直观、走时准确、 可以进行夜视等功能,并且还可以扩展出其它多种功能。所以,电子万年历 作为设计课题很有价值。 经过两周的课程设计,我们完成了按键和触摸两种方式对万年历的控制, 实现了基本的万年历功能和闹钟功能。本次课程设计让我对万年历有了深刻 理解,更让我对 stm32 有了更进一步的学习。 关键词:STM32F103VCT6;最小应用系统;万年历 山东科技大学学生课程设计山东科技大学学生课程设计 V 目录 1.1.课程设计任务课程设计任务 .1 1 1.1 课程设计目的 .1 1.2 设计要求 .1 1.3 技术要求 .1 1.4 解决的主要问题 .2 1.5 两周时间安排 .2 2 2 总体方案设计总体方案设计 .3 3 2.1 整体方案设计 .3 2.2 模块工作原理 .3 2.2.1 最小应用系统模块.3 2.2.2 基础配置模块.3 2.2.3 时间运行模块.3 2.2.4 触摸屏显示模块.4 2.2.5 触摸屏触摸模块.4 2.2.6 闹钟设置模块.4 2.3 硬件模块简介 .4 2.3.1 最小应用系统.5 2.3.2 TFTLCD 显示屏 .5 3 3 硬件设计硬件设计 .6 6 3.1 STM32 硬件系统原理图.6 3.1.1 MCU.6 3.1.2 复位电路.7 3.1.3 启动电路.8 3.1.4 晶振电路.8 3.1.5 电源电路.9 3.1.6 蜂鸣器电路.10 3.2 触摸屏模块电路设计 .11 3.2.1 TFTLCD 简介 .11 3.2.2 显示设置.12 3.2.3 触摸设置 .13 3.2.4 驱动设置.13 3.3 硬件系统模块电路 .13 3.3.1 专题硬件选型依据及简介 .13 3.3.2 专题主芯片的内部逻辑结构.14 3.3.3 外部管脚特性.15 3.3.4 与 MCU 的硬件接口连接 .16 4 4 软件设计软件设计 .1919 4.1 万年历定时设计思路 .19 4.2 主程序模块 .19 山东科技大学学生课程设计山东科技大学学生课程设计 VI 4.3 TFT-LCD 触摸屏模块.20 4.4 专题设计 .20 4.4.1.针对专题的信息传输.20 4.4.2.芯片的工作方式.21 4.4.3.时序图.22 4.4.4.流程图.23 5 5 调试与结果调试与结果 .2424 5.1 测试任务 .24 5.2 测试目的目标 .24 5.3 测试软硬件环境 .25 5.4 测试的过程及其步骤 .25 5.5 测试结果 .25 6 6 总结总结 .2727 7 7 致谢致谢 .2828 参考文献参考文献 .2929 山东科技大学学生课程设计山东科技大学学生课程设计 1 1.1.课程设计任务课程设计任务 1.11.1 课程设计目的课程设计目的 (1) 学习万年历的原理,学会定时器、触摸屏在万年历中的应用。 (2) 通过万年历的制作使学生熟练掌握所学的相关知识内容,并培养学生工 程设计的一般方法和技巧。 1.21.2 设计要求:设计要求: 独立思考、共同合作、保质保量、按时完成。 1.31.3 技术要求:技术要求: (1) 系统组成 系统选用STM32F103单片机为微处理器,使用开发板上具有的 按键、指示灯、触摸屏和串口等实现万年历的功能。 (2) 实现功能: 1) 日历、时间的调整,通过按键切换实现对年月日时分秒的调整控制, 可以设置每一部分的初始值。 2) 具备闰年的自动调整功能 3) 具有定时闹钟功能:通过按键/触摸屏设置定时时间。定时时间到,蜂 鸣器发出鸣叫声,维持5S。 4) 上位机功能:可以把单片机的时间数据通过串口或者USB传送至上位机。 5) 无线设置功能:通过远程设置万年历。 (3) 模块组成: STM32 单片机最小应用系统;设置显示模块;闹钟模块;时间运行模块 等; 山东科技大学学生课程设计山东科技大学学生课程设计 2 1.41.4 解决的主要问题:解决的主要问题: (1) 最小应用系统设计:设计 STM32 的最小应用系统,包括 MCU、复位、 启动、晶振、电源等。 (2) 日历的显示和设置; (3) 万年历的算法和实现; (4) 定时闹钟功能; (5) 无线设置功能。 1.51.5 两周时间安排两周时间安排 (1)第一周: 星期一:布置设计任务,收集相关资料。 星期二:确定设计方案 星期三:软、硬件的总体设计 星期四、五、六、日:上机调试 (2)第二周 星期一、二、三:上机调试 星期四:完成设计报告。 星期五:17:00 之前上交课程设计报告。 山东科技大学学生课程设计山东科技大学学生课程设计 3 2 2 总体方案设计总体方案设计 2.12.1 整体方案设计整体方案设计 MCU 启动蜂鸣器 电源LCD显示屏复位 晶振 实时时钟 2.22.2 模块工作原理模块工作原理 2.2.1 最小应用系统模块最小应用系统模块 最小应用系统包括 MCU 和电源、复位、晶振、启动等,该系统可以接收 数据传给上位机,通过上位机将数据传输到显示屏上显示数据,也可以通过 改变数据让其调整显示屏上的数据。另外它能使蜂鸣器发声。 2.2.2 基础配置模块基础配置模块 基础配置模块实现对 SysClock、RCC、GPIO、EXTI、NVIC、Timer、USART 等功能模块进行基础配置,设置其输入输出方式、速度及其它专属配置,并 使能需要的管脚及外设,设置中断。 2.2.3 时间运行模块时间运行模块 时间运行模块是用来对时间运行的算法进行编程,通过算法编程实现对年、 月、日、时、分、秒的处理,实现秒满 60 清零并进 1,分满 60 清零并进 1, 时满 24 清零并进 1,日满 28 或 29 或 30 或 31 清零并进 1,月满 12 清零并进 山东科技大学学生课程设计山东科技大学学生课程设计 4 1 的功能。 2.2.4 触摸屏显示模块触摸屏显示模块 触摸屏显示模块使用 TFT-LCD 即薄膜晶体管液晶显示器,使用 TFTLCD 模块 驱动芯片中的 ILI9320 芯片,实现触摸屏的显示。TFT-LCD 与无源 TN- LCD、STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个像素上都设置有一 个薄膜晶体管 (TFT),可以有效地克服非选通时的串扰,使显示液晶屏的 静态特性与扫描线数无关,因此大大提高了图像质量。 TFT-LCD 也被叫做真 彩液晶显示器。 2.2.5 触摸屏触摸模块触摸屏触摸模块 触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,当手指触 摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在 X 和 Y 两个方向上产生信号,然后送到触摸屏控制器。控制器侦测到这一接触并计 算出 X,Y 的位置,再根据获得的位置模拟鼠标的方式运行。 2.2.6 闹钟设置模块闹钟设置模块 定时闹钟模块是利用 Timer 函数进行操作,通过设置闹钟时间,倒计时使 其到达指定时间触发蜂鸣器,从而实现闹钟提示的功能。 2.32.3 硬件硬件模块简介模块简介 在智能万年历项目中,我们采用的硬件主要是基于 STM32F103VCT6 的神 州二号开发板,它的主要性能如下表所示: 山东科技大学学生课程设计山东科技大学学生课程设计 5 2.3.1 最小应用系统最小应用系统 最小应用系统是完成此项目所有功能的基础,它主要包含 MCU 和电源、 复位、晶振、启动等,我们通过程序使能这些硬件,让它完成相应的功能。 MCU:微控制单元,是把中央处理器的频率与规格做适当缩减,并将内存、 计数器、USB、A/D 转换、UART、PLC、DMA 等周边接口, LCD 驱动电 路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组 合控制。 复位电路:就是利用它把电路恢复到起始状态。就像计算器的清零按钮的 作用一样,以便回到原始状态,重新进行计算。和计算器清零按钮有所不同 的是,复位电路启动的手段有所不同。 晶振电路:驱动整个系统中的各个时钟进行工作。 启动电路:启动整个系统。 电源:给整个系统供电。 2.3.2 TFTLCD 显示屏显示屏 TFT(Thin Film Transistor)即薄膜场效应晶体管。所谓薄膜晶体管,是指 液晶显示器上的每一液晶像素点都是由集成在其后的薄膜晶体管来驱动。从 而可以做到高速度、高亮度、高对比度显示屏幕信息。 山东科技大学学生课程设计山东科技大学学生课程设计 6 3 3 硬件设计硬件设计 3.13.1 stm32stm32 硬件硬件系统原理图系统原理图 我们组选用神州二号开发板来完成我们的任务目标,它是基于 STM32F103VCT6 开发的, 面向企业和广大爱好者,开发板功能强大,外围资源丰富,例程丰富,如下图所示: 此章主要介绍最小应用系统(MCU、复位、启动、晶振、电源等)和此设计相关硬件。 3.1.1 MCU 神州二号 STM32 开发板选择的是 STM32F103VCT6 作为 MCU,该芯片是 STM32F103 系列里面配置非常强大的了,它拥有的资源包括:48KB RAM、256KB FLASH、2 个基 本定时器、4 个通用定时器、2 个高级定时器、3 个 SPI、2 个 IIC、5 个串口、1 个 USB、1 个 CAN、3 个 ADC、1 个 DAC、1 个 SDIO 接口、以及 80 个通用 IO 口。神州 二号开发板选用的是外设资源和管脚资源最丰富的 100 脚 LQFP 封装的 STM32F103VCT6 芯片,充分满足企业和广大爱好者的评估开发需求。所以我们选择了 它作为我们的主芯片。 山东科技大学学生课程设计山东科技大学学生课程设计 7 MCU 部分原理图如下图所示 3.1.2 复位电路复位电路 图中所示是开发板板载的复位按键(RESET),用于复位 STM32,还具有复位液晶 显示屏的功能,因为液晶模块的复位引脚和 STM32 的复位引脚是连接在一起的,当按 下该键的时候,STM32 和液晶一并被复位。因为 STM32 是低电平复位的,所以我们设 计的电路也是低电平复位的,这里的 R 和 C 构成了上电复位电路。同时,开发板把 TFT_LCD 的复位引脚也接在 RESET 上,这样这个复位按钮不仅可以用来复位 MCU, 还可以复位 LCD。 山东科技大学学生课程设计山东科技大学学生课程设计 8 3.1.3 启动电路启动电路 在 STM32F103VCT6 里,可以通过 BOOT1:0引脚选择三种不同启动模式。 启动模式如下: 在系统复位后,SYSCLK 的第 4 个上升沿,BOOT 引脚的值将被锁存。用户可以通过设 置 BOOT1 和 BOOT0 引脚的状态,来选择在复位后的启动模式。 在从待机模式退出时,BOOT 引脚的值将被被重新锁存,因此,在待机模式下 BOOT 引 脚应保持为需要的启动配置。在启动延迟之后,CPU 从地址 0 x0000 0000 获取堆栈顶的 地址,并从启动存储器的 0 x0000 0004 指示的地址开始执行代码。 因为固定的存储器映像,代码区始终从地址 0 x0000 0000 开始(通过 ICode 和 DCode 总线访问),而数据区(SRAM)始终从地址 0 x2000 0000 开始(通过系统总线访问)。 Cortex-M3 的 CPU 始终从 ICode 总线获取复位向量,即启动仅适合于从代码区开始(典型 地从 Flash 启动)。STM32F103VCT6 微控制器实现了一个特殊的机制,系统可以不仅 仅从 Flash 存储器或系统存储器启动,还可以从内置 SRAM 启动。 3.1.4 晶振电路晶振电路 STM32F103 内部已经包含了 8MHz 高速内部 RC 震荡电路,但是其精度不是很高,为此, 我们在外部增加了 25MHz 的晶振电路,为系统的可靠动作提供时序基准。 STM32F103 内部已经包含了 40KHZ 低速内部 RC 震荡电路 LSE,但是其精度不是很高, 为此我们在外设部分增加了 32.768KHZ 的晶振电路,可以用于驱动独立看门狗和通过程 序选择驱动 RTC 实时时钟。 晶振电路图如下: 山东科技大学学生课程设计山东科技大学学生课程设计 9 3.1.5 电源电路电源电路 VDDA 与 VREF 是 STM32 处理器数字|模拟转换(ADC)电路需要使用到的模拟参考电 源和模拟电源输入。 其相关管脚定义如下: 在神州二号开发板上,VREF 和 VDDA 电源相关电路如下图所示,为保障其稳定性需 要隔离并增强独立的滤波储能电容。 3.1.6 蜂鸣器电路蜂鸣器电路 神州二号 STM32 开发板板载了一个有源蜂鸣器,其原理图如图所示: 山东科技大学学生课程设计山东科技大学学生课程设计 10 有源蜂鸣器是指自带了震荡电路的蜂鸣器,这种蜂鸣器一接上电就会自己震荡发声。而 如果是无源蜂鸣器,则需要外加一定频率(25KHz)的驱动信号才会发声。这里我们选择 使用有源蜂鸣器,方便大家使用。 图中 Q1 是用来扩流,R60 则是一个下拉电阻,避免 MCU 复位的时候,蜂鸣器可能 发声的现象。BEEP 信号直接连接在 MCU 的 PB8 上面,PB8 可以做 PWM 输出,所以 大家如果想玩高级点(如:控制蜂鸣器“唱歌”),就可以使用 PWM 来控制蜂鸣器。 3.1.7 实时时钟电路实时时钟电路 神州二号开发的 STM32 处理器内部带有 RTC 实时时钟,使用我们的代码可以实现年 月日时分秒及星期等计算与输出功能。 内部的 RTC 实时时钟在系统正常运行时使用系统的 3.3V 电源,而在系统断电时则电 池供电保证时间信息持续不丢失。其供电 VBAT 采用 CR1220 纽扣电池,相关电路如下: 山东科技大学学生课程设计山东科技大学学生课程设计 11 3.23.2 触摸屏模块电路设计触摸屏模块电路设计 3.2.1 TFTLCD 简介简介 TFT-LCD 即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。TFT-LCD 与无源 TN-LCD、STN-LCD 的简单矩阵不同,它在液晶显示屏的每一 个像素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏 的静态特性与扫描线数无关,因此大大提高了图像质量。TFT-LCD 也被叫做真彩液晶显 示器。 模块原理图如下图所示: 其中 CS:TFTLCD 片选信号。 WR:向 TFTLCD 写入数据。 RD:从 TFTLCD 读取数据。 D15:0:16 位双向数据线。 RST:硬复位 TFTLCD。 RS:命令/数据标志(0,读写命令;1,读写数据)。 需要说明的是,TFTLCD 模块的 RST 信号线是直接接到 STM32 的复位脚上,并不由软 件控制,这样可以省下来一个 IO 口。另外我们还需要一个背光控制线来控制 TFTLCD 的背光。所以,我们总共需要的 IO 口数目为 21 个。 3.2.2 显示设置显示设置 神州二号开发板提供的 TFTLCD 模块,其驱动芯片有很多种类型,我们这里用 ILI9320 控制器。 ILI9320 液晶控制器自带显存,其显存总大小为 172820(240*320*18/8),即 18 位模 山东科技大学学生课程设计山东科技大学学生课程设计 12 式(26 万色)下的显存量。模块的 16 位数据线与显存的对应关系为 565 方式,如图所 示: 最低 5 位代表蓝色,中间 6 位为绿色,最高 5 位为红色。数值越大,表示该颜色越深。 下表是 ILI9320 的几个重要命令: 其中,R32,R33 是设置 GRAM 的行地址和列地址。R32 用于设置列地址(X 坐标, 0239),R33 用于设置行地址(Y 坐标,0319)。当我们要在某个指定点写入一个颜 色的时候,先通过这两个命令设置到该点,然后写入颜色值就可以了。 3.2.3 触摸触摸设置设置 对触摸屏的控制有专用的控制芯片。触摸屏的控制芯片主要完成两个任务:一是完成电 极电压的切换,二是采集接触点处的电压值并实现 A/D 转换。 触摸屏控制芯片主要由触摸检测部件和触摸屏控制器组成。触摸检测部件安装在显示 器屏幕前面,用于检测用户触摸位置,接受位置信号后送至触摸屏控制器;而触摸屏控制 器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标,再送给 MPU,同时它能接收 MPU 发来的命令并加以执行。 3.2.4 驱动设置驱动设置 TFTLCD 显示需要的相关设置步骤如下: 1)设置 STM32 与 TFTLCD 模块相连接的 IO。 这一步,我们先将与 TFTLCD 模块相连的 IO 口进行初始化,以便驱动 LCD。这里我们用 到的是 FSMC。 2)初始化 TFTLCD 模块。 通过向 TFTLCD 写入一系列的设置,来启动 TFTLCD 的显示。为后续显示字符和数字做 准备。 3)通过函数将字符和数字显示到 TFTLCD 模块上。 山东科技大学学生课程设计山东科技大学学生课程设计 13 3.33.3 硬件系统硬件系统模块电路模块电路 3.3.1 专题硬件选型依据及简介专题硬件选型依据及简介 神州二号开发板是基于 STM32F103VCT6 开发的,其内部的资源主要有:48KB RAM、256KB FLASH、2 个基本定时器、4 个通用定时器、2 个高级定时器、3 个 SPI、2 个 IIC、5 个串口、1 个 USB、1 个 CAN、3 个 ADC、1 个 DAC、1 个 SDIO 接 口、以及 80 个通用 IO 口。神州二号开发板的特点有:供电灵活、下载方便、外观大气、 设计灵活、资源丰富、调试方便、触摸彩屏等。神州二号开发板选用的是外设资源和管 脚资源最丰富的 100 脚 LQFP 封装的 STM32F103VCT6 芯片,充分满足企业和广大爱好 者的评估开发需求。同时也符合我们这次课程设计的要求,所以我们选择了它作为我们 的主芯片。 3.3.2 专题主芯片的内部逻辑结构专题主芯片的内部逻辑结构 STM32F103VCT6 的主系统由以下部分构成: 四个驱动单元: CortexM3 内核 DCode 总线(D-bus),和系统总线(S-bus) 通用 DMA1 和通用 DMA2 四个被动单元 内部 SRAM 内部闪存存储器 FSMC AHB 到 APB 的桥(AHB2APBx),它连接所有的 APB 设备,这些都是通过一个多级 的 AHB 总线构架相互连接的,如下图所示: 山东科技大学学生课程设计山东科技大学学生课程设计 14 ICode 总线 该总线将 CortexM3 内核的指令总线与闪存指令接口相连接。指令预取在此总线上完成。 DCode 总线 该总线将 CortexM3 内核的 DCode 总线与闪存存储器的数据接口相连接(常量加载和调 试访问)。 系统总线系统总线 此总线连接 CortexM3 内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和 DMA 间的访问。 DMA 总线 此总线将 DMA 的 AHB 主控接口与总线矩阵相联,总线矩阵协调着 CPU 的 DCode 和 DMA 到 SRAM、闪存和外设的访问。 总线矩阵总线矩阵 总线矩阵协调内核系统总线和 DMA 主控总线之间的访问仲裁,仲裁利用轮换算法。包 含 4 个驱动部件(CPU 的 DCode、系统总线、DMA1 总线和 DMA2 总线)和 4 个被动部 件(闪存存储器接口(FLITF)、SRAM、FSMC 和 AHB2APB 桥)。 AHB 外设通过总线矩 阵与系统总线相连,允许 DMA 访问。 AHB/APB 桥(APB) 两个 AHB/APB 桥在 AHB 和 2 个 APB 总线间提供同步连接。APB1 操作速度限于 36MHz,APB2 操作于全速(最高 72MHz)。 山东科技大学学生课程设计山东科技大学学生课程设计 15 3.3.3 外部管脚特性外部管脚特性 STM32F103VCT6 使用 LQFP100 封装,其外部管脚图如下: 其外部管脚应用于本实验主要有以下几个体现: (1)触摸 TFT 彩屏接口:PF8、PF10、PB2、PF9 和 PB1。 (2)蜂鸣器电路:PB8。 (3)复位电路:RC 加按键实现手动复位和上电复位。 (4)按键输入:神州二号开发板共有 8 个功能按键,分别是 WAKEUP 按键(PD0)和 TAMPER 按键(PD1)及上(PD3)下(PD4)左(PA8)右(PC13)确定和一个用于自定义功能的按 键(PD2)。 (5)RTC 实时时钟电路:RTC 时钟在系统正常运行时使用系统的 3.3V 电源,而在系统 断电时则用电池供电保证正常工作。 (6)电源电路:供电方式主要有三种,分别是 USB 接口供电,最大 500mA;外部直流 DC5V 供电;JLINK V8 供电,包括 5V 或 3.3V。 3.3.4 与与 MCU 的硬件接口连接的硬件接口连接 蜂鸣器蜂鸣器 蜂鸣器在硬件上是直接连接好了的,不需要经过任何设置,直接编写代码就可以了。蜂 鸣器的驱动信号连接在 STM32 的 PB8 上。 山东科技大学学生课程设计山东科技大学学生课程设计 16 蜂鸣器与 STM32 连接图 图中我们用到一个 NPN 三极管(S8050)来驱动蜂鸣器,R60 主要用于防止蜂鸣器的误 发声。当 PB8 输出高电平的时候,蜂鸣器将发声,当 PB8 输出低电平的时候,蜂鸣器 停止发声。 触摸屏触摸屏 神州二号开发板自带的触摸屏属于电阻式触摸屏,电阻屏的特点有: 1)是一种对外界完全隔离的工作环境,不怕灰尘、水汽和油污。 2)可以用任何物体来触摸,可以用来写字画画,这是它们比较大的优势。 3)电阻触摸屏的精度只取决于 A/D 转换的精度,因此都能轻松达到 4096*4096。 TFTLCD 模块的触摸屏总共有 5 跟线与 STM32 连接,连接电路图如下图所示: 从图中可以看出,T_MISO、T_PEN、T_CS、T_MOSI 和 T_SCK 分别连接在 STM32 的 PF8、PF10、PB2、PF9 和 PB1 上。 山东科技大学学生课程设计山东科技大学学生课程设计 17 显示屏显示屏 TFT-LCD 的液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT),可有效地克 服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,大大提高了图像质量。 它的管脚图如下: 从上图可以看出,TFTLCD 模块采用 16 位的并行方式与外部连接,之所以不采用 8 位 的方式,是因为彩屏的数据量比较大,尤其在显示图片的时候,如果用 8 位数据线,就 会比 16 位方式慢一倍以上,我们当然希望速度越快越好,所以我们选择 16 位的接口。 山东科技大学学生课程设计山东科技大学学生课程设计 18 4 4 软件设计软件设计 4.14.1 万年历万年历定时设计思路定时设计思路 神州号的处理器集成了 RTC 实时时钟,在处理器复位或系统掉电但有实时时钟电 池的情况下,能维持系统当前的时间和日期的准确性。实时时钟是一个独立的定时器。 在相应软件配置下,可提供时钟日历的功能,修改计数器的值可以重新设置系统当前的 时间和日期。 4.24.2 主程序模块主程序模块 主要函数为各初始化函数、中断函数、定时函数和主函数,另外还有显示屏显示与 触摸的相应配置。在主函数中,先对各项配置进行初始化,然后设定年月日等变量初始 值,最后对 LCD 屏进行相应设置,对数据进行处理并调用,使其显示于触摸屏上,另外 还可对字体颜色,字号或者背景颜色进行设置。主程序流程图如下: 开始 设定各变量初始值 初始化系统时钟 配置 GPIO,EXTI,NVIC, TIMER,LCD USART1发送字节, 字符串 配置主函数 处理 年、月、日、时、 分、秒、定时器 是否调整时间日期 否 是 显示设定时间和日 期 显示已配置的时间 和日期 山东科技大学学生课程设计山东科技大学学生课程设计 19 4.34.3 TFT-LCDTFT-LCD 触摸屏触摸屏模块模块 TFT-LCD 触摸屏是电阻式触摸屏,电阻式触摸屏利用压力感应进行控制。电阻触摸 屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜, 它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻) 导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层、它的内表面也涂有一层 涂层、在他们之间有许多细小的(小于 1/1000 英寸)的透明隔离点把两层导电层隔开绝 缘。当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在 X 和 Y 两个方向上产生信号,然后送触摸屏控制器。控制器侦测到这一接触并计算出 (X,Y)的位置,再根据获得的位置模拟鼠标的方式运作。这就是电阻技术触摸屏的 最基本的原理。 对触摸屏的控制有专用的控制芯片。触摸屏的控制芯片主要完成两个任务:一是完成 电极电压的切换,二是采集接触点处的电压值并实现 A/D 转换。 触摸屏控制芯片主要由触摸检测部件和触摸屏控制器组成。触摸检测部件安装在显示 器屏幕前面,用于检测用户触摸位置,接受位置信号后送至触摸屏控制器;而触摸屏控 制器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标,再送给 MPU,同时它能接收 MPU 发来的命令并加以执行。 4.44.4 专题设计专题设计 4.4.1.针对专题的信息传输针对专题的信息传输 USART通用同步异步收发器,全双工数据交换,利用分数波特率发生器提供宽范围的波 特率选择,支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡 协议和irDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTX/RTS)操作。它还 允许多处理器通信。用多缓冲器配置的DMA方式,可以实现高速数据通信。STM32的 USART串口,采用分数波特率发生器,最高速率=72M/16=4.5Mb/S。任何USART通信,需 要用到2个对外连接的引脚:RxD、TxD。 Rx:接收数据串行输入。通过过采样技术来区别数据和噪音,从而恢复数据。 Tx:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器 被激活,并且不发送数据时,Tx引脚处于高电平。在单线和智能卡模式里,此I/O口被 同时用于数据的发送和接收。 山东科技大学学生课程设计山东科技大学学生课程设计 20 传输的内容格式是以字符串和 ASCII 码的形式传送。 (1)OSI 协议 OSI 七层参考模型不是通讯标准,它只给出一个不会由于技术发展而必须修改的稳定模 型,使有关标准和协议能在模型定义的范围内开发和相互配合。一般的通讯协议只符合 OSI 七层模型的某几层。 (2)TCP/IP 协议 实现了五层协议: 1)物理层:对应 OSI 的物理层。 2)网络接口层:类似于 OSI 的数据链路层。 3)Internet 层:OSI 模型在 Internet 网使用前提出,未考虑网间连接。 4)传输层:对应 OSI 的传输层。 5)应用层:对应 OSI 的表示层和应用层。 4.4.2.芯片的工作方式芯片的工作方式 (1)STM32 三种启动模式对应的存储介质均是芯片内置的,它们是: 1. FLASH 启动模式:芯片内置的 Flash。 2. SRAM 启动模式:芯片内置的 RAM 区,就是内存。 3. 系统存储器:芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段 Bootloader,就是通常说的 ISP 程序。这个区域的内容在芯片出厂后没有人能够修改或 擦除,即它是一个 ROM 区。 在每个 STM32 的芯片上都有两个管脚 BOOT0 和 BOOT1,这两个管脚在芯片复位时的电平 状态决定了芯片复位后从哪个区域开始执行程序。 BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。 BOOT1=0 BOOT0=1 从系统存储器启动,这种模式启动的程序功能由厂家设置。 BOOT1=1 BOOT0=1 从内置 SRAM 启动,这种模式可以用于调试。 要注意的是,一般不使用内置 SRAM 启动(BOOT1=1 BOOT0=1),因为 SRAM 掉电后数据就 山东科技大学学生课程设计山东科技大学学生课程设计 21 丢失。多数情况下 SRAM 只是在调试时使用,也可以做其他一些用途。如做故障的局部 诊断,写一段小程序加载到 SRAM 中诊断板上的其他电路,或用此方法读写板上的 Flash 或 EEPROM 等。还可以通过这种方法解除内部 Flash 的读写保护,当然解除读写 保护的同时 Flash 的内容也被自动清除,以防止恶意的软件拷贝。 (2)TFTLCD 的控制器为 ILI9320 它采用 26 万色的 TFT 屏,分辨率为 320240,采用 16 位的 80 并口与外部连接。 该模块的 80 并口有如下一些信号线: CS/PC9:TFTLCD 片选信号。 片选拉低时,表示选中。 RS/PC8:命令/数据标志(0,读写命令;1,读写数据)。 WR/PC7:向 TFTLCD 写入数据。在 WR 的上升沿,使数据写入到 LCD 芯片里。 RD/PC6:从 TFTLCD 读取数据。 在 RD 的上升沿,使数据锁存到数据线上。 D15:0:16 位双向数据线。 RST:硬复位 TFTLCD。 RST 信号线,是直接接到 STM32 的复位脚上,并不由软件控制,这样可以省下来一个 IO 端口。 另外,还需要一个背光控制线来控制 TFTLCD 的背光。所以,总共需要的 IO 口数目为 21 个。 控制器自带显存,其显存总大小为 172820(240*320*18/8),即 18 位模式(26 万色) 下的显存量。 4.4.3.时序图时序图 定时的时序图 显示的时序图 山东科技大学学生课程设计山东科技大学学生课程设计 22 4.4.4.流程图流程图 定时的流程图: 开始 进入TIM3中 断服务函数 秒-1 如果秒0 是 否如果分0 是 分-1 秒=59 否如果时0 是 时-1 分=59 秒=59 js=1 使能TIM4 TIM3清除中 断标志位 进入TIM4中 断服务函数 蜂鸣器响 TIM4清除中 断标志位 结束 山东科技大学学生课程设计山东科技大学学生课程设计 23 TFTLCD 显示流程图: 开始 设置STM32与 TFTLCD相连的IO口 初始化TFTLCD 通过设计的程序将要显示的 汉字、数字等显示在屏幕合 适的位置上 结束 5 5 调试与结果调试与结果 5.15.1 测试任务测试任务 主要对我们设计的智能万年历进行三个方面的测试: (1)屏幕显示模块测试 (2)时间设置模块测试 (3)定时闹钟模块测试 山东科技大学学生课程设计山东科技大学学生课程设计 24 5.25.2 测试目的目标测试目的目标 测试是为了检验我们设计是否达标,测试软件编程是否能通过编译和测试 软硬件是否能协调工作。打开万年历之后检查其是否可以显示时间,是否可 以通过按键或触摸来修改数据,是否可以实现万年历的算法及是否可以根据 判断闰年来显示调整时间,是否可以实现定时闹钟的功能。测试能以最少的 人力和时间发现潜在的各种错误和缺陷,保证设计的质量和可靠性,发现方 案中的不足并改进,在实现设计目标的同时优化设计结果,尽量实现低功耗。 5.35.3 测试软硬件环境测试软硬件环境 硬件环境: JLinkARM V8 仿真器一套; STM103F103VCT6 的神舟二号开发板一套。 软件环境: 装有 RV MDK 仿真软件的 Pentium 以上的计算机一台。 5.45.4 测试的过程及其步骤测试的过程及其步骤 1)接通电源,打开开发板,下载电脑中的程序。 2)观察 TFTLCD 显示屏上显示的数据是否与我们在电脑上输入的配置相同。 3)设定倒计时,观察倒计时的数到达指定状态以后蜂鸣器是否发出响声。 4)测试万年历的算法能否实现。 5)测试万年历的设置能否实现。 5.5.5 5 测试结果测试结果 定时闹钟模块测试:可以发出响声,持续 5s。 日历的显示模块测试:万年历可以正确的显示数据。 日历的设置模块测试:万年历可以触摸式调整数据。 万年历的算法模块测试:万年历的算法无误。 山东科技大学学生课程设计山东科技大学学生课程设计 25 显示模块: 设置模块: 闰年算法的实现: 山东科技大学学生课程设计山东科技大学学生课程设计 26 6 6 总结总结 两周的课程设计马上就要结束了,我和同学们一起度过了这段忙碌而充实的时光。这 次的课程设计深刻的反映出实践是检验真理的唯一标准这句话的真谛。课程设计是我们 专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不可少的 过程。“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正 含义。我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在 社会大潮中奔跑打下坚实的基础。 这次课程设计的主题是基于 STM32 的智能万年历,本次设计的万年历系统以单片机 STM32F103VCT6 作为主控制模块、TFT-LCD 作为液晶显示模块、内部的 RTC 时钟作 为实时时钟模块。首先老师介绍了这次课程设计的主要内容,然后同学们进行分组并选 出组长,各组进行分工安排、制定计划,组员明确各自的任务后,互相合作完成工作。 我在这次课程设计中负责的是最小应用系统与流程图的设计,主要内容有最小应用系统 的工作原理和功能电路以及需要用到的所有的硬件外设的性能及原理,还有帮助其他组 员设计程序流程等。在明确各自任务后,我们就开始了真正的课程设计。在设计分析阶 段,我们通过吕老师给我们提供的许多资料,以及在图书馆借阅的书籍等,然后根据设 计要求做了分析,根据分析进行了课题的设计,最后使用老师提供的神州二号开发板把 我们的想法付诸于实践,并且基本达到了智能万年历的要求。 这次的课程设计不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何 去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互 探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解, 也学会了做人与处世。 通过这次课程设计,让我更加深刻的了解了课本知识,弥补了以往欠缺的知识,在设 计过程中会遇到一些专业名词和英文,虽然有技术手册,但很多时候也是无从下手,明显 暴露了自己在知识上的不足,让我深刻理解了“书到用时方恨少”这句话,并同时坚定 了我要努力学习的信心。通过这次设计,我发现单片机是一门十分有趣也是十分实用的 科学,学好单片机真的可能给我们带来一个好的发展方向。我相信单片机还有很多我未 搞清楚的问题,但是这次的课程设计给我相当的基础知识,为我以后的学习打下了坚实 的基础。 本次我们小组的课程设计还有很多不足之处,希望吕老师给予我们批评指正。 山东科技大学学生课程设计山东科技大学学生课程设计 27 7 7 致谢致谢 感谢学校及老师给我们这次宝贵的课程设计的机会,使我们
展开阅读全文