资源描述:
《ram嵌入式计算器报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、[加减乘除计算器]设计说明书栗晋鹏[二零一五年六月二十六日]加减乘除计算器目录1.需求分析21.1编写目的21.2背景21.3要求31.4工作原理32.概要设计32.1功能模块图32.2计算器功能流程图42.3设计效果图63.详细设计63.1界面布置及“清零”73.2捕获键值93.3数据获取和处理113.4运算符的获取和处理123.5结果运算134.调试总结184.1问题调试184.2心得体会205.系统实现201.需求分析1.1编写目的1)掌握ARM9嵌入式系统的程序设计方法;2)理论联系实际,进一步提高软件开发技术;3)培养自己分析问题解决问题的能力;4)提高实践论文撰写能力。1.2背景随
2、着科技的飞速发展,人类已经进入信息化时代。信息技术发展日新月异,计算机已经进入人们生活的各个领域,在现代生活中不可或缺,大型复杂的计算是人脑所不能胜任的,而且较易出错.因此计算器得到了广泛发展和应用,包括以嵌入式系统设计的计算器,我们日常生活的开支,大额数字或是多倍小数的计算都需要计算器的帮助,处理数字的开方、正余弦都离不开计算器。虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,操作不便不说,很多功能根本用不到。所以,我们想到可不可以用自己的所学为自己设计开发一个属于自己的简单计算器来完成日常生活的需求。1.3要求(1)数字和结果用数码管和LED显示屏显示。
3、(2)数字、+-*/、=、C用4X4键盘实现。(3)有清零、退格、累加、累乘功能。1.4工作原理本设计利用LED显示屏和4*4矩阵式键盘实现了简易计算器的功能。程序运行后,LED显示屏显示计算器界面,计算时,通过键盘输入需要计算的数字,该数字在显示屏上会有按键提示,当键入等号时,计算结果显示在LED显示屏上。进行第二次运算时,按C键清除键盘结果。当计算出现错误时,无法准确计算。当计算结果超出数码管显示出现溢出时,报警电路也会报警。2.概要设计2.1功能模块图计算器系统LED显示屏的显示键盘的输入结果的显示数据的显示运算符的输入数据的输入2.2计算器功能流程图开始键值=15键值=140<=键值<
4、=13计算结果存储数据显示数据结束2.3设计效果图3.详细设计3.1界面布置及“清零”case15:Set_Color(GUI_GREEN);Fill_Rect(0,0,639,479);Set_Color(GUI_WHITE);Fill_Rect(0,0,639,2);Fill_Rect(0,0,2,479);Fill_Rect(0,477,639,479);Fill_Rect(637,0,639,479);Set_Color(GUI_BLUE);Fill_Rect(100,80,430,400);Set_Color(GUI_WHITE);Fill_Rect(120,100,410,130)
5、;for(y=0;y<4;y++){for(j=0;j<4;j++){Set_Color(GUI_YELLOW);Fill_Rect((150+60*y),(150+60*j),(200+60*y),(180+60*j));}}Set_Color(GUI_RED);Set_Font(&GUI_Font8x16);Disp_String("1",170,160);Disp_String("2",230,160);Disp_String("3",290,160);Disp_String("+",350,160);Disp_String("4",170,220);Disp_String("5",23
6、0,220);Disp_String("6",290,220);Disp_String("-",350,220);Disp_String("7",170,280);Disp_String("8",230,280);Disp_String("9",290,280);Disp_String("*",350,280);Disp_String("0",170,340);Disp_String("C",230,340);Disp_String("=",290,340);Disp_String("/",350,340);L=120;z=110;Loop=FALSE;number=0;send_byte(c
7、md_reset);send_byte(cmd_reset);t=0;d=0;m=0;n=0;p=0;s=0;break;case16:if(p!=' '&&L==120){Set_Color(GUI_WHITE);Fill_Rect(120,100,410,130);L=120;}//选择0按键Set_Color(GUI_WHITE);Fill_Rect(150,270,200,300);Se