下载此文档

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


文档分类:高等教育 | 页数:约20页 举报非法文档有奖
1/20
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/20 下载此文档
文档列表 文档介绍
华南师范大学嵌入式综设实验报告选题:基于 ARM 和 UCOS-II 系统的小型计算器指导老师: 王剑 x组员(学号):( 20122302xxx )( 20122302xxx ) 一、实现功能实现五位整数的加减乘除带括号的运算,由于实验箱的键盘数量有限,于是我们将键盘设置为虚拟的两层结构,其使用方法如下: ( 1)第一层键盘使用指南 123( 456) 789 第二层 0. 第一层= (2 )第二层键盘使用指南+%-*/ 二、系统流程图开始两次扫描键盘,获取键码 YY NYNYNYNYNYN、 YNY num = (num*10)+(ch-'0'); 输入的字符是否为数字字符是否为(是否为) 是否为+是否为-是否为* 处理左括号 Push(Sym,&SymTop,'('); 处理右括号 Push(Sym,&SymTop,' ) '); 处理加号 Push(Sym,&SymTop,' + '); 处理减号 Push(Sym,&SymTop,' - '); 处理乘号 Push(Sym,&SymTop,' * '); 是否为./ 处理除号 Push(Sym,&SymTop,' / '); 是否为清零计算器清零,使栈清空 NY 计算原理?计算原理定义一个操作数栈 sym , 一个操作符栈 um 。思想是: 置操作数栈为空, 操作符栈压入元素"#"( 它具有最高优先级), 依次读入表达式中的每个字符 CH ,如果 CH 是操作数,则 CH 压入操作数栈,如果 CH 是操作符,那么将 CH 和操作符栈顶元素进行优先级比较(如‘×’优先级高于‘+’)。如果优先级大于当前栈顶元素,那么将其压栈, 如果其优先级小于当前栈顶元素, 那么执行 op= sym .pop(); ( 取当前栈顶操作符), a= um .pop() (取当前栈顶操作数存入临时变量 a ) ;b= sym .pop() ( 取当前栈顶操作数存入临时变量 b ) ;c= 计算(a op b); sym .push(c); 如果优先级相等,则当前操作符出栈。重复上述操作直到表达式处理完毕。最后操作数栈剩余的操作数就是计算的最终结果。三、程序#include "" /* uC/OS interface */ #include "" #include "" #include "" 是否为= 计算, 调用 Calculate(int right,int left,int symbol); 显示当前数值或运算符/* 任务栈*/ 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(

嵌入式课程设计实验报告-计算器 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数20
  • 收藏数0 收藏
  • 顶次数0
  • 上传人63229029
  • 文件大小195 KB
  • 时间2017-06-02
最近更新