基于STM32的智能万年历设计方案.docx
- 文档编号:27125240
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:29
- 大小:2.65MB
基于STM32的智能万年历设计方案.docx
《基于STM32的智能万年历设计方案.docx》由会员分享,可在线阅读,更多相关《基于STM32的智能万年历设计方案.docx(29页珍藏版)》请在冰豆网上搜索。
基于STM32的智能万年历设计方案
基于STM32的智能万年历设计方案
1.课程设计任务
1.1课程设计目的
(1)学习万年历的原理,学会定时器、触摸屏在万年历中的应用。
(2)通过万年历的制作使学生熟练掌握所学的相关知识内容,并培养学生工程设计的一般方法和技巧。
1.2设计要求:
独立思考、共同合作、保质保量、按时完成。
1.3技术要求:
(1)系统组成系统选用STM32F103单片机为微处理器,使用开发板上具有的按键、指示灯、触摸屏和串口等实现万年历的功能。
(2)实现功能:
1)日历、时间的调整,通过按键切换实现对年月日时分秒的调整控制,可以设置每一部分的初始值。
2)具备闰年的自动调整功能
3)具有定时闹钟功能:
通过按键/触摸屏设置定时时间。
定时时间到,蜂鸣器发出鸣叫声,维持5S。
4)上位机功能:
可以把单片机的时间数据通过串口或者USB传送至上位机。
5)无线设置功能:
通过远程设置万年历。
(3)模块组成:
STM32单片机最小应用系统;设置显示模块;闹钟模块;时间运行模块等;
1.4解决的主要问题:
(1)最小应用系统设计:
设计STM32的最小应用系统,包括MCU、复位、启动、晶振、电源等。
(2)日历的显示和设置;
(3)万年历的算法和实现;
(4)定时闹钟功能;
(5)无线设置功能。
1.5两周时间安排
(1)第一周:
星期一:
布置设计任务,收集相关资料。
星期二:
确定设计方案
星期三:
软、硬件的总体设计
星期四、五、六、日:
上机调试
(2)第二周
星期一、二、三:
上机调试
星期四:
完成设计报告。
星期五:
17:
00之前上交课程设计报告。
2总体方案设计
2.1整体方案设计
2.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清零并进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.3硬件模块简介
在智能万年历项目中,我们采用的硬件主要是基于STM32F103VCT6的神州二号开发板,它的主要性能如下表所示:
2.3.1最小应用系统
最小应用系统是完成此项目所有功能的基础,它主要包含MCU和电源、复位、晶振、启动等,我们通过程序使能这些硬件,让它完成相应的功能。
MCU:
微控制单元,是把中央处理器的频率与规格做适当缩减,并将内存、计数器、USB、A/D转换、UART、PLC、DMA等周边接口,LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。
复位电路:
就是利用它把电路恢复到起始状态。
就像计算器的清零按钮的作用一样,以便回到原始状态,重新进行计算。
和计算器清零按钮有所不同的是,复位电路启动的手段有所不同。
晶振电路:
驱动整个系统中的各个时钟进行工作。
启动电路:
启动整个系统。
电源:
给整个系统供电。
2.3.2TFTLCD显示屏
TFT(ThinFilmTransistor)即薄膜场效应晶体管。
所谓薄膜晶体管,是指液晶显示器上的每一液晶像素点都是由集成在其后的薄膜晶体管来驱动。
从而可以做到高速度、高亮度、高对比度显示屏幕信息。
3硬件设计
3.1stm32硬件系统原理图
我们组选用神州二号开发板来完成我们的任务目标,它是基于STM32F103VCT6开发的,面向企业和广大爱好者,开发板功能强大,外围资源丰富,例程丰富,如下图所示:
此章主要介绍最小应用系统(MCU、复位、启动、晶振、电源等)和此设计相关硬件。
3.1.1MCU
神州二号STM32开发板选择的是STM32F103VCT6作为MCU,该芯片是STM32F103系列里面配置非常强大的了,它拥有的资源包括:
48KBRAM、256KBFLASH、2个基本定时器、4个通用定时器、2个高级定时器、3个SPI、2个IIC、5个串口、1个USB、1个CAN、3个ADC、1个DAC、1个SDIO接口、以及80个通用IO口。
神州二号开发板选用的是外设资源和管脚资源最丰富的100脚LQFP封装的STM32F103VCT6芯片,充分满足企业和广大爱好者的评估开发需求。
所以我们选择了它作为我们的主芯片。
MCU部分原理图如下图所示
3.1.2复位电路
图中所示是开发板板载的复位按键(RESET),用于复位STM32,还具有复位液晶显示屏的功能,因为液晶模块的复位引脚和STM32的复位引脚是连接在一起的,当按下该键的时候,STM32和液晶一并被复位。
因为STM32是低电平复位的,所以我们设计的电路也是低电平复位的,这里的R和C构成了上电复位电路。
同时,开发板把TFT_LCD的复位引脚也接在RESET上,这样这个复位按钮不仅可以用来复位MCU,还可以复位LCD。
3.1.3启动电路
在STM32F103VCT6里,可以通过BOOT[1:
0]引脚选择三种不同启动模式。
启动模式如下:
在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。
用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。
在从待机模式退出时,BOOT引脚的值将被被重新锁存,因此,在待机模式下BOOT引脚应保持为需要的启动配置。
在启动延迟之后,CPU从地址0x00000000获取堆栈顶的地址,并从启动存储器的0x00000004指示的地址开始执行代码。
因为固定的存储器映像,代码区始终从地址0x00000000开始(通过ICode和DCode总线访问),而数据区(SRAM)始终从地址0x20000000开始(通过系统总线访问)。
Cortex-M3的CPU始终从ICode总线获取复位向量,即启动仅适合于从代码区开始(典型地从Flash启动)。
STM32F103VCT6微控制器实现了一个特殊的机制,系统可以不仅仅从Flash存储器或系统存储器启动,还可以从内置SRAM启动。
3.1.4晶振电路
STM32F103内部已经包含了8MHz高速内部RC震荡电路,但是其精度不是很高,为此,我们在外部增加了25MHz的晶振电路,为系统的可靠动作提供时序基准。
STM32F103内部已经包含了40KHZ低速内部RC震荡电路LSE,但是其精度不是很高,为此我们在外设部分增加了32.768KHZ的晶振电路,可以用于驱动独立看门狗和通过程序选择驱动RTC实时时钟。
晶振电路图如下:
3.1.5电源电路
VDDA与VREF是STM32处理器数字|模拟转换(ADC)电路需要使用到的模拟参考电源和模拟电源输入。
其相关管脚定义如下:
在神州二号开发板上,VREF和VDDA电源相关电路如下图所示,为保障其稳定性需要隔离并增强独立的滤波储能电容。
3.1.6蜂鸣器电路
神州二号STM32开发板板载了一个有源蜂鸣器,其原理图如图所示:
有源蜂鸣器是指自带了震荡电路的蜂鸣器,这种蜂鸣器一接上电就会自己震荡发声。
而如果是无源蜂鸣器,则需要外加一定频率(2~5KHz)的驱动信号才会发声。
这里我们选择使用有源蜂鸣器,方便大家使用。
图中Q1是用来扩流,R60则是一个下拉电阻,避免MCU复位的时候,蜂鸣器可能发声的现象。
BEEP信号直接连接在MCU的PB8上面,PB8可以做PWM输出,所以大家如果想玩高级点(如:
控制蜂鸣器“唱歌”),就可以使用PWM来控制蜂鸣器。
3.1.7实时时钟电路
神州二号开发的STM32处理器内部带有RTC实时时钟,使用我们的代码可以实现年月日时分秒及星期等计算与输出功能。
内部的RTC实时时钟在系统正常运行时使用系统的3.3V电源,而在系统断电时则电池供电保证时间信息持续不丢失。
其供电VBAT采用CR1220纽扣电池,相关电路如下:
3.2触摸屏模块电路设计
3.2.1TFTLCD简介
TFT-LCD即薄膜晶体管液晶显示器。
其英文全称为:
ThinFilmTransistor-LiquidCrystalDisplay。
TFT-LCD与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。
TFT-LCD也被叫做真彩液晶显示器。
模块原理图如下图所示:
其中CS:
TFTLCD片选信号。
WR:
向TFTLCD写入数据。
RD:
从TFTLCD读取数据。
D[15:
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位模式(26万色)下的显存量。
模块的16位数据线与显存的对应关系为565方式,如图所示:
最低5位代表蓝色,中间6位为绿色,最高5位为红色。
数值越大,表示该颜色越深。
下表是ILI9320的几个重要命令:
其中,R32,R33是设置GRAM的行地址和列地址。
R32用于设置列地址(X坐标,0~239),R33用于设置行地址(Y坐标,0~319)。
当我们要在某个指定点写入一个颜色的时候,先通过这两个命令设置到该点,然后写入颜色值就可以了。
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模块上。
3.3硬件系统模块电路
3.3.1专题硬件选型依据及简介
神州二号开发板是基于STM32F103VCT6开发的,其内部的资源主要有:
48KBRAM、256KBFLASH、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的主系统由以下部分构成:
●四个驱动单元:
─Cortex™M3内核DCode总线(D-bus),和系统总线(S-bus)
─通用DMA1和通用DMA2
●四个被动单元
─内部SRAM
─内部闪存存储器
─FSMC
─AHB到APB的桥(AHB2APBx),它连接所有的APB设备,这些都是通过一个多级的AHB总线构架相互连接的,如下图所示:
ICode总线
该总线将Cortex™M3内核的指令总线与闪存指令接口相连接。
指令预取在此总线上完成。
DCode总线
该总线将Cortex™M3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访问)。
系统总线
此总线连接Cortex™M3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和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)。
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供电;JLINKV8供电,包括5V或3.3V。
3.3.4与MCU的硬件接口连接
蜂鸣器
蜂鸣器在硬件上是直接连接好了的,不需要经过任何设置,直接编写代码就可以了。
蜂鸣器的驱动信号连接在STM32的PB8上。
蜂鸣器与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上。
显示屏
TFT-LCD的液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,大大提高了图像质量。
它的管脚图如下:
从上图可以看出,TFTLCD模块采用16位的并行方式与外部连接,之所以不采用8位的方式,是因为彩屏的数据量比较大,尤其在显示图片的时候,如果用8位数据线,就会比16位方式慢一倍以上,我们当然希望速度越快越好,所以我们选择16位的接口。
4软件设计
4.1万年历定时设计思路
神州Ⅱ号的处理器集成了RTC实时时钟,在处理器复位或系统掉电但有实时时钟电池的情况下,能维持系统当前的时间和日期的准确性。
实时时钟是一个独立的定时器。
在相应软件配置下,可提供时钟日历的功能,修改计数器的值可以重新设置系统当前的时间和日期。
4.2主程序模块
主要函数为各初始化函数、中断函数、定时函数和主函数,另外还有显示屏显示与触摸的相应配置。
在主函数中,先对各项配置进行初始化,然后设定年月日等变量初始值,最后对LCD屏进行相应设置,对数据进行处理并调用,使其显示于触摸屏上,另外还可对字体颜色,字号或者背景颜色进行设置。
主程序流程图如下:
4.3TFT-LCD触摸屏模块
TFT-LCD触摸屏是电阻式触摸屏,电阻式触摸屏利用压力感应进行控制。
电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层、它的内表面也涂有一层涂层、在他们之间有许多细小的(小于1/1000英寸)的透明隔离点把两层导电层隔开绝缘。
当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在X和Y两个方向上产生信号,然后送触摸屏控制器。
控制器侦测到这一接触并计算出(X,Y)的位置,再根据获得的位置模拟鼠标的方式运作。
这就是电阻技术触摸屏的最基本的原理。
对触摸屏的控制有专用的控制芯片。
触摸屏的控制芯片主要完成两个任务:
一是完成电极电压的切换,二是采集接触点处的电压值并实现A/D转换。
触摸屏控制芯片主要由触摸检测部件和触摸屏控制器组成。
触摸检测部件安装在显示器屏幕前面,用于检测用户触摸位置,接受位置信号后送至触摸屏控制器;而触摸屏控制器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标,再送给MPU,同时它能接收MPU发来的命令并加以执行。
4.4专题设计
4.4.1.针对专题的信息传输
USART通用同步异步收发器,全双工数据交换,利用分数波特率发生器提供宽范围的波特率选择,支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和irDA(红外数据组织)SIRENDEC规范,以及调制解调器(CTX/RTS)操作。
它还允许多处理器通信。
用多缓冲器配置的DMA方式,可以实现高速数据通信。
STM32的USART串口,采用分数波特率发生器,最高速率=72M/16=4.5Mb/S。
任何USART通信,需要用到2个对外连接的引脚:
RxD、TxD。
Rx:
接收数据串行输入。
通过过采样技术来区别数据和噪音,从而恢复数据。
Tx:
发送数据输出。
当发送器被禁止时,输出引脚恢复到它的I/O端口配置。
当发送器被激活,并且不发送数据时,Tx引脚处于高电平。
在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。
传输的内容格式是以字符串和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=xBOOT0=0从用户闪存启动,这是正常的工作模式。
BOOT1=0BOOT0=1从系统存储器启动,这种模式启动的程序功能由厂家设置。
BOOT1=1BOOT0=1从内置SRAM启动,这种模式可以用于调试。
要注意的是,一般不使用内置SRAM启动(BOOT1=1BOOT0=1),因为SRAM掉电后数据就丢失。
多数情况下SRAM只是在调试时使用,也可以做其他一些用途。
如做故障的局部诊断,写一段小程序加载到SRAM中诊断板上的其他电路,或用此方法读写板上的Flash或EEPROM等。
还可以通过这种方法解除内部Flash的读写保护,当然解除读写保护的同时Flash的内容也被自动清除,以防止恶意的软件拷贝。
(2)TFTLCD的控制器为ILI9320
它采用26万色的TFT屏,分辨率为320×240,采用16位的80并口与外部连接。
该模块的80并口有如下一些信号线:
CS/PC9:
TFTLCD片选信号。
片选拉低时,表示选中。
RS/PC8:
命令/数据标志(0,读写命令;1,读写数据)。
WR/PC7:
向TFTLCD写入数据。
在WR的上升沿,使数据写入到LCD芯片里。
RD/PC6:
从TFTLCD读取数据。
在RD的上升沿,使数据锁存到数据线上。
D[15:
0]:
16位双向数据线。
RST:
硬复位TFTLCD。
RST信号线,是直接接到STM32的复位脚上,并不由软件控制,这样可以省下来一个IO端口。
另外,还需要一个背光控制线来控制TFTLCD的背光。
所以,总共需要的IO口数目为21个。
控制器自带显存,其显存总大小为172820(240*320*18/8),即18位模式(26万色)下的显存量。
4.4.3.时序图
定时的时序图
显示的时序图
4.4.4.流程图
定时的流程图:
TFTLCD显示流程图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STM32 智能 万年历 设计方案
![提示](https://static.bdocx.com/images/bang_tan.gif)