欢迎来到天天文库
浏览记录
ID:61488291
大小:59.00 KB
页数:7页
时间:2021-02-05
《单片机(飞思卡尔)课程设计报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、答辩记录开始时间结束时间考题:答辩结果:主要特点或功能1十进制复合运算、连续运算2退格,清屏、重启3触屏、键盘混合操作4综合考虑了各种非正常输入报错并重启2011年6月1设计要求:LCD的第一行显示运算式,第二行显示运算结果。比如要计算机12+34,在键盘上按下相应键后,LCD的第一行显示“12+34”,按下“=”号后,LCD的第二行显示“=46”。其他功能参考普通计算器。扩展功能:负数、小数运算、复合运算。连续运算、2进制、8进制运算。亦可直接在LCD上显示一个计算器,用触摸屏操作。2设计思路在LCD上显示一个与键盘功能相同的计算器,可实现用键盘、触摸屏混合操作。1、在LC
2、D显示屏上按下某一个符号或者在键盘上某一个按键符号时,将相应字符存入数组中并显示在LCD上。2按下“=”就运算处理并在第二行显示计算结果。3、按下“C”就进行退格操作。4、按下“=”后显示结果,并且能连续运算,其中,将操作数和操作码全部显示在第一行,第二行显示当前计算结果。5、当出现连续按两个操作符、按等号前一个字符为操作符、最开始按下的不是操作数等非法输入时,自动在LCD屏幕上报错并实现清屏重启计算器。3设计步骤1、添加基本计算器的+、-、*、/四则运算和退格功能;2、在1的基础上实现复合运算和连续操作;3、在LCD上通过调用函数在下方画出计算器的按键图画并实现与键盘同等的
3、功能;4、综合调试并进行优化。1程序流程(含流程图及详细步骤解释)初始化否有按键?否输入表达式是清屏重启是退格操作非法输入计算结果显示连续运算?清屏完成运算否是是退格键?“=”?LCD显示计算器是是否详细步骤解释程序运行时即进行初始化,在LCD显示屏上显示计算器界面。接着判断是否有键盘按键按下或者有触屏,没有就继续扫描判断,有则将按下的键所对应的字符存入数组savedata。在此之中,也在判断键入的字符是否是退格键,如果是则将上一个字符清除掉。当检测到字符“=”时,将savedata数组中所存储的字符分离,其中,数值存在操作数数组op1中,操作符存在操作符数组op2中,然后进
4、行运算。运算开始时,先扫描op2数组,当检测到操作符则将op1数组中对应操作符前后的两个操作数进行运算(先乘除后加减),结果放在两个操作数的前一个的位置,将op1和op2数组向前移动一个位置以覆盖已经运算过的操作数和操作符。当继续进行连续运算时,将字符继续存到savedata数组后面,否则清除op1的值,将字符存到savedata数组第一个开始的位置。程序中考虑了各种非法输入的情况:当连续输入两个操作符时、当按“=”时检测到前一个字符是操作符时、当程序第一个字符不是操作数时,都报错,自动清屏并重启计算器。按照实际中计算器的原则,当按下“=”后,退格键不能清除,比如1+2=3;
5、不能将“2”、“+”、“1”退格。如果是连续运算,继续按下“-3+8/2”时,退格键有效,能清“-3+8/2”中的字符。清除后继续连续运算。1操作步骤及方法下载完程序后:1、普通计算:例如计算123+456,直接在显示屏上连续触发“123+456”,然后触“=”就可以在第二行显示=579;2、连续运算。例如先计算123+456,结果为579,此时再按下“+”“1”先在第一行显示123+456+1,在第二行就会显示=580,再按下“-”“9”,第一行显示123+456+1-9,在第二行就会显示=571,依次类推。3、当输入的字符是非法输入时,在LCD第三行显示illeaglee
6、nter!然后自动清屏重启计算器。2设计过程遇到的问题、原因及解决方法日期时间问题和难点描述问题的原因及解决思路和方法2011-6-15显示不了负的结果。难点在于要先对负值进行处理原因:没有判断最综计算的结果是否出现负值。解决方法:先判读结果的正负,将‘-’或‘0’存入结果数组最后一个位置,如果是负值则将负值取反,然后在将结果从结果数组第一个位置开始存入结果的各个位的,再把结果数组在LCD上逐个显示出来2011-6-16计算结果要显示在屏幕上时数值前总是有0原因:问题在1的原因上,正负号放在数组最后一个位置,计算结果的各个位放数组的第一个开始的位置,数组中间肯定会有位置是默认
7、存入0的。解决方法:重写显示函数ili9320_Text(),在将结果数组的内容输出到LCD上时,判读数值前是否为0,是则跳过不显示。2011-6-17计算结果如果等于零,那总是显示不出来,其他计算结果正确.原因:问题在2的原因上,当结果为正时,我默认符合是0(就算我将正号标志符改成空格或其他也是一样),如果结果为0,则数组中全为0,没有所谓的非0数值,显示结果肯定是全部跳过不显示。解决方法:在每次计算得到结果后,再增加一个变量midval用以保存结果.当要显示结果时,先通过判断idval是否等于0,若
此文档下载收益归作者所有