模拟计算器设计实习报告

实验报告内容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。

合集下载

计算器实习报告

计算器实习报告

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

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

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

我的实习就是在学校里用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!,计算器)

东南大学生物科学与医学工程学院虚拟仪器实验报告第二次实验实验名称:程序结构专业:生物医学工程姓名:学号:同组人员:学号:实验室: 综合楼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. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档