课程设计—模拟计算器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌
入
式
课
程
设
计
课题:基于uCOS/uCGUI的模拟计算器实现报告:张昌世自动化091 109031027
小组成员:刘锋自动化091 109031023
陈奇英自动化091 109031001
彭桂贤自动化091 109031002
指导老师:陈才
摘要:
计算器这一小小的程序机器实际上是从计算机中割裂出来的衍生品,但因其方便快捷的操作模式,已经被广泛应用于工程、学习、商业等日常生活中,极大的方便了人们对于数字的整合运算。现今的计算器已经不仅仅停留在传统的硬件上,而是越来越软件化,它可以在手机里,在电脑上,在许许多的的电子产品上。所以有必要在自己平时学习的开发板上做个带界面显示的计算器来证明下自己的能力。
引言:
简单的计算器包括0~9的数字输入键,小数点输入键,+、-*、/、=运算键等,还可以加入其他运算:如三角运算(sin,cos,tan,cot等),一些当木运算(平方,开方,阶乘等)。由于条件和能力有限,所以就做个能实现四则运算的简易计算器。
计算器的程序设计实际上富有一定的难度,虽然乍一想很简单,只要实现下加减乘除运算,然后显示出来就可以了,但实际上运算结果跟图像界面的数据交换,还有浮点数的处理等都很折腾人。通过本次设计,体会到了学习的不易,还有自己能力上的不足!
一、课题描述:
在STM32开发板上实现简易的计算器。计算器界面显示在TFT彩屏上,采用触摸屏上模拟按钮来实现数据及运算符的输入。最后把运算的结果显示在彩屏。最基本要求:有加减乘除运算,有带小数点的运算。
二、课题分析
a)、硬件要求:
处理器选择:STM32F103ZE,这款处理器具有512K的flash,64K的RAM,足够大的空间,可以让程序员的可以有更大的发挥空间,而不用为节省空间而上脑筋。
TFT彩屏:带触摸的TFT彩屏,3.2寸,分辨为240*320的真彩彩屏。
JLink仿真器:使用JLink v8仿真器,仿真器能够下载程序、在线仿真,便于程序编写与错误检查。
b)、软件要求:
操作系统:使用uC/OS嵌入式实时操作系统。由于触屏要实时响应,所以需要使用操作系统,并给触屏专门建立一个任务。CPU其他的操作组成一个任务。程序在两个任务中相互切换。
图形软件:使用uCGUI嵌入式图形界面软件。uCGUI是个小型的图形软件,包括有基本的图形显示,还有许多图形控件,如:按钮,编辑框,窗口,滚动条等等,而我们的计算器的制作就要用到其中的按钮、编辑框和窗口3个控件。
固件库:STM32编程,可以使用固件库,ST公司提供STM32处理器的固件库,以方便程序员编程,缩短了项目的编程周期。
c)、设计方案:
界面布局:
1个编辑框:位于彩屏左上角,占整屏的1/5左右,用于数据输入显示,运算
符的输入显示。编辑框内最大输入和显示的长度为10,这就限制了数据的范
围。
11个数子按钮:位于左下角开始向上向右的按钮队列,分别为:’1’,’2’,
‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘0’,‘.’。可以输
入操作者任意想要的数据,进行运算。
6个运算符按钮:位于屏幕偏右的数来第一列和第二列的位子上。实现加减乘
除倒数平方6个运算,对应的按钮分别为:‘+’,‘-’,‘*’,‘/’,
‘1/X’,’X^2’。
2个操作按钮:位于屏幕右侧数来第一列的位子上。功能分别为等号和清楚。
对应着‘=’和‘clear’两个按钮。等号得到计算得到的结果,清除键清楚编
辑框上的数字和取消当前运算操作的功能
1个说明按钮:位于屏幕的右上角。对应’About’按钮,点击该按钮,就会跳出
一个对话框,上面显示本课程设计的小组成员们名字。
1个对话框:当点击‘About’按钮时,就会跳出来,对话框上显示四个课程设
计小组成员的姓名,还有一个“OK“按钮,点击“OK”按钮就会结束当前的
对话框,关闭对话框。
功能说明:
1、数字键被按下去时,在编辑框内显示输入的数,这里需要注意的是,编辑
框内的内容时字符串的形式,例如按下12时,并不是表示数字12,而是字符
串“12”,先是按下‘1’键,再按下‘2’键,按下第二个键的时候不能将编
辑框的第一个数覆盖掉,而是要接到第一个数后面。
2、当运算符按钮被按下时,把按下去之前的编辑框的字符串转化成负浮点数
形式保存在var[]中,然后将编辑框显示’+’,如果运算符被按下了两次,表示之
前已经有两个变量要进行了计算,直接显示结算结果。
3、当按下"1/X",和"X^2"时,并不增加变量的个数,只是将原先变量运算后
的结果覆盖原先变量,参加后续的计算。
4、按下"About"键是,会跳出一个对话框,该对话框支持移动,故可以将其拖
到屏幕任意位子,点下对话框上的"OK"键,就会关闭对话框。之后再点下
"About"键后对话框优惠弹出来。
三、相关介绍说明
a)、STM32F103ZT6E介绍:
ARM 32位Cortex-M3 微处理器,72MHz频率, 512kB Flash, 64kB SRAM,灵活的静态存储器控制器存储器:SRAM, PSRAM, NOR 和NAND Flash,PLL, 内置的RC正当频率为8MHz 和32kHz, 实时时钟,嵌套中断控制器, 节电模式, JTAG 和SWD两种模式,4个同步16位计时器与输入捕获, 输出比较和PWM波,2个16位的高级定时器, 2个16位的基本定时器, 2 个16位的看门狗定时器,系统时钟定时器, 3个SPI/I2S模块, 2个I2C模块, 5个USART模块, 一个USB 2.0 全速接口,一个CAN 2.0B Active, 3个112位16通道A/D 控制器, 2个12位的D/A 控制器, 1个SDIO接口, 快速的I/O 口。b)、uCOS介绍:
μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。
μC/OS-II的前身是μC/OS,最早出自于1992 年美国嵌入式系统专家Jean brosse 在《嵌入式系统编程》杂志的5 月和6 月刊上刊登的文章连载,并把
μC/OS的源码发布在该杂志的B B S 上。
μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。
μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。
uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。
uC/OS-II以源代码的形式发布,但并不意味着它是开源软件。你可以将其用于教学和私下研究(peaceful research);但是如果你将其用于商业用途,那么你必须通过Micrium获得商用许可。
c)、uCGUI简介
UCGUI是一种嵌入式应用中的图形支持系统。它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。它的设计架构是模块化的,由不同的模块中的不同层组成,由一个LCD 驱动层来包含所有对LCD的具体图形操作。
UCGUI可以在任何的CPU上运行,因为它是100%的标准C代码编写的。UCGUI能够适应大多数的使用黑白或彩色LCD的应用,它提供非常好的允许处理灰度的颜色管理。还提供一个可扩展的2D图形库及占用极少RAM的窗口管理体系。
UCGUI的设计目标是为使用LCD作为图形显示装置的应用提供高效的/与LCD控制器独立及处理器独立的图形用户接口。它适合于单任务环境及多任务环境,如私用的操作系统或是商业的RTOS(实时操做系统。UCGUI以C源码形式提供,并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。它包含以下特性: