2、在概念领域。本系统以意法半导体公司的基于Cortex-M332位高性能单片机STM32F103ZET6为核心,由GSM模块、GPS模块、MPU6050六轴加速度传感器模块、TFT彩屏、SD卡等组成了一个可穿戴设备系统。该系统实现了万年历、秒表、计步、闹钟、画板、日历、地图等功能。地图获取的图片存放在SD卡中,GUI图片存放在8M的外置FLASH当中。系统支持全触摸操作。关键词:可穿戴设备;STM32单片机;TFT彩屏;文件系统;SD卡;GPS地图!HWTheWearableDeviceSystemBasedontheSTM32IIAbstractThewearabledevicesisthe
3、applicationoftheWearableTechnologyintheDailywearableProductDesign,suchastheglasses,gloves,watches,clothesandshoes.Generally,Thewearablesmartdevicesincludingfull-featured,largesize,donotrelyonsmartphonestoachieveacompleteorpartialfunctions,suchassmartwatchesandsmartglasses,etc.,andonlyfocusonacertain
4、typeofapplicationfunctions,andotherdevicessuchassmartphoneswiththeuseofvarioustypesofconductsuchassignsmonitoringbraceletintelligent,smartjewelry.Astechnologyadvancesandthechangeofuserneeds,applicationformsofwearablesmartdevicesareconstantlychanging.Wearablecomputertechnologyhasattractedwideattentio
5、nintheinternationalacademiaandindustry,butduetothehighconstructioncostandtechnicalcomplexity,alotofrelatedequipmentonlyisanidea.ThissystemisbasedontheSTM32F103ZET6asthecorewhichisproducedbytheSTMicroelectronicsCortex-M332-bithighperformancemicrocontroller,ThissystemalsouseGSMmodule,GPSmodule,MPU6050
6、six-axisaccelerationsensormodule,TFTcolorscreen,SDcardandothercomponents.Thesystemhassixfunctionssuchasthecalendar,stopwatch,pedometer,alarmclock,Sketchpad,Calendar,Maps,andotherfunctions.MapGetpicturesstoredintheSDcard,GUIimagestoredintheexternal8MFLASH.Thesystemsupportsfull-touchoperation.Keywords
7、:Wearabledevice;STM32microcontroller;TFTcolorscreen;Thefilesystem;SDcard;GPSmapsIV目次TOCo1-5hzHYPERLINKlbookmark6绪论-1-HYPERLINKlbookmark81.1选题背景-1-HYPERLINKlbookmark101.2国内外研究现状及意义-1-HYPERLINKlbookmark12设计要求-3-HYPERLINKlbookmark14方案论证-4-HYPERLINKlbookmark16控制器方案-4-HYPERL
8、INKlbookmark18显示模块方案-5-HYPERLINKlbookmark203.3加速度传感器方案-5-HYPERLINKlbookmark22硬件部分-6-HYPERLINKlbookmark24单片机-6-HYPERLINKlbookmark26TFT彩屏-9-触摸屏控制芯片-11-MPU6050模块-12-4.5SD卡-14-EEPROM存储器24C02-15-FLASH芯片W25Q64-16-TOCo1-5hzHYPERLINKlbookmark36蜂鸣器电路-17-HYPERLINKlbookmark384.9G
9、PS模块-17HYPERLINKlbookmark404.10GSM模块-19-软件部分-21-HYPERLINKlbookmark44开发工具介绍-21HYPERLINKlbookmark46程序框图-21HYPERLINKlbookmark483文件系统的移植-22HYPERLINKlbookmark50GUI程序的设计-24-HYPERLINKlbookmark52主要功能的实现原理-25系统功能测试与分析-38-HYPERLINKlbookmark56开机主界面测试-38HYPERLINKlbookmark58万年历功能测
10、试-38HYPERLINKlbookmark603秒表功能测试-39-6.4闹钟功能测试-40-6.5画板功能测试-41-6.6计步功能测试-41-6.8测试结果分析-42-结论-45-致谢-46-参考文献-47-附录一:系统电路原理图-48-附录二:部分源程序-52--1绪论1.1选题背景随着科技的进步,用单片机开发的智能化产品在各个领域得到广泛地应用,它极大地提高了社会生产力水平。加快了工业的发展。可穿戴设备目前已经成为科技发展的热潮,世界各公司在可穿戴设备系统上的投入越来越高,智能可穿戴设备有着众多的优点,包括体积小,功耗低,携带性高、功能强大等等。因此它深受人们的喜爱。另外,
11、由于触摸屏以及各种传感器的引入,使得可穿戴设备迈向高端消费品的行列。可穿戴设备的轻薄和低功耗使其在生活电子产品中脱颖而出。智能的操作系统的应用,让可穿戴设备实现多功能,操作也更加流畅。在众多电子产品中,可触摸的智能可穿戴设备代替传统按键操作的设备,使其功能丰富强大。现代人们的生活越来越离不开智能手机,智能手机给我们提供了丰富的资讯、应用、以及游戏。它给我们带来方便的同时,也使很大一部分人沉迷于智能手机,成为低头一族。因此,开发出一种具备智能手机的基本功能,又不至于使人们沉迷的电子设备就变得非常有意义。国内外研究现状与意义从智能手表,到各个厂家的运动手环,再到最近非常流行的VR眼镜,可以看到,可
12、穿戴设备已经融入到了人们生活的方方面,它越发深刻地改变着人们的生活方式,提升着人们的生活质量。下面将主要介绍美国、日本、韩国可穿戴设备行业的发展情况。1.2.1国外可穿戴设备发展概况目前世界范围内可穿戴设备产量迅猛增长,美国是全世界最早提出可穿戴设备的思想和雏形的国家,近年来,GoogleGlass、AppleWatch等备受瞩目的可穿戴产品也源自美国的大型知名企业。世界顶级会计师事务所之一的普华永道,近期发布了两份关于可穿戴设备现状及未来发展的报告。报告表明,美国人对可穿戴技术的未来十分乐观,但对现有的技术则缺乏热情。韩国可穿戴行业发展的主要代表为三星公司。三星公司作为全球最大的智能手机厂商
13、,也是目前为止可穿戴市场最大的推动者。2013年9月,三星公司正式发布了其第一款智能手表GalaxyGear,随后又对其进行更新,推出了GalaxyGear2/Fit/Neo。公司自主研发的可穿戴产品还包括曲面屏智能手表GearS,它是首款不必连接智能手机就具有上网功能的智能手表,它内置了支持蜂窝数据功能的上网模块。在三星公布的2015年产业发展规划中,主要集中在可穿戴领域、虚拟现实、智能家居以及在线教育。目前,三星有近万名开发和设计人员都在为即将上市的可穿戴型设备做准备,足以证明三星打算拓宽可穿戴型设备市场的决心。三星公司表明,他们在芯片、存储、屏幕技术等方面的垂直整合能力,将为其带来更多优
14、势。日本的电子技术发展以索尼、东芝、富士通等行业巨头为典型代表,然而在可穿戴技术发展方面,日本的初创企业比行业巨头表现更为优秀。成立于2013年的日本Logbar公司是可穿戴技术公司的杰出代表之一,该公司因推出一款名为“Ring”的智能戒指而闻名。将Ring智能戒指戴在手指上,随意动动手指头便可远程控制智能手机、电视等智能终端设备。同样成立于2013年的Moff公司推出了一款利用声音将周围物品全部变成互动玩具的智能腕带。儿童将智能腕带戴在手上后,可以通过蓝牙设备将手环连接到Moff的IOS应用程序,实现与智能设备终端的连接,将周围物品变成互动玩具。国内可穿戴设备发展概况国内的可穿戴设备已经具备
15、监测、医疗、娱乐、办公、学习、定位等多种功能。随着人们对于自身健康问题的重视度不断增加,消费者在健康方面的诉求使得医疗健康、运动健身类产品市场份额较大。目前,可穿戴设备在医疗健康领域取得了快速发展,可穿戴移动医疗设备市场规模正在不断扩大。在众多的移动医疗产品中,最受欢迎的是为医院和患者提供医疗服务和监测的可穿戴健康产品。国内可穿戴设备融资创业公司大多成立在2013年,产品集中在手表、手环,应用领域集中在健康、医疗、运动、跟踪定位等。其中,有近一半的可穿戴设备创业公司把发展方向为健康领域。研究意义目前,智能手机的功能非常强大,各种应用、游戏让用户应接不暇、不舍得放下手中的手机,低头族由此诞生。而
17、屏,也可以通过加减按键进行地图精度的改变).手势控制(根据手势的变化,在屏幕的画板上显示相应的图像,也可以修改画图的颜色).记步(可以后台自动运行,一直记录人体行走的步数)方案论证根据设计要求先确定了本系统的整体设计原理框图,如图3.1,然后分别讨论了本系统在控制器、显示模块、以及加速度传感器模块的选择方案。图3.1系统原理框图控制器方案方案一:使用51单片机作为主控制器。51单片机以其低廉的价格,简单的操作,俘获了大量的用户,但是反过来看便宜简单往往意味着功能的低端。在本设计中,51单片机就显得力不从心了,它的10口数量较少,片上外设资源匮乏,而且处理速度也偏低。方案二:采用STM32F10
18、3ZET6作为主控制器。STM32F103ZET6是意法半导体公司推出的一款以Cortex-M3为内核的32位高性能单片机。拥有多达112个10口,它以8位单片机的价格,满足了用户32位单片机的需求。本系统对主控制器的速度有较高要求,速度对本系统的操作流畅度有较大的影响,STM32F103ZET6最大可以达到72MHZ,这是51单片机远不可及的。此外,由于穿戴式设备系统对体积以及功耗要求比较严格,STM32在这两方面做的都比较出色而51单片机无法满足系统的要求。所以选择方案二,采用STM32F103ZET6作为系统的主控制器。显示模块方案方案一:采用12864点阵式液晶。12864是128*6
19、4点阵液晶模块的点阵数简称,该点阵的屏显成本相对较低,适用于各类仪器,小型设备的显示领域。一页共可以显示32个汉字或者64个字符。方案二:采用搭配ILI9341控制芯片的240x320彩屏。TFT彩屏在消费电子产品中有着广泛的应用,它支持26万色的显示,显示效果十分细腻,此LCD屏使用INTEL的8080接口,STM32F103ZET6带有FSMC功能,支持Intel8080和Motorola6800的模式,LCD屏内部的GRAM直接由FSMC控制,实现快速的刷屏。近些年,随着技术的发展,LCD彩屏的分辨率越做越高,色彩也越来越丰富,显示效果极为细腻。这些优点是点阵式液晶无法超越的。特别是在
20、图片的显示方面,点阵式液晶与LCD彩屏比起来更是相形见绌,无法还原出图片的本来面貌。而且,LCD彩屏还可以支持触屏,方便系统的控制。由于本设计需要用到触摸屏功能以及良好的显示效果,所以综上所述,系统选择方案二,采用TFT彩屏作为显示器件。加速度传感器方案方案一:使用MPU6050加速度传感器模块。MPU6050是一款整合性6轴运动处理组件,它内部带有三轴的加速度传感器、三轴的陀螺仪、并且能通过自身的第二IIC接口连接外部的磁力传感器。将这九轴的数据利用DMP(DigitalMotionProcessor)进行数据解算,进而就能输出完整的九轴的姿态融合解算数据。利用了DMP进行数据解算,就降低了
21、单片机的负荷,同时缩短了开发周期,降低了开发难度。方案二:不使用加速度传感器模块。在实现计步功能时可以利用GPS模块记录用户移动距离,根据用户自己设定的步长计算出行走步数。方案一可以精确地检测到用户行走时在三个轴上的加速度变化,配合算法,识别出用户行走的姿态并记录。但是方案二只能粗略地估算步数,并且算出的步数受GPS模块的精度影响十分大,当用户在室内时由于GPS模块不能很好地接收卫星信号造成无法计步。基于以上考虑,本设计采用方案一。硬件部分在本系统的设计中使用了许多外围元器件以及模块电路,主要如下:控制器STM32F103ZET6以及最小系统电路、JTAG接口电路、LCD触摸屏模块、MPU60
22、50模块、SD卡、EEPROM存储器24C02、FLASH存储器W25Q64、蜂鸣器、GPS模块、GSM模块。下面将对这些模块分别介绍。单片机4.1.1STM32F103ZET6概述STM32F103ZET6是ST公司推出的一款基于Cortex-M3内核的微处理器。STM32具有MCU应用领域的32位处理器的性能,STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核单片机。STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。主要特性如下:(1).512K片内FLASH(相当于硬盘),64K片内RAM(相当于内存),片内F
23、LASH支持在线编程(IAP)。(2).Cortex-M3处理器内核,最高时钟频率可达72MHZ。(3).12通道直接内存访问控制器(DMA)。(4).8个定时器、2个看门狗定时器和RTC实时时钟。(5).42个16位的后备寄存器(可以理解为电池保存的RAM),利用外置的纽扣电池,和实现掉电数据保存功能。(6).2个CAN总线模块、5个UART通用串行模块、3路SPI接。(7).2个I2C总线模块、2个IIS总线模块,12位、16通道AD转换模块。(8).支持JTAG,SWD调试。配合廉价的J-LINK,实现高速低成本的开发调(9).多达112个10(大部分兼容5V逻辑),144PinLQFP
24、封装,引脚图如图4.1所示。图4.1STM32F103ZET6引脚图由以上数据可以看出,本系统所选MCU性能十分卓越。无论是传统51单片机或增强型51单片机还是RISC的8位AVR单片机还是16位的MSP430单片机,本处理器在Flash、RAM、工作频率以及外设上具有绝对的优势,性价比较高。4.1.2STM32F103ZET6外围电路介绍供电系统电源是电子设备中必不可少的一部分,它为设备提供了能量STM32F103ZET6电源电压为3.3v,电源芯片采用艾迈斯公司的AMS1117-3.3。AMS1117-3.3是艾迈斯公司推出的具有单输出LDO、固定电源(3.3v)、内部电流限制、过流保护特
26、围为3.579545MHz-8.192MHz。系统采用8MHz晶振,如图4.3所示:I-图4.3STM32F103ZET6外部晶振振荡电路图(3)复位电路STM32F103ZET6外部复位输入管脚(RST)为低电平有效。按下按键S2能对系统复位。复位电路如图4.4所示:图4.4STM32F103ZET6复位电路图JTAG接口本系统使用的JTAG接口由5个管脚组成。数据由TDI引脚串行发至控制器然后通过TDO引脚从控制器串行输出。程序的调试、下载都通过JTAG接口来完成。电路图如图4.5所示:图4.5STM32F103ZET6JTAG接口电路TFT彩屏系统采用的彩屏分辨率为240*320,2.8
27、寸。支持262K/65K色,数据位为8/16位可选,控制器为ILI9341。电路连接图如图4.6所示:图4.6TFT彩屏电路连接图TFT彩屏引脚功能如表4.1所示:表4.1TFT彩屏引脚功能表DB0-DB1516位数据线CS片选信号输入RS指令数据选择信号WR写信号开关RD读信号开关RESET复位TCS触摸屏片选端TPEN触摸屏笔中断BL液晶背光选择端MISO串行数据输出端MOSI串行数据输入端GND地本LCD模块的LCD屏内部集成使用8080接口的ILI9341驱动芯片,对LCD屏的控制其实是通过控制ILI9341芯片实现的,ILI9341内部的GRAM的每个存储单元都对应着LCD屏的一个像
28、素点,通过往GRAM中写数据达到对液晶屏的控制STM32F103ZET6有FSMC功能,它支持8080通讯接口,直接由FSMC控制GRAM,实现LCD屏快速地刷屏。如图4.7为FSMC写NOR的时序图。CSX|与8Q80类2似的信号线DCXpA25:D心佛跌拯作周期0115:0DATAST+I)HCLKISiqD祐:DHCLK卅期NWE1HCLK图4.7FSMC写NOR的时序图触摸屏控制芯片4.3.1XPT2046简介XPT2046是一种典型的逐次逼近型模数转换器(SARADC),包含了采样/保持、模数转换、串口数据输出等功能。供电电压范围为2.7V5.5V。参考电压值直接决定ADC的输入范围
29、,参考电压可以使用内部参考电压,也可以从外部直接输入IVVCC范围内的参考电压(要求外部参考电压源输出阻抗低)。X、Y、Z、VBAT、Temp和AUX模拟信号经过片内的控制寄存器选择后进入ADC,ADC可以配置为单端或差分模式。选择VBAT、Temp和AUX时可以配置为单端模式;作为触摸屏应用时,可以配置为差分模式,这可有效消除由于驱动开关的寄生电阻及外部的干扰带来的测量误差,提高转换准确度。引脚图如图4.8所示:Q0_tiIEILLIdss图4.8XPT2046管脚图4.3.2XPT2046引脚功能XPT2046有16个引脚,引脚功能介绍如表4.2所示表4.2XPT2046引脚功能表1BUS
30、Y忙时信号线2DIN串行数据输入端3/CS片选信号输入4DCLK外部时钟输入端口5+VCC电源引脚6XPXP位置输入端7YPYP位置输入端8XNXN位置输入端9YNYN位置输入端10GND地引脚11VBAT电池监视输入端12AUXADC辅助输入通道13VREF参考电压输入/输出14IOVDD数字电源输入端15/PENIRQ笔接触中断引脚16DOUT串行数据输出端4.4MPU6050模块4.4.1MPU6050简介MPU6050是一款整合性6轴运动处理组件,它内部带有三轴的加速度传感器、三轴的陀螺仪、并且能通过自身的第二IIC接口连接外部的磁力传感器。将这九轴的数据利用DMP(DigitalMo
31、tionProcessor)进行数据解算,进而就能输出完整的姿态融合解算数据。利用了DMP进行数据解算,就降低了单片机的负荷,同时缩短了开发周期,降低了开发难度。MPU6050的陀螺仪和加速度仪分别有3个16位AD转换器将采集的数据数字化输出。该模块体积小,适用于穿戴式设备,与STM32进行I2C通信。模块实物图片与接口原理图如图4.9所示。STM32内部有两路IIC供用户选择,但是硬件IIC做的并不稳定,程序容易死在IIC通信上。因此本系统采用IO口模拟IIC的方式进行数据通信。MPU6050在初始时对其寄存器进行配置,包括陀螺仪采样率、自检及测量范围等参数。电路连接图如图4.10所示:图4
32、.10MPU6050电路连接图SD卡SD卡(SecureDigitalMemoryCard)是一种基于FLASH的新型存储设备,它具有传输速度快、体积小、容量大、移动灵活、安全性能好等特点。SD卡有SD和SPI两种工作模式,其中SPI模式接口比较简单,有利于降低成本,而且能很好的胜任一般的应用场景。但是SD模式相对就比较复杂。因此本系统使用SPI模式。SD卡管脚定义如表4.3:表4.3SD管脚定义PinSD4-bitmodeSPImode1CD/DAT3Dataline3CSCardSelect2CMDCommandlineDIDatainput3VSS1GroundVSS1Ground4VD
33、DSupplyvoltageVDDSupplyvoltage5CLKClockSCLKClock6VSS2GroundVSS2Ground7DAT0Dataline0DODataoutput8DAT1Dataline1orInterrupt(optional)IRQInterrupt9DAT2Dataline2orReadWait(optional)NCNotUsed在SPI模式下,1脚8脚保留(未使用)、2脚片选端、3脚数据输入端、4脚6脚电源与地端、5脚时钟信号端、7脚数据输出端。SD卡的工作电压为2.73.6V。电路图如图4.11所示:图4.11SD卡电路图系统中SD卡的主要作用是存储接
34、收到的地图图片SD卡采用SPI总线模式。STM32F103ZET6集成了3个SPI接口,方便系统的控制。EEPROM存储器24C02系统掉电时需要保存一些系统配置信息,用于恢复关机前的状态。STM32F103ZET6提供了数据备份寄存器,但是只能保存42个16位数据,这对于本设计而言不能满足需求。系统中需要保存的数据量不是很大,采用24C02即可满足要求。24C02串行E2PROM是基于I2C总线的存储器件,遵循二线制协议,它具有接口方便,体积小,数据掉电不丢失等特点。其引脚图如图4.12所示,各引脚的功能如表4.4所列。图4.1224C02引脚图表4.424C02引脚功能说明管脚名称功能A0
35、、Al、A2器件地址选择SDA串行数据/地址SCL串行时钟WP写保护VCC电源VSS地24C02接口电路设计如图4.13所示。由于只用一个AT24C02,因而AO、A1和A2可直接接地。WP接地,关闭写保护功能。FLASH芯片W25Q64FLASH芯片型号我们选择了W25Q64,其容量为64Mb,也就是8M字节,与上述AT24CO2一样都是串行传输,占用较少的IO口。该芯片与单片机之间的通信方式为SPI总线,如图4.14所示我们并没有用软件模拟SPI总线时序,而是采用了STM32自带的硬件SPI接口SPI2,这样传输速度会更快。SPI总线一般有四根信号控制线:片选线CS,两根数据线分别为主入从
36、出MISO和主出从入MOSI,还有一根时钟线SCLK。图4.14W25Q64电路图扩展Flash为了是存储汉字字库以及图片,因为STM32F1O3ZET6本身只具有512KFlash,如果用来存放字库,肯定不够,外扩的Flash可以存放32*32字体GBK码字库,16*16字体GBK码等字库,而且还存放了系统的桌面图片、背景图片。这样我们就可以在TFTLCD上显示16*16字体等字体的汉字和字符以及图片了。同时我们也可以存储我们喜欢的字体,如华文行楷等。蜂鸣器电路蜂鸣器按有无震荡源可分为有源蜂鸣器和无源蜂鸣器,有源蜂鸣器内部自带振荡电路,加适当的直流电源就可以发声,频率通常固定,易于操作;而无
37、源蜂鸣器一般需要通过外部的方波信号驱动,频率可以改变,一般为1到4KHz最佳,所以可以演奏出优美的音乐如生日快乐歌等。图4.15蜂鸣器电路在本系统中,蜂鸣器用作闹铃。此处,为了程序控制简单,我们选择了3.3V的有源蜂鸣器。如图4.15所示,由于单片机10口输出电流有限,所以我们的蜂鸣器驱动电路通过NPN三极管S8050放大电流,从而驱动蜂鸣器发声,同时在三极管的基极要加限流电阻。当PB8由程序配置输出高电平时,则基极与发射极有了大约3V的压降,三极管Q1导通,三极管Q1集电极被发射极拉低,此时蜂鸣器两端等于接了3.3V电压,所以发声。当PB8配置为低电平时,三极管Q1基极与发射极没有0.7V的
39、图GPS模块的引脚定义如表4.5所示:表4.5GPS模块引脚定义表序号名称说明1PPS时钟脉冲输出脚2RXD模块串口接收脚3TXD模块串口发送脚4GND地5VCC电源(3.3V5.0V)GSM模块SIM900A模块的对外接口电路图4.18SIM900A对外接口框图SIM900A对外接口框图如图4.18所示,对外接口包括:RS232接口,语音接口,控制线接口、SIM卡接口等。SIM900A模块初始化本系统使用的SIM900A模块是由12V1A电源供电的,在SIM900A初始化时,先给SIM900A模块上电,然后长按开机按钮,此时开机指示灯会变亮,当开机指示灯快闪时松开开机按钮,此时SIM900A
42、.19SIM900A实物软件部分本部分介绍了系统在软件部分的设计思想和典型代码。整个软件部分分为系统开发工具介绍、程序整体框图及思想、文件系统的移植、GUI程序的设计、主要功能的实现共五个部分。下面将对每个部分分别介绍。5.1开发工具介绍KeilMDKv5,该版本使用uVision5IDE集成开发环境,是目前针对ARM微控制器,尤其是ARMCortex-M内核微控制器最佳的一款集成开发工具。MDKv5向后兼容KeilMDK-ARMuVision4,以前的项目同样可以在MDKv5上进行开发,MDKv5同时加强了针对Cortex-M微控制器开发的支持,并且对传统的开发模式和界面进行升级,将分成两个
44、.3文件系统的移植FATFS是一个完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C语言编写,所以具有良好的硬件平台独立性,可以移植到8051、PIC、AVR、SH、Z80、H8、ARM等系列单片机上而只需做简单的修改。它支持FAT12、FAT16和FAT32,支持多个存储媒介;有独立的缓冲区,可以对多个文件进行读写,并特别对8位单片机和16位单片机做了优化。FATFS的特点有:1、Windows兼容的FAT文件系统(支持FAT12/FAT16/FAT32)2、与平台无关,移植简单3、代码量少、效率高4、多种配置选项支持多卷(物理驱动器或分区,最多10个卷)5、多个
45、ANSI/OEM代码页包括DBCS6、支持长文件名、ANSI/OEM或Unicode7、支持RT0S8、支持多种扇区大小9、只读、最小化的API和I/O缓冲区等。FATFS的这些特点,加上免费、开源的原则,使得FATFS应用非常广泛。FATFS模块的层结构如图5.2所示:UIMII图5.2FATFS模块的层结构图最顶层是应用层,使用者无需理会FATFS的内部结构和复杂的FAT协议,只需要调用FATFS模块提供给用户的一系列应用接口函数,如f_open,f_read,f_write和f_close等,就可以像在PC上读写文件那样简单。中间层FATFS模块,实现了FAT文件读/写协议。FATFS模
49、。为适应系统需要,做了一定的裁剪。底层驱动程序函数定义在GUI文件夹中的“LCD.C”和“GUI_BASIC.C”中,具体如下:voidLCD_Init(void);/初始化voidLCD_DisplayOn(void);/开显示voidLCD_DisplayOff(void);/关显示voidLCD_Clear(u16Color);/清屏voidLCD_DrawPoint(u16x,u16y,u16c);voidLCD_Fill(u16sx,u16sy,u16ex,u16ey,u16color);/填充单色voidLCD_WriteReg(u8LCD_Reg,u16LCD_RegValue)
50、;u16LCD_ReadReg(u8LCD_Reg);voidLCD_WriteRAM_Prepare(void);voidLCD_WriteRAM(u16RGB_Code);voidLCD_Scan_Dir(u8dir);/设置屏扫描方向voidLCD_Display_Dir(u8dir);/设置屏幕显示方向externvoidGUI_RectangleFill(uint32x0,uint32y0,uint32x1,uint32y1,TCOLORcolor);/画填充矩形externvoidGUI_Rectangle(uint32x0,uint32y0,uint32x1,uint32y1,T
57、ieQi(u16year,u8month,u8day,u8*JQdate);/获得节气信息u8GetJieQiStr(u16year,u8month,u8day,u8*str);/获得节气字符串u8Get_phonekeyvalue(u32x,u32y);/获得按键值u8calender_config_mode(void);/日历配置模式voidShow_keynum(u32count,u32lenth,unsignedcharch);/按键值的显示u8State0_Calendar(void);/万年历状态函数RTC_display_lcd(80,10,BLUE,WHITE,16,1);/显
59、输出。.使用外部信号控制定时器和定时器互连的同步电路。.如下事件发生时产生中断/DMA:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发);触发事件(计数器启动、停止、初始化或者由内部/外部触发计数);输入捕获;输出比较下面将介绍万年历的实现方法:在主界面的状态下点击秒表图标,系统检测到触摸屏有按键按下,在按键松开后自动跳转到秒表界面,此时系统会首先加载UI界面并且在while循环中不断检测按键的状态,当用户点击开始按钮时,秒表开始自动计时,并且把开始按钮变成暂停按钮,计时的源代码主要如下:if(sec_flag=1)sec_flag=0;sec+;if(sec59)sec=