嵌入式课程设计实验报告-计算器.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式课程设计实验报告-计算器

华南师范大学嵌入式综设实验报告 选题:基于ARM和UCOS-II系统的小型计算器 指导老师: 王剑x 组员(学号):xx) xx) 一、实现功能 实现五位整数的加减乘除带括号的运算,由于实验箱的键盘数量有限,于是我们将键盘设置为虚拟的两层结构,其使用方法如下: (1)第一层键盘使用指南 1 2 3 ( 4 5 6 ) 7 8 9 第二层 0 . 第一层 = (2)第二层键盘使用指南 + % - * / 二、系统流程图 Y Y N Y N Y N Y N Y N Y N 、 Y N Y N Y 计算原理 计算原理 定义一个操作数栈,一个操作符栈 思想是:置操作数栈为空,操作符栈压入元素#(它具有最高优先级),依次读入表达式中的每个字 如果优先级大于当前栈顶元素,那么将其压栈, 如果其优先级小于当前栈顶元素,那么执行op=sym.pop();(取当前栈顶操作符),a=um.pop()(取当前栈顶操作数存入临时变量a);b=sym.pop()(取当前栈顶操作数存入临时变量b);c=计算(a op b); .push(c); 如果优先级相等,则当前操作符出栈。 重复上述操作直到表达式处理完毕。 最后操作数栈剩余的操作数就是计算的最终结果。 #include Includes.h /* uC/OS interface */ #include option.h #include 2410lib.h #include uhal.h /* 任务栈 */ OS_STK StackLED[STACKSIZE]= {0, }; // 任务LED任务栈 OS_STK StackSEG[STACKSIZE]= {0, }; // 任务SEG任务栈 /* 任务ID */ char IdLED = 1; // 任务LED ID char IdSEG = 2; // 任务SEG ID /* 任务处理函数 */ void TaskLED(void *Id); // 任务LED任务处理函数 void TaskSEG(void *Id); // 任务SEG任务处理函数 void TmrFunc1(INT8U arg); /* 定时器1*/ OS_TMR *Tmr1; char ch,ch2; char print_1[1]; char print_2 [6]; /*用于串口输出*/ int Page=0; /* 键盘的页面标志 */ /*栈定义*/ #ifndef STACK_SIZE #define STACK_SIZE 64 #endif int Num[STACK_SIZE];/*数字栈 */ int NumTop=0; int Sym[STACK_SIZE];/*字符栈,用来储存操作符 */ int SymTop=0; void Push_(int * stack,int * top,int val); int Pop_(int * stack,int * top); /*声明*/ #define DELAYTIME 1 extern unsigned char seg7table[16]; int Calculate(int right,int left,int symbol); #define DELAYTIME 1 void product(void); int a,b,c; char number[255]; char sign; int now=0; int num=0; int SymTmp;/*对操作符处理时的中间变量 */ int ResTmp;/*得数的中间变量 */ int Flag = 0;/*表示数字不为空的标识符 */ int count=0; /* * 跑马灯闪烁函数,调用一次,四个跑马灯由亮变灭或者由灭变亮 */ void User_LED_Blink(void) { static int led_status = 0; led_status += 1; if(led_status % 2

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档