ImageVerifierCode 换一换
格式:DOC , 页数:14 ,大小:1.39MB ,
资源ID:470850      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-470850.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于STM32的简易计算器Word文档格式.doc)为本站会员(聆听****声音)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于STM32的简易计算器Word文档格式.doc

1、以8位机的价格,得到32位机,是STM32最大的优势。 2. 超多的外设。STM32拥有包括:FSMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、ADC、DAC、RTC、DMA等众多外设及功能,具有极高的集成度。 3. 丰富的型号。STM32仅M3内核就拥有F100、F101、F102、F103、F105、F107、F207、F217等8个系列上百种型号,具有QFN、LQFP、BGA等封装可供选择。同时STM32还推出了STM32L和STM32W等超低功耗和无线应用型的M3芯片。 4. 优异的实时性能。84个中断,16级可编程优先级,并且所有的引脚都可以作为中断输入。 5.

2、 杰出的功耗控制。STM32各个外设都有自己的独立时钟开关,可以通过关闭相应外设的时钟来降低功耗。 6. 极低的开发成本。STM32的开发不需要昂贵的仿真器,只需要一个串口即可下载代码,并且支持SWD和JTAG两种调试口。SWD调试可以为你的设计带来跟多的方便,只需要2个IO口,即可实现仿真调试。 MCU部分原理图如图1-1所示:图1-1MCU部分原理图 1.2 复位电路 STM32F103的复位电路如图1-2所示:图1-2 因为STM32是低电平复位,所以设计的电路也是低电平复位的,这里的R2和C10构成了上述复位电路。1.3 电源电路STM32F103板载的电源供电部分,如图1-3所示:图

3、1-3图中,有两个稳压芯片:MP2359和AMS117,DC-IN用于外部直流电源流入,范围是DC6-24V,输入电压经过MP2359DC-DC芯片转换为5V电压输出,其中D4是防反接二极管,避免外部直流电源极性相反的时候,烧坏开发板,K1为开发板的总电源开关,F1为1000ma自恢复保险丝,用于保护USB。AMS117为3.3V稳压芯片,给开发板供电。2.TFT-LCD电阻触摸屏2.1 电阻触摸屏原理电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)导电层,上面再盖有一层外表面硬化处

4、理,光滑防擦的塑料层,它的内表面也涂有一层涂层,在它们之间有许多细小的(小于1/1000英寸)的透明隔离点把两层导电层隔开绝缘。当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在X和Y两个方向上产生信号,然后送触摸屏控制器。控制器侦测到这一接触并计算出(X,Y)的位置,再根据获得的位置模拟鼠标的方式运作。这就是电阻技术触摸屏的最基本原理。电阻触摸屏的优点;精度高、价格便宜、抗干扰能力强、稳定性好电阻触摸屏的缺点:容易被划伤、透光性不太好、不支持多点触摸TFT-LCD模块原理图如图2-1所示:图2-1 TFT-LCD模块采用2*17的2.54公排针与外部连接,接口定义如图2-2

5、所示:图2-2 从图2-2中可以看出,TFT-LCD模块采用16位的并方式与外部连接,之所以不采用8位的方式,是因为彩屏的数据量比较大,尤其在显示图片的时候,如果用8位数据线,就会比16位的方式慢一倍以上,所以选择16位接口。 TFT-LCD模块采用8080并行接口方式,使得MCU可以快速的访问,该模块的8080并口有如下信号线: CS:TFT-LCD片选信号线。 WR:向TFT-LCD写入数据。 RD:从TFT-LCD读取数据。 D15:0:16位双向数据线。 RST:硬复位TFT-LCD。 RS:命令/数据标志(0,读写命令;1,读写数据)。2.2 触摸屏控制芯片从图2-1中可以看出,TF

6、T-LCD模块的触摸屏控制芯片为XPT2046。XPT2046是一款4导线制触摸屏控制器,内含12位分辨率125KHZ转换速率逐步逼近型A/D转换器。XPT2046支持从1.5V到5.25V的低电压I/O口接口。XPT能通过执行两次A/D转换查出被按的屏幕位置,除此之外,还可以测量加在触摸屏上的压力。内部自带2.5V参考电压可以作为辅助输入、温度测量和电池监测模式之用,电池监测的电压范围可以从0V到6V。3.FSMC简介大容量,且引脚数目在100脚以上的STM32F103芯片都带有FSMC接口,本次实验所采用的开发板的主芯片为STM32F103ZET6,是带有FSMC接口的。FSMC,即灵活的

7、静态存储控制器,能够与同步或异步存储器和16位PC存储卡连接,STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器。FSMC框图如图3-1所示:图3-1从图3-1中我们可以看出,STM32的FSMC将外部设备分为3类:NOR/PSRAM、NAND设备、PC卡设备。它们共用地址数据总线等信号,它们具有不同的CS以区分不同的设备。本次实验所使用的TFT-LCD就是用FSMC_NE4做片选,其实就是讲TFT-LCD当成SRAM来控制,之所以TFT-LCD可以被当成SRAM设备来使用,是因为一般的外部SRAM的控制有:地址线(如A0-A18)、数据线(

8、D0-D15)、写信号(WE)、读信号(RS)、片选信号(CS),如果SRAM支持字节控制,那么还有UBLB信号。而TFT-LCD的信号包括:RS、D0-D15、WR、RD、CS、RST和BL等,其中正在操作的LCD的时候需要用到的就只有:RS、D0-D15、WR、RD和CS。其操作时序和SRAM的控制完全类似,唯一不同的是TFT-LCD有RS信号,但没有地址信号。TFT-LCD通过RS信号来决定传送的数据是数据还是命令,本质上可以理解为一个地址信号,比如把RS接在A0上面,那么当FSMC控制器写地址0时候,会使得A0变为0,对TFT-LCD来说,就是写命令。而FSMC写地址时候,A0将会变为

9、1,对TFT-LCD来说就是写数据了。这样,就可以把数据和命令区分开了。此次实验选择的开发板是将RS连接在A10上面。STM32的FSMC支持8/16/32位数据宽度,这里用到的LCD是16位宽度,所以在设置的时候选择16位宽度,STM32的FSMC将外部存储器划分为固定大小为256M字节的四个存储块,如图3-2:图3-2从图中可以看出,FSMC总共管理1GB的空间,拥有4个存储块(Bank),此次实验用到的是存储块1。STM32的FSMC存储块1(Bank1)被分为4个空间,每个区管理64M字节空间,每个区都有独立的寄存器对所连接的存储器进行配置。Bank1的256M字节空间由28根地址线(

10、HADDR27:0)寻址,其中HADDR25:0来自外部存储器地址FSMC_A25:0,而HADDR26:27对4个区进行寻址,Bank1存储区选择表如图3-3所示:图3-3其中需要注意HADDR25:0的对应关系:当Bank1接的是16位宽度存储器的时候:HADDR25:1FSMC_A24:0;当Bank1接的是8位宽度存储器的时候:1FSMC_A25:不论外部接8/16位宽设备,FSMC_A0永远接在外部设备地址A0。此次实验使用的是Bank1的第4区,即HADDR27:26=11,进行配置对应第4去的寄存器组,来适应外部设备。4AT24C02简介AT24C02是一个2K串行CMOS E2

11、PROM,内部含有256个8位字节,该器件通过IIC总线接口进行操作。本次实验需要先向24C02读取数据判断触摸屏是否已经校准过了,如果没有校准,则执行校准程序,校准过后再进入电阻触摸屏测试程序,如果已经校准了,就直接进入电阻触摸屏程序。 STM32F103与24C02电路连接如图4-1所示:图4-1管脚名称及功能: A0 A1 A2:器件地址选择 SDA:串行数据或地址 SCL:串行时钟 WP:写保护 VCC: 1.8V6.0V GND:地三系统软件设计 1.系统整体流程系统在复位或者上电之后,开始执行各个模块之间的初始化,其中主要的是触摸屏初始化,初始化之后,单片机需要进行检测触摸屏是否已

12、经校准,如果还未进行校准,将进入校准模式进行校准,首次校准完成,之后再进行使用计算器时是不需要进入校准,有就是说单片机只需要进行一次校准,之后的测试将跳过此阶段。校准阶段完成后,将进入计算器主界面,开始输入第一个参数,也就是需要进行运算的数字,之后选择需要对数字进行的操作方式符号“+”、“-”、“*”、“/”、“”和“” ,然后输出第二个参数,按下“=”键得出想要的结果。若还需要在此结果上进行计算,可以在得出结果后,直接再次选择需要进行的操作方式,再输入下一个参数,即可得到结果,此次设计的计算器是可以支持连续计算操作。若需要重新计算,按下界面上的“RST”键清除内容,便可开始新的计算。触摸屏模

13、块流程图如3-1所示:开始 是否校准 否主界面进行校准 是 图3-1程序运算表达式流程图如图3-2所示:显示结果输入第二个参数开方平方除乘减加输入第一个参 数 图3-22.软件实现方法2.1主函数 程序中主函数主要是包括延时函数初始化、中断优先级分配、LCD初始化函数、定时器初始化、内存管理初始化、GUI时钟使能、GUI初始化以及计算器主界面。由于移植了emwin设计界面,需要用到定时器定时查询触摸,内存分配以及使能GUI时钟。主函数代码如图3-3所示: 2.2 触摸按键函数在程序初始化各个模块之后,开始检测触摸按键函数,是否有按键按下来执行相应的操作。触摸屏检测到相应的键值的方法是:在使用触

14、摸屏时,通过手指触摸所要的键值,由于手指触摸需要一定的区域,所以通过触摸屏上的坐标来划分一定范围给每一个键值,这样就可以通过手指触摸到某一块区域来确定触摸到哪个键值。触摸按键函数代码(仅以数字1为例)如图3-4所示: 图3-42.3基本计算方法实现函数在使用计算器计算时,需要判断当前是采用加减乘除哪种运算,在程序中通过当手指触摸到其中一个运算符号(如“+”),使用一个标识位来进行标识,然后在进行运算时候,通过这个标识位来判断是进行哪种运算。最后在运算完成之后,清除相应的标志位,以免影响下一次判断。计算方法实现代码(仅以加法为例)如图3-5所示: 图3-5图中a是加法符号标识位,当按下“+”时,

15、标志位a将置1。attend是输入的第一个参数,在判断有运算符号按下后,attend将第一个参数赋值给attend1,然后attend继续存储第二个参数,以免第二个参数将第一个参数覆盖。函数displayequal()是计算实现函数,通过按下“=”来调用此函数,当有“=”按下时,执行相应的运算,并同时将相应的运算标志位清零,如上图所示,标志位a被清零。2.4 连续计算方法实现在一般情况下,计算器的使用都需要用到连续计算,也就是算到一个数之后,需要对算出来的数继续计算。在本次实验中实现这种方法的基本思路是:在进行连续计算时,需要判断这次计算是否是第一次,因此需要设定一个标志位来判别,本次程序中采

16、用标志位f来进行判别,当有任何一种计算符号(+、-、*、/、)被按下,标志位f就进行加1,程序代码如图3-6(仅以“+”为例):图3-6在判断是否是第一次计算之后,在接下来的计算中需要对标志位f的状态执行不同的操作,当标志位f为1时,也就是进行第一次计算,操作与上面介绍的基本计算方法实现函数的操作是一样的,当标志位f大于1时,也就是正在进行连续计算,此时的操作是,将上一次计算的结果result赋予给attend1,然后进行输入第二操作数,因为此时是按下计算符号,attend的值还未输入,此时的上一次计算结果为第一操作数。第二操作数输入之后,按下“=”键便可得到相应的答案,程序代码如图3-7(仅

17、以“+”为例):图3-72.5 EMWIN相关函数 在本次实验中,为了使计算器界面在显示和操作上更为人性化,移植了EMWIN程序,因为用LCD本身的函数设计界面在显示效果上比使用了GUI设计要差了许多。EMWIN源码移植到工程中的文件如图3-8所示:图3-8在工程中,EMWIN_Config是LCD接口以及emWin配置文件,其中GUI_X.c是GUI所依赖的外部配置,GUIConf.c是GUI初始化配置,GUIDRV_Template.c是GUI读点、画点、画线等函数配置,GUI_X_Touch_Analog.c,LCDConf_FlexColor_Template.c是LCD初始化配置。EMWIN_LIB是STemWin函数库。使用GUI函数显示的计算器主界面程序代码如图3-9所示:图3-9四 实验心得 本次实验中,由于本人能力有限,只设计了一个简单的计算器,只能够 简单的“+”、“-”、“*”、“/”、“”和“”,而且在进行减法运算时,只能够大数减小数,未能做到显示负数,在进行开方和除法运算时,只能进行整数计算,无法显示小数部分。在使用EMWIN设计界面时,也只是用到了它的基本显示函数,未能深入的使用到其它更为有效的函数。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2