单片机课程设计报告计算器3.doc

上传人:仙人指路1688 文档编号:2385892 上传时间:2023-02-17 格式:DOC 页数:4 大小:39KB
返回 下载 相关 举报
单片机课程设计报告计算器3.doc_第1页
第1页 / 共4页
单片机课程设计报告计算器3.doc_第2页
第2页 / 共4页
单片机课程设计报告计算器3.doc_第3页
第3页 / 共4页
单片机课程设计报告计算器3.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《单片机课程设计报告计算器3.doc》由会员分享,可在线阅读,更多相关《单片机课程设计报告计算器3.doc(4页珍藏版)》请在三一办公上搜索。

1、单片机课程设计报告计算器学 院 信息工程学院 专 业 信息工程 (电子信息工程方向) 年级班别 2007级(1)班 学 号 3107002975 学生姓名 指导教师 答辩记录开始时间结束时间考题:答辩结果:主要特点或功能1) 实现加减乘除四则运算功能2) LCD显示运算式和运算结果3) 退格功能2010年 6 月1 设计要求:实现普通十进制计算器的功能,按键采用实验箱上的44键盘,显示采用实验箱上162点阵式字符LCD,键盘符号定义如下:1234567890+-*/=-右下角的“-”表示退格,即删除键,按一次删除LCD的最后一个数字或已经输入的符号。LCD的第一行显示运算式,第二行显示运算结果

2、。比如要计算机12+34,在键盘上按下相应键后,LCD的第一行显示“12+34”,按下“=”号后,LCD的第二行显示“=46”。其他功能同普通计算器相同(只实现加减乘除四则运算功能)。2 设计思路我们设计的计算器总共由4部分组成1)从键盘读取键值;2)把输入的键值在LCD上显示;3)退格键的操作;4)当输入“=”号时对于不同符号(+ - * / )的内部运算和LCD显示3 设计步骤首先用readkey(&key)函数判断有没有键盘操作,假如有就分三种情况: 1) 第一种是输入“09”的数字首先我们判断有没有输入“+ - * /”的符号标志位flag1,若flag1=0就把输入的数赋给num1,

3、并记录下num1的长度numlen1;假如flag1=1,则赋给num2,并记录下num2的长度numlen2;并且每输入一次就执行一次保存数字savedata(&num1,&key);和显示数字ili9320_PutChar(x,y,key+0,0x0000,0xFFFF);的函数。 2) 第二种是输入“+ - * /”四种符号假如输入的键盘上显示的“+ - * /”符号键,则让LCD显示“+ - * / ”的字符,执行显示函数,并且记录下符号的key值。 3) 第三种是输入“”首先判断有没有输入第二个数,假如输入了第二个数,就把最后一个数的最后一位去掉并且把显示LCD清除,分别用delet

4、edata(&num2); ili9320_PutChar(x,y,key+0,0xFFFF,0xFFFF);函数实现。假如没有输入第二个数,但是却输入了符号“+ - * /”,就把符号的显示删掉,并且把symbol=0。 4) 第三种是输入“=”号; 按照记录下来的symbol值分别实现“+ - * /”功能并且显示出来。4 程序流程(含流程图及详细步骤解释)5 操作方法 1) 用CodeWarrior IDE软件,新建一个基于MC9S12XE100的工程;2) 添加头文件keyboard.h,ili9320.h和源程序keyboard.cili9320.c;3) 按照设计步骤一步步编写ma

5、in函数;4) 编译,调试;6 设计过程遇到的问题以及解决思路及方法1) 首先是用函数ili9320_PutChar(x,y,key,0x0000,0xFFFF);显示不出想要的字符解:原来用函数ili9320_PutChar(x,y,key,0x0000,0xFFFF);显示的是key的ASCII码,要显示key值的符号就要加上0,所要要用函数ili9320_PutChar(x,y,key+0,0x0000,0xFFFF)实现。2) 关于LCD显示问题:开始时我们输进去的数都只显示最后的一个数解:我们每执行一次ili9320_PutChar(x,y,key+0,0x0000,0xFFFF);

6、函数都要让LCD的下一个显示退一个字符的位置,即x=x+8;3) 计算1+1的时候结果“=00002”,前面多了一堆没用的“0”解:通过设置一个符号标志位sign跟一个指针*str来实现,一开始置sign=1,当检测到*str!=0&sign=1时开始打印显示字符,并置sign=0跳出循环检测; 4) 当输入第一个数小于第二个数也就是结果小于0时,负号无法显示; 解:用指针*str从高位开始检测,当检测到第一位*str=-号时,打印-并通过一个变量j自加,开始检测后面的字符;5) 第二次运算之后等于号显示有多个! 解:通过清屏函数clear_result来实现,每次运算之后都把num1跟num2清0。每次输入数值之前都检测numlen1跟numlen2的长度, if(numlen1+numlen2)=0)就初始化,把之前一次的运算结果清屏来实现;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号