触摸屏计算器设计方案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微控制器课程设计方案

基于STM32的多功能计算器

一、总体方案设计:

1、基本功能:

利用触摸屏实现加减乘除四则运算的单次或连续地整型、浮点型数据运算,并将表达式和结果实时显示在液晶屏上;支持带优先级的表达式求值;实现三角函数的运算;当输入错误的表达式时,将对应的错误信息显示出来,提醒用户纠正。

2、扩展功能:

进行十六进制的数值运算,并显示以十六进制表示的答案。二、系统硬件设计:

微控制器:stm32开发板;

触摸屏模块:stm32开发板配套液晶屏(4.5寸)。

三、系统软件设计:

1、系统初始化:

系统时钟初始化—>延时初始化—>LCD初始化—>触摸屏初始化—>显示计算器输入界面。

2、显示模块设计:

由LCD初始化程序设置界面。通过屏幕绘制将按键显示出来,其次由定时器中断程序定时刷新显示的表达式,将表达式于显示窗口实时显示出来。

3、计算功能程序设计:

(1)运算功能的实现:

i基本运算

通过扫屏得到输入信息,将指令分为数字类、符号类、命令类三类指令。对于数字类指令(如1、2、3、.、-、4……),创建数组,用以保存输入的数值,并在满足输入终止的判断条件(出现符号或命令类指令)后,重新排序,用相应函数将数组转为数字,以便进行下一步计算;对于符号类指令(如+、-、*、%……),将其作为数字类指令输入结束的判断,同时在下一个符号结束后进行第一个符号两边数字的运算;对于命令类指令(主要针对=),进行最终的计算,并将相应结果显示在对应位置。

ii科学运算(包含优先级)

在基本运算的基础上,在得到命令类指令之前,不进行任何运算,将得到的数字和符号都储存到数组中,在得到命令类指令后,将符号类的指令进行优先级排序,然后依次找出符号两边的数字进行计算,并将得到的结果存入处理后的数组中,重复以上步骤直到得到最终结果。

总体运算过程流程图如下:

iii三角函数运算

利用#include 直接调用三角函数相关程序。

考虑调用三角函数运算时,括号里面实际不是所输入的数字,而是输入实际的弧度值,即将数字转换成弧度值:

#define pi 3.141592653f

float ToRad(float degree)

{

return (degree*pi/180.0);

}。

iv浮点型数运算

为得到的数字进行类型定义。

v十-十六进制转换

拟直接利用C中原有的算法进行进制转换,或采用除n取余法。(2)实时显示功能实现

将得到的数字、符号类指令及时在显示栏显示出来,并在相应位置加上注释,如十六进制、科学型等。

对于显示函数,先判断当前进制数,然后再将需要显示的数字转换为当前进制数再显示。

(3)错误提示功能实现

编写判断程序,若出现连续输入两个运算符号,或除数为0等情况时判断为错误信息,将在显示区域以“error”予以标注,从而提醒用户重新输入。

四、重难点分析

1、对输入指令的判断

拟根据读取触摸按键位置判断按键类型,然后再进一步确定具体符号或数字,从而获知用户具体操作目的。

2、将连续输入的多个单个数转为多位数

拟创建数组保存依次输入的单个数和少量特殊符号如“-”、“.”等,在接收到结束信息后,将数组进行逆序排列,并使用相应函数将数组转化为数字。

3、含有优先级的科学运算的实现。

拟创建两个数组,一用于存储转化后的数字,另一用于存储依次得到的符号,在第二个数组中按照先乘除后加减的原则进行优先级排列,得到符号顺序后依次调用符号两边的数进行计算,并将计算得到的数存入第一个数组,重复直至得到最终结果。

4、对于错误输入的判断

首先对于可能的错误输入有清晰的界定,然后再考虑判断条件,尽可能使微处理器自行判断手误和逻辑错误,并作出相应调整,如对于连续重复输入“.”、“+”等符号,则默认输入一次,而对于连续输入不同符号或输入数字超过处理范围则直接发出警告,即于显示屏显示“error”。

5、其他细节问题

如得到的计算结果的精确度等。

相关文档
最新文档