模拟计算器设计实习报告

合集下载

计算器实习报告

计算器实习报告

计算器实习报告计算器实习报告终于走进了大学生活的最后阶段,大学生活马上就要结束了,我们要证明一下自己所学的知识能不能在社会上派上用场,毕业实习就是最好证明自己的方法。

实习是我们从大学走向社会的第一步,为了是让我们今后走向工作岗位后能很快地适应。

实习的方法有很多,可以到各公司去工作实习,也可以在学校里用自己所学的东西做出点实际的东西来。

我的实习就是在学校里用Delphi做了一个简单的程序。

程序虽然小但很实用,就是做一个简单的计算器。

计算器是大家在日常生活中经常用到的,其功能也越来越强大。

在我看来Delphi是一种功能很强大的开发工具,不论是从程序语言结构的严谨性,还是从模块功能的完整性来看都不次与C++。

Delphi语言的结构很有条理,思路很清晰,让人看了一目了然,而且语法结构也很简单,程序设计相对容易。

在日常的数据库管理工作中,Delphi起了很的大的作用,所以对Delphi的学习对我们今后的工作是相当重要的。

Delphi是我最近才开始学的,有很多语句我用的不是很熟练,有的跟本就不会用。

虽然是做一个小小的计算器,但还是困扰了我很长时间。

只能请教懂Delphi的同学和知道老师了。

最后做出的计算器外观是不怎么好看,功能也只有四则运算,但我觉得已经很欣慰了。

不关怎么说毕竟我付出了劳动。

下面是我做的计算器的界面:其源代码如下:unitUnit1; interf-aceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,Buttons,StdCtrls,ExtCtrls;typeTForm1=class( TForm)Panel1:TPanel;Panel2:TPanel;SpeedButton7:TSpeedButton;S peedButton8:TSpeedButton;SpeedButton9:TSpeedButton;SpeedButto n13:TSpeedButton;SpeedButton4:TSpeedButton;SpeedButton5:TSpee dButton;SpeedButton6:TSpeedButton;SpeedButton12:TSpeedButton; SpeedButton1:TSpeedButton;SpeedButton2:TSpeedButton;SpeedButt on3:TSpeedButton;SpeedButton11:TSpeedButton;SpeedButton14:TSp eedButton;SpeedButton15:TSpeedButton;SpeedButton10:TSpeedButt on;StaticText1:TStaticText;SpeedButton0:TSpeedButton;SpeedBut ton16:TSpeedButton;SpeedButton17:TSpeedButton;GroupBox1:TGrou pBox;procedureSpeedButton1Click(Sender:TObject);procedureForm Create(Sender:TObject);procedureSpeedButton11Click(Sender:TOb ject);procedureSpeedButton15Click(Sender:TObject);procedureSp eedButton16Click(Sender:TObject);procedureSpeedButton17Click( Sender:TObject);private{Privatedeclarations}public{Publicdecl arations}end;varForm1:TForm1;restart:Boolean;isfirst:Boolean; fir_num,sec_num:String;sign:integer;result:real;save:String;i mplementation{$R*.dfm}functioncount(sign:integer):real;beginc asesignof1:result:=strtofloat(fir_num)+strtofloat(sec_num);//为加号时2:result:=strtofloat(fir_num)-strtofloat(sec_num);//为减号时3:result:=strtofloat(fir_num)*strtofloat(sec_num);//为乘号时4:begintryresult:=strtofloat(fir_num)/strtofloat(sec_num);//为除号时exceptShowMessage('错误!');form1.close;end;//除数为0时,做出异常处理end; end;end;procedureTForm1.SpeedButton1Click(Sender:TObject);vari:integer; beginifrestartthen//如果是重新开始输入,则清除原来的操作数,并设置isfirst为Truebeginisfirst:=True;fir_num:='';sec_num:='';restart:=False ;end;ifisfirstthen//如果是第一个操作数beginif(senderasTSpeedButton).Caption='.'then//如果输入的是小数点beginif(strlen(pChar(fir_num)) =0)then//如果第一个操作数并未输入fir_num:='0.'elsefori:=1tostrlen(pChar(fir_num))doiffir_num[i ]='.'thenexit;//如果第一个中已含有小数点而又输入小数点,则退出end;if(strlen(pChar(fir_num)) 0)and(fir_num[1]='0')then//如果最高位为0beginif((senderasTSpeedButton).Caption='.')thenfir_num:='0.' elsebeginifstrlen(pChar(fir_num)) 1then//如果是小数,则继续输入fir_num:=fir_num+(senderasTSpeedButton).Captionelsefir_num:=( senderasTSpeedButton).Caption;//如果不是小数,则去掉最高位的0end; endelsefir_num:=fir_num+(senderasTSpeedButton).Caption;StaticTex t1.Caption:=fir_num;end elsebeginif(senderasTSpeedButton).Caption='.'then//如果第二个操作数并未输入beginif(strlen(pChar(sec_num))=0)thensec_num:='0.'elsefori:=1tostrlen(pChar(sec_num))doifsec_num[i]='.'thenexit;//如果第二个中已含有小数点而又输入小数点,则退出end;if(strlen(pChar(sec_num))0)and(sec_num[1]='0')then//如果最高位为0beginif((senderasTSpeedButton).Caption='.')thensec_num:='0.' elsebeginifstrlen(pChar(sec_num)) 1then//如果是小数,则继续输入sec_num:=sec_num+(senderasTSpeedButton).Captionelsesec_num:=( senderasTSpeedButton).Caption;//如果不是小数,则去掉最高位的0end; endelsesec_num:=sec_num+(senderasTSpeedButton).Caption;StaticTex t1.Caption:=sec_num;end;end;procedureTForm1.FormCreate(Sender :TObject);beginStaticText1.Caption:='0.';//设置StaticText1初始显示为0.restart:=False;Isfirst:=True;fir_num:='';sec_num:='';end;procedureTForm1.SpeedButton11Click(Sender:TObject);begini f(fir_num '')and(sec_num '')then//如果两各操作数都不为空beginresult:=count(sign);//调用函数,返回计算结果fir_num:=floattostr(result);sec_num:='';StaticText1.Caption:= floattostr(result);end;sign:=(senderasTSpeedButton).Tag;isfir st:=False;restart:=False;end;procedureTForm1.SpeedButton15Cli ck(Sender:TObject);beginif(sec_num '')then//如果第二个操作数不为空则返回结果beginresult:=count(sign);fir_num:='';fir_num:=fir_num+floatto str(result);StaticText1.Caption:=floattostr(result);sec_num:='';end;restart:=true;end;procedureTForm1.SpeedButton16Click(S ender:TObject);beginrestart:=True;fir_num:='';sec_num:='';sel f.StaticText1.Caption:='0.';end;procedureTForm1.SpeedButton17 Click(Sender:TObject);begin Close; end; end.根据计算器的原理对各按键的功能进行设置,如名称,属性,事件等。

vb 简易计算器实验报告

vb 简易计算器实验报告

简易计算器课程设计报告一、实验目的:模拟计算器的功能。

系统启动后, 先清屏, 再在显示屏右侧显示0字样, 系统仅接收数字键、加减乘除键、退格键、C键(复位)、=或回车键、ESC键(退出系统)作为有效按键, 其余按键不响应。

按键后屏幕显示效果要达到一般计算器显示屏的同样效果。

不要求设计一般计算器上都具有的M功能。

二、实验设计内容及思想:首先, 创建一个主体框架: 建立程序的主要界面后, 系统自动生成界面的主要窗口生成代码。

对于每个按钮的的代码段中, 分别添加事件触发的处理代码。

分别设立三个显示屏, 第一个显示屏作为“被加数”框, 第二个显示屏作为“加数”框, 第三个显示屏则作为输出框。

四则运算时直接采用计算表达式。

所以, 优先级和运算规则皆宜考虑在内。

在进行除法运算时, 若遇到除数为0, 则运用条件语句执行, 并在输出显示屏上输出“E”。

三角函数、指数、对数、整除、取余等运算, 也是运用类似手法。

考虑到计算器的操作简便性, 所以加入了复位和退出按钮。

三、源程序文件:Private Sub Command1_Click()Dim x As IntegerDim y As Integerx = Text1.Texty = Text2.TextText3.Text = x + yEnd SubPrivate Sub Command10_Click()Dim x As Integerx = Text1.TextText3.Text = Cos(x)End SubPrivate Sub Command11_Click()Dim x As Integerx = Text1.TextText3.Text = Tan(x)End SubPrivate Sub Command12_Click()Dim x As Integerx = Text1.TextText3.Text = Atn(x)End SubPrivate Sub Command13_Click() Dim x As IntegerDim y As Integerx = Text1.Texty = Text2.TextText3.Text = x ^ yEnd SubPrivate Sub Command14_Click() Dim x As Integerx = Text1.TextIf x <= 0 ThenText3.Text = "输入错误"ElseText3.Text = Log(x)End IfEnd SubPrivate Sub Command15_Click() Text3.Text = "此按钮仅作装饰用" End SubPrivate Sub Command2_Click() Dim x As IntegerDim y As Integerx = Text1.Texty = Text2.TextText3.Text = x - yEnd SubPrivate Sub Command3_Click() Dim x As IntegerDim y As Integerx = Text1.Texty = Text2.TextText3.Text = x * yEnd SubPrivate Sub Command4_Click() Dim x As IntegerDim y As Integerx = Text1.Texty = Text2.TextIf y = 0 ThenText3.Text = "E"ElseText3.Text = x / yEnd IfEnd SubPrivate Sub Command5_Click()Dim x As IntegerDim y As Integerx = Text1.Texty = Text2.TextText3.Text = x \ yEnd SubPrivate Sub Command6_Click()Dim x As IntegerDim y As Integerx = Text1.Texty = Text2.TextText3.Text = x Mod yEnd SubPrivate Sub Command7_Click()Text1.Text = ""Text2.Text = ""Text3.Text = " 0" End SubPrivate Sub Command8_Click()EndEnd SubPrivate Sub Command9_Click()Dim x As Integerx = Text1.TextText3.Text = Sin(x)End Sub源代码截图:四、运行结果演示: 加法演示:减法演示: 乘法演示:除法演示:能够整除: 不能够整除:除数为零:。

简单计算器—实训报告

简单计算器—实训报告

Linux应用与编程实习报告学院名称专业班级学生姓名学号指导教师山东科技大学一、实习题目: B2-简单计算器二、实习时间:19周~ 20周实习地点: J13- 128三、实习任务:实现一个简单计算器,计算器包括加、减、乘、除四种运算。

用户通过鼠标进行数据输入,输入的数据以及计算结果显示在文本框中四、小组分工说明:独立完成五、实习成绩六、指导教师对实习的评语:指导教师(签章):2015年月日目录1. 概述 -------------------------------------------------------- 42. 相关技术 -------------------------------------------------- 42.1 QT中信号和槽 -------------------------------------- 42.2 字符串输出数据组 -------- 错误!未定义书签。

3. 需求分析 -------------------------------------------------- 54. 总体设计与详细设计 ----------------------------------- 54.1 系统模块划分 --------------------------------------- 54.2 主要功能模块 --------------------------------------- 55. 编码实现 -------------------------------------------------- 6 6.测试情况说明------------------------------------------- 157. 实训中遇到的主要问题及解决方法 ---------------- 168. 实训收获与体会 ---------------------------------------- 161. 概述1.1 实训项目简介本次实训项目是应用Linux系统中的QT编译器编写一个界面简洁,操作简单的简易计算器。

模拟计算器实验报告

模拟计算器实验报告

课程设计报告课程设计题目:模拟机算器程序学生姓名:柯尊国专业:网络工程班级:1021130321指导教师:高永平、姜林2011年11 月27 日东华理工大学课程设计评分表学生姓名:柯尊国班级:10211303 学号:21课程设计题目:模拟机算器程序项目内容满分实评选题能结合所学课程知识、有一定的能力训练。

符合选题要求(5人一题)10 工作量适中,难易度合理10能力水平能熟练应用所学知识,有一定查阅文献及运用文献资料能力10 理论依据充分,数据准确,公式推导正确10能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等10 能体现创造性思维,或有独特见解10成果质量总体设计正确、合理,各项技术指标符合要求。

10 说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰10设计说明书栏目齐全、合理,符号统一、编号齐全。

格式、绘图、表格、插图等规范准确,符合国家标准10 有一定篇幅,字符数不少于5000 10总分100指导教师评语:指导教师签名:年月日目录一. 课程设计题目..................................................................................二. 问题分析1.算法分析.....................................................................2.流程图........................................................................三. 算法设计1.算法描述.....................................................................2.系统类图.....................................................................3.属性和方法定义..............................................................四. 运行实例................................................................................五. 经验与体会................................................................................六. 参考文献................................................................................ 七.源代码................................................................................一:课程设计题目模拟计算器程序问题描述设计一个程序来模拟一个简单的手持计算器。

计算器程序编程实习报告范本

计算器程序编程实习报告范本

程序实习报告、需求分析: 编写简易计算器程序,主要实现四则运算,运算符号包括“一” “+”“/” “*”(” “)”按照“先乘除后加减,先算括号内后算括号外,从左到右”的原则的原则进行计算。

考虑到程序的编写困难度,暂时不予考虑多位数的四则运算,也不考虑平方、阶乘、三角函数的运算。

只进行一位数的四则运算,所需要的内存空间不会很大,也就放弃空间不足自动添加空间的情况。

输入:输入一个只含一位数的四则运算式,以#结束,运算符只包括“一”,“ +” “*” “/” “(” “)”输出:直接输出结果“结果是:”测试数据:例如9 —(3—2)*3 —1#二、概要设计:三、详细设计:1、主函数 首先定义两个栈,分别取名是 OPTR,OPND 其中OPTF 存放字符,OPN 存放数字。

获取栈 丿元素戋顶1输出结 果------- --------- 出栈执行将字符压入 operate,压脱括号栈 OPTR栈开始从键盘上获取键入字符 cC!=# 或Gettop!='#"栈顶元素比C 的优先级将字符压 入 OPTR结束将optr中压入#作为栈底元素,然后从键盘上获取表达式的字符如果是数字,将该字符转化为数字,压入到栈opnd中。

如果是字符,和optr的栈顶元素比较优先级1, 、栈顶元素优先级<键入的元素,该调用push()函数,将字符压入到optr栈中2、如果栈顶元素的优先级等于键入元素,则得知此符号为括号,调用pop()函数,将该字符栈中的栈顶元素退出,即为脱括号。

3、如果栈顶元素的优先级高于键入元素,调用pop()函数,分别将取两次数字栈的栈顶元素,pop(op nd,b),pop(op nd,a),, 同时将optr中的栈顶元素去取出,pop(optr,theta), 调用operate()函数, 进行计算。

将operate ( a,theta,b)压入到op nd栈中,继续进行循环。

直到#结束。

java简易计算器实训报告

java简易计算器实训报告

java简易计算器实训报告Java简易计算器实训报告随着人们对数学和计算机的需求不断增长,计算器也成为了必备的工具之一。

而在计算机领域,Java语言因其跨平台和易于学习的特点而备受青睐。

因此,我选择了利用Java语言来编写一款简易计算器的实训项目。

一、需求分析在编写计算器之前,我们需要对其功能进行需求分析。

一般来说,计算器的功能包括加、减、乘、除等基本数学运算符,以及括号、百分号、小数点等其他计算功能。

在此基础上,我们可以考虑增加科学计算、历史记录、单位转换等功能。

二、设计思路及实现在需求分析的基础上,我们设计了一款基于Java语言的简易计算器。

其基本功能包括加、减、乘、除、括号、百分号、小数点等。

在实现过程中,我们采用了以下设计思路:1. 利用Java Swing构建GUI界面,让用户可以通过鼠标点击输入数字和运算符。

2. 通过Java的逻辑运算符实现基本的数学运算,包括加、减、乘、除等。

3. 利用Java的正则表达式判断用户输入的数字是否合法,并进行相应的处理。

4. 通过栈的数据结构实现括号运算,使得程序能够正确处理带有括号的数学表达式。

5. 实现百分号功能,使得用户可以快速进行百分比运算。

6. 通过Java的异常处理机制,处理用户输入不合法的情况,避免程序崩溃。

三、代码实现在代码实现过程中,我们主要采用了Java Swing和Java核心库中的一些类和方法。

以下是代码的核心部分:1. GUI界面代码在Java Swing中,我们可以通过JFrame、JPanel、JButton等组件构建出一个GUI界面,使得用户可以通过鼠标点击输入数字和运算符。

以下是界面代码的核心部分:JPanel panel = new JPanel();panel.setLayout(new GridLayout(4,4));//数字按钮panel.add(new JButton("7"));panel.add(new JButton("8"));panel.add(new JButton("9"));panel.add(new JButton("/"));panel.add(new JButton("4"));panel.add(new JButton("5"));panel.add(new JButton("6"));panel.add(new JButton("*"));panel.add(new JButton("1"));panel.add(new JButton("2"));panel.add(new JButton("3"));panel.add(new JButton("-"));panel.add(new JButton("0"));panel.add(new JButton("."));panel.add(new JButton("+"));panel.add(new JButton("("));panel.add(new JButton(")"));panel.add(new JButton("%"));2. 数学运算代码在Java中,我们可以通过逻辑运算符实现基本的数学运算。

东南大学虚拟仪器实验报告-(计算n!,计算器)

东南大学虚拟仪器实验报告-(计算n!,计算器)

东南大学生物科学与医学工程学院虚拟仪器实验报告第二次实验实验名称:程序结构专业:生物医学工程姓名:学号:同组人员:学号:实验室: 综合楼716实验时间:10月14日评定成绩:审阅教师:一、计算n的阶乘 (3)1实验题目 (3)2实验目的 (3)3实验内容 (3)4设计方案选择、方案的优缺点。

(3)5软件设计: (3)6调试: (6)7测试结果和分析。

(6)8使用说明: (7)9结束语、总结、心得体会。

(7)二、实现加减乘除的计算器 (7)1实验题目 (7)2实验目的 (7)3实验内容 (7)4设计方案选择、方案的优缺点。

(7)5软件设计: (8)6调试: (9)7测试结果和分析 (10)8使用说明: (10)9结束语、总结、心得体会。

(10)一、计算n的阶乘1实验题目完成计算n的阶乘2实验目的①前面板数字控制器可随意输入n的值,并能显示结果(注:0!=1)。

②For循环中重复时间不少于100ms(即程序每100ms循环一次)。

3实验内容⑴学习while、For循环的使用方法。

⑵学习移位寄存器的概念,学习移位寄存器的使用。

⑶学习使用Case结构,学习添加和删除分支。

4设计方案选择、方案的优缺点。

计算n的阶乘的计算器方案选择:利用循环语句,进行数字n的阶乘运算,利用移位寄存器实现数据的传送完成数字连乘。

利用时间计时器的差值得出程序运行所用时间。

能够简洁明了的实现计算n的阶乘的功能,数据正确。

5软件设计:虚拟仪器设计步骤详细介绍。

(1)程序前面板设计:数值输入控件:名称:输入n 属性:双精度(DBL)用途:面向用户,手动输入n值数值显示控件:名称:n!的值属性:双精度(DBL)用途:显示n!运算结果名称:运行时间(ms)属性:双精度(DBL)用途:显示程序运行时间面板的布局:。

(2)框图程序设计:程序流程图:源程序:6调试:调试步骤:使用高亮执行该段程序,观察数据流的动向。

调试中问题:一开始使用整型,对于较小数值,结算结果正确,但对于较大的数值计算结果错误。

计算器设计实验报告

计算器设计实验报告

计算器设计实验报告《计算器设计实验报告》摘要:本实验旨在设计一个简单的计算器,并测试其功能和准确性。

实验过程中,我们使用了基本的电子元件和逻辑门电路来实现计算器的各种功能。

经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。

通过本实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。

引言:计算器是现代生活中不可或缺的工具,它能够帮助人们进行各种数学运算,提高工作和学习效率。

在本实验中,我们将设计一个简单的计算器,并测试其功能和准确性。

通过这个实验,我们可以更深入地了解计算器的原理和设计,为今后的电子电路设计和实验打下基础。

材料和方法:1. 电子元件:逻辑门、电阻、电容、LED等2. 电路板和连接线3. 电源和示波器4. 计算器设计图纸和电路原理图实验步骤:1. 根据设计图纸和电路原理图,连接各种电子元件,组装成一个计算器电路。

2. 使用电源给电路供电,并使用示波器测试电路的输出波形和稳定性。

3. 进行加减乘除等运算测试,记录计算器的准确性和稳定性。

4. 对计算器进行长时间稳定性测试,观察其在长时间使用中的表现。

实验结果:经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。

电路的输出波形清晰,没有明显的波动和噪声。

在长时间稳定性测试中,计算器表现良好,没有出现明显的故障和失效现象。

讨论:通过本实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。

在今后的学习和工作中,我们可以根据这些知识和技能,设计和制作更复杂和功能更强大的计算器和其他电子设备。

结论:本实验设计了一个简单的计算器,并测试了其功能和准确性。

经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。

通过这个实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。

电子综合实践之计算器报告

电子综合实践之计算器报告

电子综合实践实验报告简易计算器的设计专业:电子信息工程设计人:XXX学号:0708060022指导老师:XXX一、设计目的随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。

电子产品的更新速度快就不足惊奇了。

计算器在人们的日常中是比较的常见的电子产品之一。

可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机来设计的四位数计算器,同时让学习者熟悉AT系列单片机的使用,学习如何掌握好进而设计好单片机的最小系统该设计系统是以AT89S51为单片机,P0口作为输入端,外接4X4的键盘,通过键盘扫描来对输入数的控制,在P1口,P2口接了驱动电路。

用来保证LED的工作正常。

计算器将完成的功能有加,减,乘,除,报错等功能。

二、设计要求1.以电子技术基础的基本理论为指导,将设计实验分为基础型和系统型两个层次,基础型指基本单元电路设计与调试,系统型指若干个模拟、数字基本单元电路组成并完成特定功能的电子电路的设计、调试;2.学习电子系统电路的焊接调试技术;3.拓展电子电路的应用领域,能设计、制作出满足一定性能指标或特定功能的电子电路设计任务。

三﹑主要功能:主要完成0~9999整数的一次加/减/乘/除运算,使用8快LED显示器显示数据,具体如下:加法运算能运行0~9999之间任何两数值之间运算,较普通,减法运算结果可以实现计算结果的负数显示,除法运算结果为0~9999并保留四位小数,乘法运算时即使超出四位也要能计算出来,即最多能显示8位计算结果能对错误进行提示,比如被除数是0则显示“error”,设有清零键,其它的未用到的数码管显示空白四﹑按键排布:因为使用的是4*4键盘,所以要删除部分不太重要的键,如小数点不使用,具体按键安排如下:0/1/2/34/5/6/78/9/+/-×/÷/=/复位五、电路的整体设计:1、电路的总体原理框图:2、工作原理及焊接原理框图如图所示。

计算器设计实验报告

计算器设计实验报告

计算器设计实验报告计算器设计实验报告第一部分:引言计算器是一种广泛应用于日常生活和工作中的电子设备。

它能够进行基本的数学运算,如加减乘除,以及更复杂的科学计算,如对数、三角函数等。

本实验旨在设计一个简单的计算器,以了解计算器的工作原理,并通过实践来提高我们的电子设计和编程能力。

第二部分:设计思路在设计计算器之前,我们首先需要确定所需的功能和要使用的技术。

基于我们的目标是设计一个简单的计算器,我们决定使用数字显示屏、按键和微控制器来实现。

数字显示屏是用于显示计算结果和用户输入的设备,我们选择了七段数码管作为显示器。

按键则用于接收用户输入的数字和操作符。

微控制器是计算器的核心部件,它负责接收按键输入,进行计算,并将结果显示在数码管上。

第三部分:实验步骤1. 硬件设计我们首先设计了数字显示屏的电路。

通过连接七段数码管和相应的电阻,我们能够控制数码管的亮灭,从而显示不同的数字和符号。

接下来,我们设计了按键的电路。

每个按键都与微控制器的引脚相连,当按键被按下时,引脚会接收到一个电平信号,微控制器通过检测引脚状态来确定用户的输入。

2. 软件编程在硬件设计完成后,我们开始编写微控制器的程序。

程序的主要任务是接收按键输入,并根据用户的操作进行相应的计算。

首先,我们设置了一个变量来存储用户的输入,然后通过检测按键状态来更新这个变量。

当用户按下数字键时,程序将数字添加到变量中;当用户按下操作符键时,程序将根据当前的操作符和变量进行相应的计算。

最后,程序将计算结果显示在数码管上。

我们使用了一个函数来将计算结果转换为七段数码管的控制信号,并通过相应的引脚将信号发送到数码管。

第四部分:实验结果经过一段时间的设计和调试,我们成功地完成了计算器的制作。

它能够准确地接收用户的输入,并进行相应的计算。

计算结果也能够正确地显示在数码管上。

我们进行了一系列测试来验证计算器的功能和性能。

测试包括基本的加减乘除运算,以及一些复杂的科学计算,如对数和三角函数。

模拟实训计算机实验报告

模拟实训计算机实验报告

一、实验目的本次模拟实训实验旨在通过模拟实际工作场景,帮助学生熟悉计算机应用环境,提高实际操作能力,培养团队协作精神,为今后的工作奠定基础。

二、实验内容1. 实验背景随着信息技术的快速发展,计算机已经成为各行各业不可或缺的工具。

为了提高学生的计算机应用能力,本实验模拟了一个企业信息管理系统的应用场景,要求学生完成以下任务:(1)登录企业信息管理系统;(2)完成信息录入、查询、修改、删除等基本操作;(3)进行数据统计和分析;(4)进行系统设置和优化。

2. 实验环境(1)操作系统:Windows 10;(2)浏览器:Chrome;(3)实验软件:企业信息管理系统(模拟)。

3. 实验步骤(1)登录企业信息管理系统1)打开浏览器,输入企业信息管理系统地址;2)输入用户名和密码,点击登录;3)进入系统主界面。

(2)信息录入1)在主界面左侧导航栏选择“信息录入”模块;2)根据提示填写相关信息,如姓名、性别、部门、职位等;3)点击“保存”按钮,完成信息录入。

(3)信息查询1)在主界面左侧导航栏选择“信息查询”模块;2)根据需要输入查询条件,如姓名、部门等;3)点击“查询”按钮,查看查询结果。

(4)信息修改1)在查询结果中找到需要修改的信息;2)点击“修改”按钮,进入修改页面;3)修改相关信息,点击“保存”按钮。

(5)信息删除1)在查询结果中找到需要删除的信息;2)点击“删除”按钮,确认删除。

(6)数据统计和分析1)在主界面左侧导航栏选择“数据统计”模块;2)根据需要选择统计指标,如部门人数、职位分布等;3)查看统计结果。

(7)系统设置和优化1)在主界面左侧导航栏选择“系统设置”模块;2)根据需要调整系统参数,如用户权限、界面风格等;3)优化系统性能。

4. 实验总结通过本次模拟实训实验,我们掌握了以下技能:(1)熟悉企业信息管理系统的基本操作;(2)提高了信息录入、查询、修改、删除等基本操作能力;(3)学会了数据统计和分析方法;(4)了解了系统设置和优化方法。

简易计算器实验报告

简易计算器实验报告

简易计算器实验报告一、实验目的本次实验的目的是设计并实现一个简易计算器,能够进行基本的四则运算(加、减、乘、除),以及处理括号的优先级运算,提高对程序设计和逻辑思维的理解与应用能力。

二、实验原理1、四则运算的优先级规则在数学运算中,先计算括号内的表达式,然后按照先乘除后加减的顺序进行计算。

乘除法的优先级高于加减法,如果在同一级运算中,按照从左到右的顺序进行。

2、数据结构的选择使用栈(Stack)数据结构来存储操作数和运算符。

栈具有先进后出的特点,非常适合处理表达式中的括号和优先级。

3、算法思路首先,将输入的表达式进行解析,将数字和运算符分别存储到不同的栈中。

然后,根据运算符的优先级进行计算,将计算结果重新压入栈中,直到表达式计算完毕。

三、实验设备及环境1、编程工具:选择了 Python 语言作为主要的编程工具,使用PyCharm 集成开发环境进行代码编写和调试。

2、操作系统:Windows 10 操作系统。

四、实验步骤1、定义数据结构定义两个栈,一个用于存储操作数(operandStack),一个用于存储运算符(operatorStack)。

2、表达式解析遍历输入的表达式字符串,将数字转换为整数并压入操作数栈,将运算符压入运算符栈。

遇到左括号直接压入运算符栈,遇到右括号则进行括号内的运算。

3、运算处理当运算符栈不为空时,取出栈顶的运算符和两个操作数进行计算。

根据运算符的优先级进行相应的运算,将结果压入操作数栈。

4、最终结果当表达式解析完毕后,操作数栈中的唯一元素即为表达式的计算结果。

五、代码实现```pythonclass SimpleCalculator:def __init__(self):selfoperandStack =selfoperatorStack =def calculate(self, expression):for char in expression:if charisdigit():selfoperandStackappend(int(char))elif char in '+/()':if char =='(':selfoperatorStackappend(char)elif char ==')':while selfoperatorStack-1!='(':operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)selfoperatorStackpop()else:while selfoperatorStack and selfhasHigherPrecedence(selfoperatorStack-1, char):operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)selfoperatorStackappend(char)while selfoperatorStack:operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)return selfoperandStackpop()def hasHigherPrecedence(self, op1, op2):if op1 in '/' and op2 in '+':return Trueelif op1 in '+' and op2 in '+':return Falseelif op1 in '/' and op2 in '/':return Falsereturn Falsedef performOperation(self, operand1, operand2, operator):if operator =='+':return operand1 + operand2elif operator =='':return operand1 operand2elif operator =='':return operand1 operand2elif operator =='/':if operand2 == 0:raise ValueError("除数不能为 0")return operand1 / operand2if __name__ =="__main__":calculator = SimpleCalculator()expression ="2 + 3 (4 1) / 2"result = calculatorcalculate(expression)print("计算结果:", result)```六、实验结果与分析1、测试用例及结果输入表达式:"2 + 3 4",计算结果:14输入表达式:"(2 + 3) 4",计算结果:20输入表达式:"5 2 3",计算结果:-1输入表达式:"10 / 2 + 1",计算结果:62、结果分析对于简单的四则运算表达式,计算器能够正确计算出结果。

计算器界面制作实训报告

计算器界面制作实训报告

一、引言随着计算机技术的不断发展,软件编程已经成为计算机科学领域的基础技能之一。

为了提高我的编程能力,我参加了本次计算器界面制作的实训。

通过本次实训,我不仅学习了计算器界面的设计方法,还提升了面向对象编程和图形用户界面(GUI)开发的能力。

二、实训目的1. 掌握计算器界面的设计方法。

2. 熟悉面向对象编程的基本思想。

3. 提高图形用户界面(GUI)开发技能。

4. 培养团队协作和沟通能力。

三、实训内容本次实训要求我独立完成一个简易计算器的界面设计,包括以下功能:1. 数字输入:支持输入0-9的数字。

2. 运算符输入:支持加、减、乘、除四则运算。

3. 结果显示:实时显示计算结果。

4. 清除功能:清除输入的数字和运算符。

四、实训过程1. 需求分析:首先,我分析了计算器的功能需求,明确了界面设计的基本框架。

2. 界面设计:根据需求分析,我设计了一个简洁明了的计算器界面,包括数字键盘、运算符按钮、结果显示区域和清除按钮。

3. 编程实现:- 面向对象编程:我采用了面向对象编程的思想,将计算器界面划分为多个类,如数字按钮类、运算符按钮类、结果显示区域类等。

- 图形用户界面(GUI)开发:我使用了Java Swing库中的组件来实现计算器界面,包括JFrame、JButton、JTextField等。

4. 功能实现:- 数字输入:我为数字按钮设置了监听器,当用户点击按钮时,将数字显示在结果显示区域。

- 运算符输入:我为运算符按钮设置了监听器,当用户点击按钮时,将运算符存储在变量中。

- 结果显示:根据输入的数字和运算符,计算结果并显示在结果显示区域。

- 清除功能:我为清除按钮设置了监听器,当用户点击按钮时,清空输入的数字和运算符。

5. 调试与优化:在编程过程中,我遇到了一些问题,如按钮点击事件处理、界面布局等。

通过查阅资料和请教同学,我逐步解决了这些问题,并对程序进行了优化。

五、实训总结1. 技术收获:通过本次实训,我掌握了计算器界面的设计方法,熟悉了面向对象编程和图形用户界面(GUI)开发技能。

单片机实训计算器报告

单片机实训计算器报告

一、引言随着科技的飞速发展,单片机技术作为嵌入式系统的重要组成部分,已经在各个领域得到了广泛的应用。

为了提高学生对单片机技术的理解和实践能力,我们开展了单片机实训课程。

本次实训报告以设计一个简易计算器为例,详细介绍单片机在计算器中的应用及其设计过程。

二、实训目的1. 熟悉单片机的基本原理和编程方法。

2. 掌握单片机外围设备的接口技术。

3. 培养学生的实际动手能力和创新意识。

三、实训内容1. 设计要求本次实训要求设计一个基于单片机的简易计算器,能够实现以下功能:(1)加、减、乘、除四则运算;(2)结果显示在LCD1602显示屏上;(3)具有简单的错误处理功能。

2. 系统组成本计算器系统主要由以下几部分组成:(1)AT89C51单片机:作为系统的核心控制器,负责控制整个计算器的运行;(2)LCD1602显示屏:用于显示输入的数字、运算符和计算结果;(3)矩阵键盘:用于输入数字和运算符;(4)按键:用于控制计算器的开关、清零和退出等功能。

3. 硬件设计(1)AT89C51单片机:选用AT89C51单片机作为核心控制器,具有丰富的I/O端口和片内资源,可以满足计算器的需求。

(2)LCD1602显示屏:通过单片机的PORTD端口与LCD1602显示屏相连,实现数据显示功能。

(3)矩阵键盘:采用4x4矩阵键盘,将行线连接到单片机的PB0-PB3端口,列线连接到PB4-PB7端口。

(4)按键:设置三个按键,分别用于控制计算器的开关、清零和退出功能。

4. 软件设计(1)初始化:首先对单片机的I/O端口、LCD1602显示屏和矩阵键盘进行初始化。

(2)键盘扫描:通过扫描矩阵键盘,获取用户输入的数字和运算符。

(3)运算逻辑处理:根据用户输入的数字和运算符,进行相应的运算。

(4)结果显示:将计算结果显示在LCD1602显示屏上。

(5)错误处理:当输入错误或发生溢出时,显示错误信息。

四、实训过程1. 硬件电路搭建:根据设计要求,将AT89C51单片机、LCD1602显示屏、矩阵键盘和按键连接到一起,搭建计算器的硬件电路。

计算器实习报告

计算器实习报告

单片机实习报告学院:xx专业:2班号:4学号:4姓名:11指导老师:报告目录:1.元器件的购买,电路板的焊接情况2.实习项目:基于STC89C52单片机的计算器设计(1)计算器的功能概述(2)计算器的各部分功能介绍1)1602液晶电路和程序2)芯片AT89S52电路图3)扫面键盘及程序4)外围电路图(3)计算器程序设计流程图(4) 计算器程序详细设计3.编写程序遇到的问题及解决办法4.计算器制作过程中的心得体会5.计算器的源程序(附录)一.元器件购买和焊接1.购买过程;开发板元器件的购买总共用了三次才买完,第一次是我和宿舍几个同学一起去购买,我们来到华中电子市场,在伟芯电子购买基本的元器件,我将清单给老板,然后他就帮我们找到了所需要的元器件,我们将买到的元器件分成几份,每人拿一份,在买二脚蓝色插座时老板说不够,我们就去旁边的店购买也没有,于是我们就购买了几个三脚蓝色插座代替,也就是将三脚蓝色插座的旁边一个脚拆掉了,这样就代替了二脚插座。

在焊接完买回来的元器件后,发现少了多个200欧姆电阻和0.1微法的瓷片电容,于是我们便再来到这里购买,在老板拿来电阻后,我们就用万用表测电阻的大小,是200欧,之后我们便回去继续焊接。

2.电路板的焊接心得体会如果电烙铁长时间的接触焊接管脚肯定会损坏IC芯片的。

贴片IC有专门的焊锡膏及吹焊器具。

首先,工具上对你的电烙铁的电烙头要保护好,不要出现黑色的氧化物,如果有就磨掉磨掉后马上粘松香补焊锡。

焊锡的选取上,你尽量选取焊丝中间加有助焊剂的焊丝,焊丝表面应该光亮。

其次,焊接时将元器件管脚对应好焊接电路板的焊接位置上,接着先将焊丝接触然后电烙头从下至上的较快速的上锡,焊接出来的焊点应该饱满,这样才减少或避免虚焊。

在焊接的过程中,先焊接电阻,底座,在焊接底座的时候不要将芯片插上去,以免高温将芯片烧坏,在焊接基本完成后,我就将芯片插上去,后来拔芯片的时候用力过大,将ADC0809的引脚折断了两根,于是我又到华中电子市场花12元购买了一个,完成了开发板。

简易计算器实训报告(一)

简易计算器实训报告(一)

简易计算器实训报告(一)简易计算器实训报告实训目的本次简易计算器实训的目的在于让学生了解python语言的基本语法和运算符,同时通过实践操作,提升学生的编程思维和实际应用能力。

实训内容本次实训内容主要包括以下方面:1.简易计算器的基本功能:加、减、乘、除。

2.计算器的界面设计与功能实现。

3.错误处理与异常捕获。

实训步骤步骤一:设计计算器界面在本次实训中,我们采用tkinter库来设计计算器的用户界面。

具体步骤如下:1.创建一个窗口;2.在窗口中添加各种按钮和文本框,用于输入和显示计算结果;3.将按钮按照功能分类,为每个按钮设置对应的事件处理函数。

步骤二:实现基本计算功能根据下拉菜单中所选的运算符,我们可以对输入的两个数进行相应的计算。

具体实现方法如下:1.在计算器窗口中添加一个下拉菜单,用于选择运算符;2.根据所选运算符,获取相应的输入数据,并调用对应的计算函数;3.将计算结果输出到窗口中。

步骤三:错误处理与异常捕获在实际应用中,我们不能保证用户输入的一定是数字,所以我们需要对输入做一些错误处理。

具体方法如下:1.在获取用户输入时,先对输入的字符串进行判断,如果用户输入不合法,弹出提示窗口;2.对于除数为0等异常情况进行相应的异常捕获处理,避免程序崩溃。

实训总结通过本次实训,我们学习了python语言的基本语法和运算符,并通过实践操作,学习了tkinter库的使用方法。

通过本次实训,我们还深入了解了计算器的界面设计和功能实现过程。

此外,我们也学会了一些常用的错误处理和异常捕获方法。

未来拓展本次实训只是简易计算器的基本实现,还有很多可以拓展的功能,如:1.添加科学记数法、三角函数、对数函数、平方根等高级数学运算;2.设计多个数字输入框,实现多操作数的计算;3.添加历史记录功能,记录用户计算过程和结果;4.将计算器移植到移动设备或网页上,提供更为便捷的计算服务。

5.添加输入历史记录及回显功能,便于用户查错和复查。

运算器实习报告主要收获

运算器实习报告主要收获

一、前言随着科技的不断发展,计算机技术已经渗透到社会的各个领域。

为了更好地了解计算机硬件,提高自己的实践能力,我在近期参加了运算器实习。

通过这次实习,我对运算器的原理、结构和工作流程有了更加深入的了解,以下是我在实习过程中的主要收获。

二、实习收获1. 理论知识的巩固在实习前,我对运算器的了解仅限于书本知识。

通过实习,我对运算器的各个组成部分及其工作原理有了更加清晰的认识。

例如,我了解了运算器中的算术逻辑单元(ALU)、寄存器、控制单元等部件的功能,以及它们之间的协同工作方式。

2. 实践操作能力的提升在实习过程中,我亲自动手搭建了一个简单的运算器模型,并进行了实验验证。

通过实践操作,我掌握了以下技能:(1)电路焊接技术:学会了如何正确焊接电子元件,确保电路的稳定性和可靠性。

(2)电路调试技术:掌握了电路调试的基本方法,能够根据电路原理图进行故障排查和修复。

(3)软件编程能力:学会了使用C语言编写程序,实现运算器的控制逻辑和功能。

3. 团队协作与沟通能力的提高在实习过程中,我与同学们共同完成了运算器模型的搭建和实验。

在这个过程中,我学会了如何与他人合作,共同解决问题。

同时,我还学会了如何与指导老师进行有效沟通,及时反馈自己的学习进度和遇到的问题。

4. 对计算机硬件的热爱通过这次实习,我对计算机硬件产生了浓厚的兴趣。

我认识到,计算机硬件是计算机系统的基石,只有掌握了硬件知识,才能更好地理解计算机的工作原理。

三、实习体会1. 实践是检验真理的唯一标准在实习过程中,我深刻体会到理论知识与实践操作相结合的重要性。

只有通过实践,才能真正掌握所学知识。

2. 团队合作的力量在实习过程中,我意识到团队协作的重要性。

一个优秀的团队,能够发挥出成员的最大潜能,共同完成艰巨的任务。

3. 持续学习,不断进步在实习过程中,我认识到自己在某些方面还存在不足。

为了更好地提高自己的实践能力,我将持续学习,不断进步。

四、结语通过这次运算器实习,我收获颇丰。

实训报告参考(计算器)

实训报告参考(计算器)

实训项目一——Java电子计算器【需求分析】在日常生活中经常需要用到计算器,比如科学计算、数值计算、会计业务等,在Applet中实现一个精巧实用的计算器,可以让用户在使用网站服务的同时,可以很方便地进行数据运算,可增加页面的实用性,同时让用户的操作也更方便与快捷。

本项目需要实现一个简单的四则运算的计算器,拥有加、减、乘、除功能。

【项目目的】理解并掌握Java中的类、对象、继承、方法等概念,以及Applet的基本框架和事件处理的方法。

学会使用JDK编写、调试和运行Java Applet应用程序。

利用awt组件编写一个计算器,实现基本的四则运算。

【项目分解】1、界面设计整个界面由3个面板组成,第1个面板放置输入信息和运算结果的显示文本域以及一个清除输入的按钮。

setLayout方法用于设置容器的布局管理器,这里采用流布局,即FlowLayout,所有放置的组件按大小依次排列。

第2个面板放置数字按钮、点按钮及等于按钮。

在for循环中,依次实例化9个数字按钮,并将按钮用add方法加入到第2面板中。

setForeground方法可为组件设置前景色,这里将按钮文字设置为红色(Color.red)显示,以将功能按钮与数字按钮区分开来。

第3个面板放置4个运算符:加、减、乘、除。

最后,将3个面板放置到Applet中,Applet按照FlowLayout布局,依次加入的3个面板会按照加入的顺序及它们的尺寸放置到合适的位置。

2.事件处理事件处理流程如下图所示:事件处理通过action方法来完成,方法体如下所示:public boolean action(Event e, Object o) {}可通过Event类的target变量来获取事件来源,如下面的语句,将e.target与等于按钮bEqual相比较,如果相符,则事件来源于等于按钮,这里应调用对应的方法处理运算结果,并显示出来。

if(e.target == bEqual) {doOperator();}初始化过程:(1)定义相关组件和变量(2)Applet的初始化(init)(3).事件处理 (actionPerformed)(4).其他自定义方法方法:doOperator,doClear, doForeText按钮输入的处理过程如下:(1)输入数据→ForeText(2)输入运算符→CurrentOpForeText→BackText(第一运算数), ForeText=""CurrentOp→PreOp(3)输入数据→ForeScreen(4)输入运算符→OpCurrent3. 数值运算从输入得到的都是字符串,在运算之前,需要转换成其他数据类型。

计算器设计实验报告

计算器设计实验报告

一、实验目的1. 熟悉数字电路的基本原理和设计方法。

2. 培养学生的动手能力和创新意识。

3. 设计并实现一个功能齐全的计算器。

二、实验原理计算器是一种常见的电子设备,其核心部件为运算单元。

本实验通过设计并实现一个计算器,使学生掌握以下原理:1. 按键扫描电路:用于读取按键信息。

2. 数据存储电路:用于存储输入的数值和运算符。

3. 运算电路:根据输入的运算符进行相应的运算。

4. 显示电路:用于显示运算结果。

三、实验仪器与材料1. 数字电路实验箱2. 计算器原理图3. 连接导线4. 按键5. LED显示器6. 电阻、电容等元件四、实验步骤1. 按键扫描电路设计(1)设计按键扫描电路原理图,包括按键、电阻、二极管等元件。

(2)根据原理图,搭建实验电路,并进行调试。

2. 数据存储电路设计(1)设计数据存储电路原理图,包括寄存器、计数器等元件。

(2)根据原理图,搭建实验电路,并进行调试。

3. 运算电路设计(1)设计运算电路原理图,包括加法器、减法器、乘法器、除法器等元件。

(2)根据原理图,搭建实验电路,并进行调试。

4. 显示电路设计(1)设计显示电路原理图,包括LED显示器、译码器等元件。

(2)根据原理图,搭建实验电路,并进行调试。

5. 整体电路设计(1)根据以上四个部分的设计,设计整体电路原理图。

(2)根据原理图,搭建实验电路,并进行调试。

五、实验结果与分析1. 按键扫描电路按键扫描电路能够正确读取按键信息,实现按键功能。

2. 数据存储电路数据存储电路能够存储输入的数值和运算符,为后续运算提供数据支持。

3. 运算电路运算电路能够根据输入的运算符进行相应的运算,实现加、减、乘、除等基本运算。

4. 显示电路显示电路能够将运算结果正确显示在LED显示器上。

5. 整体电路整体电路能够实现计算器的功能,满足实验要求。

六、实验总结1. 通过本次实验,掌握了数字电路的基本原理和设计方法。

2. 提高了动手能力和创新意识,培养了团队协作精神。

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

实验报告内容1:液晶模块的驱动电路设计(16*2)【一】实验目的1.熟练运用protel99SE软件。

1.初步了解各种型号的液晶驱动电路的设计思路,运用protel99SE设计驱动原理图原理图,并画出合理的封装PCB电路板。

【二】实验原理用2片164扩展行,2片595扩展列,用16个三极管进行led点阵的功率驱动。

1、164:8位串入,并出移位寄存器;时钟(CP)每次由低变高时,数据右移一位,输入到Q0,Q0是两个数据输入端(DSA和DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度;主复位(MR)输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。

2、595:74595和74164功能相仿,都是8位串行输入转并行输出移位寄存器。

74164的驱动电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些;74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。

这在串行速度慢的场合很有用处,数码管没有闪烁感;与164只有数据清零端相比,595还多有输出端时能/禁止控制端,可以使输出为高阻态。

3、三极管:三极管放大电流,加大扫描强度,提高点阵屏亮度。

【三】实验步骤简述1、运用protel99SE设计驱动原理图。

2、对原理图进行检查错误。

3、画PCB库元件4、封装PCB电路板。

5、生成PCB并且布线。

【四】设计中遇到的问题及解决方法(1)我们在画原理图时,因为之前有使用过protel99SE软件,还算比较顺利。

(2)在生成PCB的时候,总是报告我们有很多错,在读懂这些错后,我们发现我们所有的错都是没有对各原器件进行封装,我们在库里也找不到那些元器件,我们就自己画库并进行添加,终于没有错了。

(3)我们生成PCB后又出现了无法布线的错误,在经过老师的指导及自己的琢磨之后,调整了芯片的摆放位置之后,我们才布线成功,才顺利的完成此次实习。

【五】实验结果此程序最终在我们自己的开发板上成功的实现了老师所要求的全部功能,除此之外,我们还添加了特殊功能,可以输入带有小数点的数字,能够回删,能够计算sin,cos,tan, sinh,cosh,log等功能,并能够快速准确的计算出将结果。

【六】设计中遇到的问题及解决方法(1)首先,在刚开始进行此次实习内容的时候,由于刚开始对矩阵键盘复用的不熟悉导致我们走了很多弯路,也改了很多次,所以在同学的建议下我们采用了开发板最下面一行的键盘,才避免了复用的问题。

(2)在完成了各个小程序块的编写之后,我们把它进行了整合,可是但我们第一次下载时却们又出现我们想要的结果,液晶上不显示任何东西,我们检查了很多遍,最后才发现是液晶初始化出现了问题,导致液晶没有正确的初始化,就显示不了我们想要的结果,在改正之后我们的程序终于有的能够计算能够显示,但还是有很多的不足,再后来老师的建议下,我们又加了一个回删的功能,才使得程序变得完整。

【七】总结由于这是我第一次把按键控制在液晶上显示字符及数字,所以在编程过程中出现了一些问题,但最终还是在自己的努力,老师的指导和同学的帮助之下完成了此次试验。

通过这次实验,我对按键控制单元和液晶显示单元有了进一步的认识,知道如何显示一个字符串,如何在指定位置进行显示,也更加清楚得了解到了单片机的各个控制单元,以及液晶的内部原理。

与此同时,我也领悟到了,要想做好一件事,更加完美的,出色的完成课程设计,不仅要对各自的原理知道的非常清楚外,还要学会虚心学习,虚心求教。

而且,团队合作也是一个很关键的因素。

附录:主要源程序以及电路原理图或PCB版图/********算法部分********/void xianshi(float s,uchar a1,uchar b1){uchar k,pd=1,su,aa,bb;long int j,s1,s2;char i;aa=a1;bb=b1;k=0;if(s<0.0){s=s*(-1);print(aa,bb,"-");}s1=s*1000;s1=s1/1000;if(s<1.0){print(aa,bb,"0");aa++;}else{while(pd==1){j=cifang(k);su=s1/j%10;if(su==0){if(s<j){pd=0;}}k++;}k=k-2;for(i=k;i>-1;i--){j=cifang(i);su=s1/j%10;su++;shux1(su,aa,bb);aa++;}}print(aa,bb,".");aa++;s1=s*1000;s1=s1/100;s1=s1%10+1;shux1(s1,aa,bb);aa++;s1=s*1000;s1=s1/10;s1=s1%10+1;shux1(s1,aa,bb);}void xianshi2(float s,uchar a1,uchar b1,uchar d) {uchar k,pd=1,su,aa,bb;long int j,s1,s2,s3;char i;aa=a1;bb=b1;k=0;if(s<0.0){s=s*(-1);print(aa,bb,"-");}s1=s*1000;s1=s1/1000;if(s<1.0){print(aa,bb,"0");aa++;}else{while(pd==1){j=cifang(k);su=s1/j%10;if(su==0){if(s<j){pd=0;}}k++;}k=k-2;for(i=k;i>-1;i--){j=cifang(i);su=s1/j%10;su++;shux1(su,aa,bb);aa++;}}if(d==1){print(aa,bb,".");aa++;s1=s*10000;s1=s1/1000;s1=s1%10+1;s2=s*10000;s2=s2/100;s2=s2%10+1;s3=s*10000;s3=s3/10;s3=s3%10+1;if((s1!=1)||(s2!=1)){shux1(s1,aa,bb);aa++;}if(s2!=1){shux1(s2,aa,bb);aa++;}if(s3!=1){//shux1(s3,aa,bb);}}}/******************特殊功能部分*******************/ void mas(float s){uchar tmp1;float a;clr();a=s;xianshi(a,0,1);print(0,2,"sin cos log");print(0,3,"sinh exp tan");tmp1=0;while(tmp1==0){tmp1=Keyscan();while(Keyscan()>0);if(tmp1>8){tmp1=0;}}shux1(tmp1,0,4);switch(tmp1){case1:{a=cos(s);}break;//对应显示"cos"case2:{a=sin(s);}break;//对应显示"sin"case3:{a=log(s);}break;//对应显示"log"case4:{a=sinh(s);}break;//对应显示"sinh"case5:{a=cosh(s);}break;//对应显示"cosh"case6:{a=tan(s);}break;//对应显示"tan"} while(tmp1!=12){tmp1=Keyscan();while(Keyscan()>0);}clr();print(0,1,"结果");xianshi(a,0,2);tmp1=0;while(tmp1==0){tmp1=Keyscan();while(Keyscan()>0);}ql=1;}float shuzi(uchar a,uchar b){uchar d=0,tmp=0,biao=1,b2=0,aa,bb;float l1=0,l=0,b21=0;biao=1;aa=a;while(biao==1){tmp=Keyscan();while(Keyscan()>0);if(tmp<11&&tmp>0){t=1;if(d==0){l=tmp-1;l1=l1*10+l;//shux1(tmp,aa,b);aa++;xianshi2(l1,0,b,d);}if(d==1){if(b2<3){l=tmp-1;b21=cifang2(b2);l1=l1+l*b21;xianshi2(l1,0,b,d);//shux1(tmp,aa,b);aa++;b2++;}}}if(tmp==11){//if(l1==0){print(a,b,"0");}if(d==0){b2=1;print(aa,b,".");aa++;d=1;}}if(tmp==12){biao=0;}if(tmp>14&&tmp<19){biao=0;switch(tmp){case15:{fu=1;}break;//对应显示"+"case16:{fu=2;}break;//对应显示"-"case17:{fu=3;}break;//对应显示"*"case18:{fu=4;}break;//对应显示"/"}}if(tmp==13){ql=1;m2=1;biao=0;}if(tmp==14){if((t==1)&&(l1-l>=0)){if(d==0){l1=l1-l;l1=l1*0.1;print(0,b,"");xianshi2(l1,0,b,d);aa--;}if(d==1){l1=l1-l*b21;print(0,b,"");xianshi2(l1,0,b,d);b2--;aa--;}t=0;}}}return l1;}/**************主函数***********************/void main(){uchar biao=1,f,tmp;float l=0,l2,l3;lcd_init();//设定液晶工作方式m=2;while(1){clr();m2=0;ql=0;t=1;l2=shuzi(0,1);if(m2==1){mas(l2);ql=1;}if(ql==0){switch(fu){case1:{print(0,2,"+");}break;//对应显示"+"case2:{print(0,2,"-");}break;//对应显示"-"case3:{print(0,2,"*");}break;//对应显示"*"case4:{print(0,2,"/");}break;//对应显示"/"}t=1;l=shuzi(0,3);}if(ql==0){switch(fu){case1:l3=l+l2;break;//对应显示"+"case2:{if(l2<l){f=1;l3=l-l2;}else{l3=l2-l;}};break;//对应显示"-"case3:l3=l2*l;break;//对应显示"*"case4:l3=l2/l;break;//对应显示"/"}if(f==1){print(0,4,"=-");f=0;}else{print(0,4,"=");}xianshi(l3,2,4);tmp=0;while(tmp==0){tmp=Keyscan();while(Keyscan()>0);} }}}LCD1602外部接口接法L0列液晶接法L1行液晶接法HD44780接法11HD44100接法总电路图12图2PCB版图13。

相关文档
最新文档