全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统期末作业题目:基于 LED 与键盘的计算器设计通过键盘与 LED 实现多位数字(至少 2 位)的连续四则运算,通过键盘输入数字与运算符号,按回车键之后显示 LED 显示运算结果。提高部分:实现先乘除后加减运算。系统设计:将计算器的计算流程分成三个部分,分别为数据采集与存储、计算结果以及显示结果。数据的存储采用数组的形式存储,在数据采集的同时并调用显示,所以将 LED 的显示写成一个函数,这样方便被调用,简化程序。同时,存储数据时将数值与运算符分开存储,即采用两个数组存储,这样方便计算部分程序的设计。在计算部分,为实现先乘除后加减的运算,先遍历一遍存储运算符的数组,先计算乘除,选出乘除运算符对应下标的数据计算结果放入乘号或除号后面那个存储单元,设为 digiti+1,将 digiti数据单元赋值为 0,再通过判断 digiti数据单元前面的运算符号这里设为 symboli-1来选择数据 digiti+1与 digiti之间的运算符 symboli为加还是减,如果 symboli-1为减,则 symboli为减,否则为加。这样将数据数组和运算符数组经过计算乘除后重新赋值,在进行一次简单的加减运算便得到结果了。最后返回计算结果并显示。实验结果与讨论:本次试验可以说是完成的比较顺利,虽然和之前做过的简单运算有很大差别但是通过努力还是一一完成了,首先是连续运算,跟以前的实验对比这次采用的数组存储方式,可以存储更多数据,再就是运算,通过我不断改进与发现问题,最终实现了先乘除后加减的逻辑运算,结果还是很令人高兴的。程序流程图:否是否是否是附录:#include“uhal.h“#include“keyboard.h“#include“zlg7289.h“#include“44b.h“U32 symbol100,digit100;#pragma import(_use_no_semihosting_swi) / ensure no functions that use semihosting开始按下的键是否为数字?按下的键是否是 Enter键?计算结果存入数据存储数组显示结果数据存入运算符存储数组存储数据全部清零显示数据是否有键按下?extern int Zlg7289SIOBand;extern int Zlg7289SIOCtrl;int prezent(U32 k) U32 t;WriteSDIO(ZLG7289_CMD_DATA0|0);/数码管以方式 0 译码,第一个数码管亮WriteSDIO(k%10);/显示个位Delay(1);/延时if(k99)/键值大于 99 显示百位WriteSDIO(ZLG7289_CMD_DATA0|1);/发送十位数据WriteSDIO(unsigned char)(k%100)/10);Delay(1);WriteSDIO(ZLG7289_CMD_DATA0|2);/发送百位数据WriteSDIO(unsigned char)(k/100);Delay(1);WriteSDIO(ZLG7289_CMD_HIDE);/使一、二、三两位数码管显示WriteSDIO(7); if(k9)/键值大于 9 显示十位WriteSDIO(ZLG7289_CMD_DATA0|1);/发送十位数据WriteSDIO(unsigned char)(k/10);Delay(1);WriteSDIO(ZLG7289_CMD_HIDE);/使一、二两位数码管显示WriteSDIO(3);else/键值小于 10 不显示十位WriteSDIO(ZLG7289_CMD_HIDE);/使个位数码管显示WriteSDIO(1);int caculate(U32 p)U32 i=0,result=0;for(i=0;i=1elsesymboli=14;else if(symboli=12)digiti+1=digiti/digiti+1;digiti=0;if(i=1elsesymboli=14;for(i=0;ip;i+)if(symboli=14)digiti+1=digiti+digiti+1;else if(symboli=21)digiti+1=digiti-digiti+1;result=digiti;return result;int main(void)U32 key,key1=0,i=0,j=0,t=0,flag=0,k;ARMTargetInit(); /开发版初始化Uart_Printf(“nArm Target Init OK.“);Zlg7289_Reset();/zlg7289 复位while(1) key=GetKey();/得到按键值Delay(200);ZLG7289_ENABLE();/使 zlg7289占有同步串口Delay(5);/延时if(key10) k=1;flag+;else digitj=key1; j+; k=key;flag=0;if(k=1)if(flag=1)key1=key;else if(flag=2)key1=key1*10+key;flag=0;prezent(key1); if(k=100) /num 键当成置零键key1=0;for(i=0;i100;i+)symboli=0;for(j=0;j=100;j+)digitj=0;i=0;j=0;t=0;flag=0;prezent(key1);if(k=14|k=21|k=20|k=12) /加、减、乘、除 symbolt=key;t+; if(k=15) /回车 key=caculate(t);prezent(key
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深入探讨社工岗位的面试技巧与策略
- 社保综合柜员压力管理与情绪调节指南
- 数字化转型方案规划与实施指南
- 2025陕西西安市西北工业大学清洁高效透平动力装备全国重点实验室科研助理招聘3人笔试考试备考题库及答案解析
- 2025年12月重庆市万州区恒合土家族乡办事处公益性岗位招聘1人考试笔试备考题库及答案解析
- 2025重庆成飞新材料股份公司招聘3人考试笔试备考试题及答案解析
- 2025江西吉安市吉水县城控人力资源服务有限公司面向社会招聘2名保安重启、调整岗位要求及考试方式笔试考试参考题库及答案解析
- 2026北京大学天然药物及仿生药物全国重点实验室应届毕业生(含博士后)招聘2人笔试考试备考试题及答案解析
- 2026年乌海职业技术学院单招职业适应性测试题库含答案详解
- 2026年上海师范大学天华学院单招职业倾向性测试题库参考答案详解
- 2021珠宝翡翠玉石小红书运营指引
- 职业教育学知识点梳理
- GB/T 20516-2006半导体器件分立器件第4部分:微波器件
- 深圳市企业职工养老保险视同缴费年限核准申请表空表
- 上海体育馆及图书馆改造工程监理投标大纲 鲁班奖工程
- 本科毕业论文的写作课件
- 两次工业革命复习课件
- 人教PEP版四年级英语上册《Unit2-B-Lets-learn名师课件》
- 春秋战国淹城分析课件
- 急救技能操作要点培训
- 2022年6月浙江省高考地理试题评析
评论
0/150
提交评论