欢迎来到天天文库
浏览记录
ID:56795113
大小:783.02 KB
页数:39页
时间:2020-07-12
《简易计算器设计报告材料.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1602液晶显示计算器设计报告2016年10月一、摘要计算器是人们的日常生活最常见的电子产品之一,应用广泛,功能强大。本次我们小组设计制作了一个简易计算器,能够在-9999999~9999999的围进行整数、小数的四则运算运算,并求解ax+ex=b类型方程。该计算器以AT89C51单片机芯片作为核心,采4*4矩阵键盘作为输入,将数据输入单片机部处理,用LCD1602工业字符液晶显示出运算和结果。进行显示。经过检验能够实现预设功能,具有很高的实用价值。关键词:单片机;简易计算器;AT89C51;LCD1602。本设计具有以下功能:1、能够实现-9999999~9999999围整数,小数的基本运算
2、(超出围后报错)。2、储存运算结果,掉电不丢失。3、实现6位及以上有效数字。4、解ax+ex=b方程。5、能够连续运算,即上次运算结果作为下次的输入。6、能够在一次操作中连续运算。二、方案论证方案描述:方案一:以51单片机为核心,4*4矩阵键盘输入,数码管显示输入数字和运算结果。方案二:以51单片机为核心,4*4矩阵键盘输入,LCD1602显示输入数字和运算结果。方案比较与选择:LCD1602作为一个成熟的产品,使用简单,模式固定,便于移植到各种类型的程序,又有微功耗、体积小、显示容丰富超薄轻巧等优点,而数码管虽然亮度高,但是操作复杂、能耗高、且不能显示符号,本设计对亮度要求不是特别高,故采用
3、方案二。三、解方程算法ax+ex=b为非线性方程,采用牛顿法迭代求解。原理是利用泰勒公式在X0处展开,且展开到一阶,即f(X)=f(X0)+(X-X0)f’(X0),求解X=X1=X0-f(X0)/f’(X0),进而推出Xn+1=Xn-f(Xn)/f’(Xn)。通过迭代,这个式子必然在f(x)=0的时候收敛,进而得到方程的解。四、电路与程序系统组成:电源系统,复位电路,晶振电路,4*4矩阵键盘,独立按键,STC80C52,LCD1602。具体设计如下:1、复位电路2、键盘电路3、晶振电路4、1602显示屏5、STC89C52电路6、电源电路系统软件与流程图:1)、总流程图2)、计算部分流程
4、图计算生成num23)、解方程部分流程图使用说明:1、接入电源,按下电源开关后进入上次关闭时的界面(计算或解方程界面)。2、计算时,输入数字和符号,按等号键输出结果,超出运算围则报错,按AC键退出;3、解方程时,先输入参数a,b,按等号键确认,后输出ax+ex=b的解。按任意键继续解方程。4、在任意时刻短按mode键进入菜单界面,按1进入计算界面,按2进入解方程界面。5、长按mode键为记忆功能,即显示上次的计算结果。测试方案及结果:1、菜单界面2、加法运算3、减法运算4、乘法运算5、除法运算6、连续运算7、上次运算结果作为下次输入8、报错9、解方程10、记忆功能参考书目《新概念51单片机
5、C语言教程》电子工业附录源代码://键盘接P3,1602接P0,STC89C58RC//by-FCY2016-10#include//单片机头文件#include#include#include#include#defineucharunsignedchar#defineuintunsignedint#defineRdCommand0x01//定义ISP的操作命令#definePrgCommand0x02#defineEraseCommand0x03#defineError1#defineOk0#d
6、efineWaitTime0x01//定义CPU的等待时间sfrISP_DATA=0xe2;//寄存器申明sfrISP_ADDRH=0xe3;sfrISP_ADDRL=0xe4;sfrISP_CMD=0xe5;sfrISP_TRIG=0xe6;sfrISP_CONTR=0xe7;sbitlcden=P1^1;//定义1602能使端和数据命令选择端sbitlcdrs=P1^0;/*sbitlcden=P3^4;//TX开发板调试sbitlcdrs=P3^5;sbitdula=P2^6;sbitwela=P2^7;*/sbitmode=P1^2;//定义功能键sbitled=P1^5;//定义16
7、02背光Kuchartime;//定义中断计时时间charumf[14];charcsign[5]={'.','+','-','*','/'};//定义整数,小数,符号数组floatnum1,num2;//定义运算数字ucharkey_value,sign_value=11,fun_value=1;//定义键值,符号值,功能值voiddelay(uintz);//函数声明ucharkeyscan(
此文档下载收益归作者所有