简易计算器设计报告样本

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1602液晶显示计算器

设计报告

10月

一、摘要

计算器是人们寻常生活最常用电子产品之一,应用广泛,功能强大。本次咱

们小组设计制作了一种简易计算器,可以在-9999999~9999999范畴内进行整数、

x=b类型方程。该计算器以AT89C51单片机芯片小数四则运算运算,并求解ax+e

作为核心,采4*4矩阵键盘作为输入,将数据输入单片机内部解决,用LCD1602

工业字符液晶显示出运算和成果。进行显示。通过检查可以实现预设功能,具

备很高实用价值。

核心词:

单片机;简易计算器;AT89C51;LCD1602。

本设计具备如下功能:

1、可以实现-9999999~9999999范畴内整数,小数基本运算(超过范畴后报错)。

2、储存运算成果,掉电不丢失。

3、实现6位及以上有效数字。

4、解ax+e x=b方程。

5、可以持续运算,即上次运算成果作为下次输入。

6、可以在一次操作中持续运算。

二、方案论证

方案描述:

方案一:以51单片机为核心,4*4矩阵键盘输入,数码管显示输入数字和运算

成果。

方案二:以51单片机为核心,4*4矩阵键盘输入,LCD1602显示输入数字和运

算成果。

方案比较与选取:

LCD1602作为一种成熟产品,使用简朴,模式固定,便于移植到各种类型程序,

又有微功耗、体积小、显示内容丰富超薄轻巧等长处,而数码管虽然亮度高,但是操作复杂、能耗高、且不能显示符号,本设计对亮度规定不是特别高,故采用方案二。

三、解方程算法

ax+e x=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、复位电路

S17 1K

2、键盘电路

3、晶振电路

4、1602显示屏

1602 5、STC89C52电路

6、电源电路

系统软件与流程图:1)、总流程图

使用阐明:

1、接入电源,按下电源开关后进入上次关闭时界面(计算或解方程界面)。

2、计算时,输入数字和符号,按等号键输出成果,超过运算范畴则报错,按AC 键退出;

3、解方程时,先输入参数a,b,按等号键确认,后输出ax+e x=b解。按任意键继续解方程。

4、在任意时刻短按mode键进入菜单界面,按1进入计算界面,按2进入解方程界面。

5、长按mode键为记忆功能,即显示上次计算成果。

测试方案及成果:

1、菜单界面

2、加法运算

3、减法运算

4、乘法运算

5、除法运算

6、持续运算

7、上次运算成果作为下次输入

8、报错

9、解方程

10、记忆功能

参照书目

《新概念51单片机C语言教程》电子工业出版社

附录

源代码:

//键盘接P3,1602接P0,STC89C58RC

//by-FCY -10

#include //单片机头文献

#include

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define RdCommand 0x01 //定义ISP操作命令

#define PrgCommand 0x02

#define EraseCommand 0x03

#define Error 1

#define Ok 0

#define WaitTime 0x01 //定义CPU等待时间

sfr ISP_DATA=0xe2;//寄存器声明

sfr ISP_ADDRH=0xe3;

sfr ISP_ADDRL=0xe4;

sfr ISP_CMD=0xe5;

sfr ISP_TRIG=0xe6;

sfr ISP_CONTR=0xe7;

sbit lcden=P1^1;//定义1602能使端和数据命令选取端sbit lcdrs=P1^0;

sbit lcden=P3^4; //TX开发板调试

sbit lcdrs=P3^5;

sbit dula=P2^6;

sbit wela=P2^7;

*/

sbit mode=P1^2; //定义功能键

sbit led=P1^5; //定义1602背光K

uchar time; //定义中断计时时间

char cnumf[14];

char csign[5]={'.','+','-','*','/'}; //定义整数,小数,符号数组

float num1,num2;//定义运算数字

uchar key_value,sign_value=11,fun_value=1; //定义键值,符号值,功能值void delay(uint z); //函数声明

uchar keyscan();

void function_choose();

void write_com(uchar com);

void write_data(uchar date);

void memoryread();

float num_input();

float num_input0();

void num_output(float num);

void display(int s,char str[16],uchar l);

/*===========延时函数===========*/

void delay(uint z)//延时z毫秒

相关文档
最新文档