搜档网
当前位置:搜档网 › VerilogHDL简单计算器设计

VerilogHDL简单计算器设计

VerilogHDL简单计算器设计
VerilogHDL简单计算器设计

目录

第一章设计目的及任务要求..................................................................................... 错误!未定义书签。

设计目的................................................... 错误!未定义书签。

设计任务................................................... 错误!未定义书签。

课设要求................................................... 错误!未定义书签。第二章设计思路............................................... 错误!未定义书签。

设计总体框图............................................... 错误!未定义书签。

设计原理................................................... 错误!未定义书签。

计算其原理............................................. 错误!未定义书签。

数码显示原理........................................... 错误!未定义书签。

八位数码管扫描的原理................................... 错误!未定义书签。第三章设计源程序及分析....................................... 错误!未定义书签。

计算器模块................................................. 错误!未定义书签。

计算器源程序........................................... 错误!未定义书签。

计算器程序分析......................................... 错误!未定义书签。

数码管显示部分...................................................................................................... 错误!未定义书签。

数码管显示源程序.......................................................................................... 错误!未定义书签。

数码管显示程序分析..................................................................................... 错误!未定义书签。

循环扫描模块........................................................................................................... 错误!未定义书签。

循环扫描程序................................................................................................... 错误!未定义书签。

循环程序分析................................................................................................... 错误!未定义书签。

总程序及其分析...................................................................................................... 错误!未定义书签。第四章时序仿真和结果验证..................................................................................... 错误!未定义书签。

计算器时序仿真及其分析.................................................................................... 错误!未定义书签。

数码管时序仿真及分析 ........................................................................................ 错误!未定义书签。

总体时序仿真图...................................................................................................... 错误!未定义书签。

结果验证.................................................................................................................... 错误!未定义书签。第五章心得体会............................................................................................................ 错误!未定义书签。

第一章设计目的及任务要求

设计目的

(1)进一步加强熟练EDA基础知识。

(2)熟练掌握Quartus 软件的使用以及用该软件编程和仿真的全过程。

(3)培养独立思考问题,解决问题的能力以及查阅相关资料和资料的正确使用能力,为明年的毕业设计打下良好的设计基础。

设计任务

设计一个简单计算器,输入为8位二进制数,分别用两位数码管显示,输出的计算结果为16位二进制数,并用四位数码管显示,能够实现+、-、*、/ 四种运算,其中除法的结果显示分为商和余数两部分,分别用两位数码管显示。

课设要求

(1)说明题目的设计原理和思路、采用方法及设计流程。

(2)系统框图、Verilog语言设计程序或原理图。

(3)对各子模块的功能以及各子模块之间的关系做较详细的描述。

(4)详细说明调试方法和调试过程。

(5)说明测试结果:仿真时序图和结果显示图,并对其进行说明和分析。

第二章设计思路

设计总体框图

有分析可知,本次课程设计可以分成五个木块来实现相应的功能,分别是输入模块,计算模块,扫描模块,输出模块以及显示模块。

图一设计总体框图

设计原理

计算其原理

Verilog语言中可直接用运算符+、-、*、/、%来实现四则运算,系统会根据程序自动综合出相应的计算器。

分别是加法器模块,减法器模块,乘法器模块和除法器模块,当程序变得正确的话则各个程序会按照一定的步骤一步步的往下执行的。

数码显示原理

7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。设计7段译码器,输出信号LED7S的7位分别接如图一数码管的7个段,高位在左,低位在右。例如当LED7S输出为“1101101”时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段发亮,于是数码管显示“5”。注意,这里没有考虑表示小数点的发光管,如果要考虑,需要增加段h。共阴极七段数码管的原理图如下图二所示。

图二共阴极七段数码管

八位数码管扫描的原理

图三所示的是8位数码扫描显示电路,其中每个数码管的7个段:g、f、e、d、c、b、a都分别连在一起,8个数码管分别由8个选通信号k1、k2、…k8来选择。被选通的数码管显示数据,其余关闭。如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其它7个数码管呈现关闭状态。根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1、k2、…k8分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。

图三8位数码管显示驱动电路

扫描电路通过可调时钟输出片选地址SEL[2..0]。由SEL[2..0] 通过3-8译码器决定了8位中的哪一位显示,SEL[2..0]变化的快慢决定了扫描频率f扫描的快慢。扫描频率大于人眼的分辨率时,呈现出八个数码管同时点亮。

第三章设计源程序及分析计算器模块

计算器源程序

mdule jsq(a,b,c,out);

input[7:0]a,b;

input[1:0]c;

otput[15:0]out;

reg [15:0]out

reg[7:0]out1,out2;

always@(a,b,c,out)

case(c)

2'b00:out=a+b;

2'b01:out=a-b;

2'b10:out=a*b;

2'b11:

begin

out1=a/b;

out2=a%b;

out={out1,out2};

end

default:;

endcase

endmodule

计算器程序分析

该模块是本次设计的核心部分,用于实现四则运算,两位八位二进制数a、b作为待计算的输入,并输入两位二进制数c作为计算功能选择,00代表加法运算、01代表减法运算、10代表乘法运算、11代表除法运算。输出16位二进制数out位运算结果。并在总体设计中把输入、输出端接到数码管上。

数码管显示部分

数码管显示源程序

module DECL7S (A, LED7S);

input [3:0] A;

output [6:0] LED7S;

reg [6:0] LED7S;

always @(A)

begin

case(A)

4'b0000 : LED7S<=7'b0111111;

4'b0001: LED7S <= 7'b0000110 ;

4'b0010: LED7S <= 7'b1011011;

4'b0011: LED7S <= 7'b1001111;

4'b0100: LED7S <= 7'b1100110 ;

4'b0101: LED7S <= 7'b1101101;

4'b0110: LED7S <= 7'b1111101 ;

4'b0111: LED7S <= 7'b0000111 ;

4'b1000: LED7S <= 7'b1111111 ;

4'b1001: LED7S <= 7'b1101111 ;

4'b1010: LED7S <= 7'b1110111 ;

4'b1011: LED7S <= 7'b1111100 ;

4'b1100: LED7S <= 7'b0111001 ;

4'b1101: LED7S <= 7'b1011110 ;

4'b1110: LED7S <= 7'b1111001 ;

4'b1111: LED7S <= 7'b1110001 ;

endcase

end

endmodule

数码管显示程序分析

该模块是整个设计中的显示部分,是一个编码器组合逻辑设计,每个数码管可显示十六进制0至F,对应4位二进制数,因此输入端a、b分别用两个数码管显示,输出out用四个数码管显示,该设计中需要八个同样的数码管显示器,即。此模块将在总程序中被调用八次。

循环扫描模块

循环扫描程序

modulexhsm(clk,rst,count,Dout);

inputclk,rst;

output[6:0]Dout;

output[2:0]count;

reg[6:0]Dout;

reg[2:0]count;

always@(posedge clk or negedge rst)

begin

if(!rst)

count<=3'b000;

else if(count==3'b111)

count<=3'b000;

else

count<=count+3'b001;

end

always@(posedge clk)

begin

case(count)

3'b000: Dout<=LED7S1;

3'b001:Dout<=LED7S2;

3'b010:Dout<=LED7S3;

3'b011:Dout<=LED7S4;

3'b100: Dout<=LED7S5;

3'b101:Dout<=LED7S6;

3'b110:Dout<=LED7S7;

3'b111:Dout<=LED7S8;

endcase

end

endmodule

循环程序分析

该模块是一个循环计数器,在时钟和复位信号的控制下,从000—111循环计数分别控制八个数码管循环点亮,由于时钟的频率比较快,大于人眼的分辨率,所以显示出八个数码管同时点亮,即同时显示计算器的输入、输出。

总程序及其分析

module jsq9(a,b,c,Dout,count,clk,rst);

input[7:0]a,b;

input clk,rst;

input[1:0]c;

output[6:0]Dout;

output [2:0]count;

reg[6:0]Dout;

reg[2:0]count;

reg[15:0]out;

reg[6:0] LED7S1,LED7S2,LED7S3,LED7S4, LED7S5,LED7S6,LED7S7,LED7S8;

DECL7S u1(.A(a[7:4]) , .LED7S(LED7S1));

DECL7S u2(.A(a[3:0]) , .LED7S(LED7S2));

DECL7S u3(.A(b[7:4]) , .LED7S(LED7S3));

DECL7S u4(.A(b[3:0]) , .LED7S(LED7S4));

DECL7S u5(.A(out[15:12]) , .LED7S(LED7S5));

DECL7S u6(.A(out[11:8]) , .LED7S(LED7S6));

DECL7S u7(.A(out[7:4]) , .LED7S(LED7S7));

DECL7S u8(.A(out[3:0]) , .LED7S(LED7S8));

reg[7:0]out1,out2;

always@(a,b,c,Dout,count,clk,rst)

case(c)

2'b00:out=a+b;

2'b01:out=a-b;

2'b10:out=a*b;

2'b11:

begin

out1=a/b;

out2=a%b;

out={out1,out2};

end

default:;

endcase

always@(posedge clk or negedge rst) begin

if(!rst)

count<=3'b000;

else if(count==3'b111)

count<=3'b000;

else

count<=count+3'b001;

end

always@(posedge clk)

begin

case(count)

3'b000: Dout<=LED7S1;

3'b001:Dout<=LED7S2;

3'b010:Dout<=LED7S3;

3'b011:Dout<=LED7S4;

3'b100: Dout<=LED7S5;

3'b101:Dout<=LED7S6;

3'b110:Dout<=LED7S7;

3'b111:Dout<=LED7S8;

endcase

end

endmodule

module DECL7S (A, LED7S);

input [3:0] A;

output [6:0] LED7S;

reg [6:0] LED7S;

always @(A)

begin

case(A)

4'b0000 : LED7S<=7'b0111111;

4'b0001: LED7S <= 7'b0000110 ;

4'b0010: LED7S <= 7'b1011011;

4'b0011: LED7S <= 7'b1001111;

4'b0100: LED7S <= 7'b1100110 ;

4'b0101: LED7S <= 7'b1101101;

4'b0110: LED7S <= 7'b1111101 ;

4'b0111: LED7S <= 7'b0000111 ;

4'b1000: LED7S <= 7'b1111111 ;

4'b1001: LED7S <= 7'b1101111 ;

4'b1010: LED7S <= 7'b1110111 ;

4'b1011: LED7S <= 7'b1111100 ;

4'b1100: LED7S <= 7'b0111001 ;

4'b1101: LED7S <= 7'b1011110 ;

4'b1110: LED7S <= 7'b1111001 ;

4'b1111: LED7S <= 7'b1110001 ;

endcase

end

endmodule

该程序是本次设计的最终程序,主要是将以上三个模块联系起来。

其中反复调用数码管显示模块,将其与计算器模块相连。其输入A在u1中与计算器输入a的高四位相连,输出LED7S与LED7S1相连,在硬件上实现用一个数码管显示输入a的高四位,以此类推u2模块实现用数码管显示a的低四位,u3对应b的高四位,u4对应b的第四位,u5对应out的高四位,u6对应out次高四位,u7对应out的次低四位,u8对应out的低四位。

循环计数器模块,与八个数码管显示模块相连,当输出count为某一确定时,将不同数码管的输出赋给程序的总输出Dout点亮相应的数码管,例如当count=3‘b000时,LED7S1赋给Dout,此时试验箱是对应输入a的高四位的数码管被点亮。

通过以上连接该程序实现了输入为8位二进制数,分别用两位数码管显示,输出的计算结果为16位二进制数,并用四位数码管显示,能够实现+、-、*、/ 四种运算,其中除法的结果显示分为商和余数两部分,分别用两位数码管显示的设计要求。

第四章时序仿真和结果验证

计算器时序仿真及其分析

图四计算器时序仿真图

如图四所示为计算器的实序仿真图,当输入a为00000001、b为00000001、c为01时输出out为0000000000000000即1-1=0;当输入a=00000010,b=00000010,c=10时输出out=0000000000000100.即2*2=4,当输入a=00000011,b=00000011,c=11时输出out1=00000001,out2=00000000,即3/3=1余数为0当输入a=00000100,b=00000100,c=00时输出out=00001000即4+4=8.经此验证分析证明此计算器计算准确无误。模块设计成功。

数码管时序仿真及分析

图五数码管时序仿真图

如图五所示为数码管显示器的时序仿真波形,当输入为0011时七段数码管中abcdefg的高低电平分别为1111001即abcdg点亮显示数字3,当输入为0000时七段数码管对应显示1111110即abcdef被点亮显示数字0.经验证其他数字显示均正确,七段数码管显示器模块设计仿真成功。

总体时序仿真图

图六所示为整个设计的仿真波形图,对其分析如下,首先分析最下边三行的循环计数器部分,当复位信号为0时count计为000当复位为1每当时钟上升沿来临时count加1,计满后恢复000继续循环,此部分验证成功。

接下来看控制显示部分,输入a=00000000,b=00000000,c=00,当count=000时显示a的高四位0000,Dout=01111111,显示数字0;正确。当count=001时显示a的低四位0000,Dout=01111111,显示数字0,正确。经验证,其他数码管显示与相应的输入也是一一对应,因此时序仿真成功。

图六总体时序仿真图

结果验证

如下图所示在试验箱中输入a=00000010,b=00001100,c=00即显示如下结果:02+0C=000E,即

2+12=14,验证结果正确

图七结果验证图

第五章心得体会

为期五天的EDA课程设计很快就结束了,原则上是必须独立完成这次课程设计的,但是由于平时学习的理论知识不够扎实,所以在课程设计环节遇到了很多困难。遇到困难不可怕,关键是要专心的去学习,研究,最终在老师和同学的大力帮助之下我还是顺利里的完成了课程设计的所有内容。现在回过头来想想这次的课设给我本人还是带来了很多的收获。

首先,通过本次课程设计,我对EDA这门课程有了更深入的体会和了解,也加深了我在理论课堂和实验课程中所学知识的理解,从拿到题目开始,就分析完成这样的设计需要用到哪些模块,这些模块基本上都是课上讲过的,关键是怎样把他们连接起来,构思好之后就要分模块写程序,在软件上编译、仿真以及搭接电路实现他的功能。

其次,通过这次课设也然我认识到了自己的不足之处---知识的运用能力太差经了。课程设计是在强硬的理论基础上进行的,在上理论课的时候觉得自己的理论知识学习的还可以,刚开始觉得有了过硬的理论知识再来做课设那是很简单的事情,然而当自己真正的动手做起来的时候缺老感觉力不从心,感觉理论课上学习的知识一无是处,处处碰壁。后来分析才知道是自己的能力了太差,不能联系理论与实际。所以在以后的学习和生活过程一定要注意这方面的锻炼。

最后,这次的课设让我认识到了坚持精神的可贵之处。由于本人没有把EDA课程的里路知识学习的很扎实,所以在整个过程中遇到了许多的难处,一次次的打击让我对本次课设失去了信心,正在这时候,我的以为要好的朋友安慰我说,没事的,自己尽量的做,做到多少是多少,不行的话他还可以是不是的帮助我一下。就是这样,我在老师和朋友的帮助和耐心的辅导下顺利的完成了课程设计的整个过程。这次是大学四年里最后一次课程设计了,这次课程设计的经验我将永远记住,也算是明年毕业设计前的一次热身吧。

GUI设计的简易计算器附程序

电子信息工程系实验报告 课程名称:MATLAB 应用 实验项目名称:GUI 计算器设计 实验时间:2012-11-22班级:测控081姓名:学号:810707132实验目的: 1.熟悉MATLAB 的菜单设计方法 2.熟悉MATLAB 的主要控件使用方法 3.熟悉MATLAB 的GUI 设计流程 4.运用MATLAB 的GUI 设计一个简单的计算器 实验环境: MATLAB7.8 实验内容: function varargout =jisuanqi1(varargin)%JISUANQI1M-file for jisuanqi1.fig %JISUANQI1,by itself,creates a new JISUANQI1or raises the existing %singleton*.%%H =JISUANQI1returns the handle to a new JISUANQI1or the handle to %the existing singleton*.%%JISUANQI1('CALLBACK',hObject,eventData,handles,...)calls the local %function named CALLBACK in JISUANQI1.M with the given input arguments.%%JISUANQI1('Property','Value',...)creates a new JISUANQI1or raises the %existing singleton*.Starting from the left,property value pairs are %applied to the GUI before jisuanqi1_OpeningFunction gets called.An %unrecognized property name or invalid value makes property application %stop.All inputs are passed to jisuanqi1_OpeningFcn via varargin.%%*See GUI Options on GUIDE's Tools menu.Choose "GUI allows only one %instance to run (singleton)".%%See also:GUIDE,GUIDATA,GUIHANDLES %Edit the above text to modify the response to help jisuanqi1 %Last Modified by GUIDE v2.505-Dec-201022:24:59 %Begin initialization code -DO NOT EDIT gui_Singleton =1;成 绩: 指导教师(签名):

C语言程序设计之简单计算器

攀枝花学院 学生课程设计(论文) 题目:简易计算器 学生姓名:葛肪瑜学号:201010801018 所在院(系):计算机学院 专业:计算机科学与技术 班级:10计本(1)班 指导教师:陈三清职称:讲师 2011年6月25日 攀枝花学院教务处制

攀枝花学院本科学生课程设计任务书 题目计算器的设计 1、课程设计的目的 本课程设计的目的和任务:(1)巩固和加深学生对C语言课程的基本知识的理解和掌握;(2)掌握C语言编程和程序调试的基本技能;(3)利用C语言进行简单软件设计的基本思路和方法;(4)提高运用C语言解决实际问题的能力。 2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等) 一、用C实现如下功能: 使用C语言编写一个类似于Windows附件提供的计算器软件,实现计算器的基本功能,能进行浮点数的加、减、乘、除、乘方和求模运算。 二、撰写课程设计报告或课程设计总结课程设计报告要求:总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。 3、主要参考文献 [1] 潭浩强,《C程序设计》,清华大学出版社 [2] 王声决,《C语言程序设计》,中国铁道出版社 [3] 潭浩强,《C程序设计题解与上机指导》,清华大学出版社 [4] 刘玲等,《C语言程序设计应用教程》,西南师范大学出版社 4、课程设计工作进度计划 第1天完成方案设计与程序框图 第2、3天编写程序代码 第4天程序调试分析和结果 第5天课程设计报告和总结 指导教师(签字)日期年月日 教研室意见: 年月日 学生(签字): 接受任务时间:年月日注:任务书由指导教师填写。

简易计算器的设计与实现

沈阳航空航天大学 课程设计报告 课程设计名称:单片机系统综合课程设计课程设计题目:简易计算器的设计与实现 院(系): 专业: 班级: 学号: 姓名: 指导教师: 完成日期:

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (1) 1.1设计内容 (1) 1.2设计原理 (1) 1.3设计思路 (2) 1.4实验环境 (2) 第2章详细设计方案 (3) 2.1硬件电路设计 (3) 2.2主程序设计 (7) 2.2功能模块的设计与实现 (8) 第3章结果测试及分析 (11) 3.1结果测试 (11) 3.2结果分析 (11) 参考文献 (12) 附录1 元件清单 (13) 附录2 总电路图 (14) 附录3 程序代码 (15)

第1章总体设计方案 1.1 设计内容 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除1位无符号数字的简单四则运算,并在6位8段数码管上显示相应的结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的8751单片机,输入采用4×4矩阵键盘。显示采用6位8段共阳极数码管动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,最终选用汇编语言进行编程,并用protel99se涉及硬件电路。 1.2 设计原理 在该课程设计中,主要用到一个8751芯片和串接的共阳数码管,和一组阵列式键盘。作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。 1)提出方案 以8751为核心,和数码管以及键盘用实验箱上已有的器件实现计算器的功能。 2) 总体方案实现 (1)要解决键值得读入。先向键盘的全部列线送低电平,在检测键盘的行线,如果有一行为低电平,说明可能有按键按下,则程序转入抖动检测---就是延时10ms再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码

简单计算器设计报告

简单计算器设计报告 045 一、基本功能描述 通过文本编辑框实现基本整数的加减乘除运算 二、设计思路 如下图是整个程序进行的流程图,基本方法是在ItemText文本编辑框输入字符,程序对字符进行判断,若输入不是数字则提示错误。输入正常时,通过下拉框ComboBox_InsertString 选择相应运算符。点击等号IDC_OK,即可得出运算结果。操作简便,算法简单。 三、软件设计 1、设计步骤 打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名zhoutong及其所在位置,点击确定 1

将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成 MFC AppWizard就建立了一个基于对话窗口的程序框架

四、主要程序分析 1、字符判定函数 BOOL IsInt(TCHAR*str) { int i=atoi(str); TCHAR strtemp[256]; wsprintf(strtemp,"%i",i); if(strcmp(str,strtemp)!=0) { return FALSE; } Else { return TRUE; } } 该函数通过atoi把文本编辑框读取的字符转换为数字,再通过wsprintf把转换数字转换为字符,通过strcmp比较原字符和转换得来的字符。如相同返回true,不通则返回false. 3、运算符选择程序 BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { HWND hwndComboOP=GetDlgItem(hwnd,IDC_COMBOOP); ComboBox_InsertString(hwndComboOP,-1,TEXT("+")); ComboBox_InsertString(hwndComboOP,-1,TEXT("-")); ComboBox_InsertString(hwndComboOP,-1,TEXT("*")); ComboBox_InsertString(hwndComboOP,-1,TEXT("/")); return TRUE; } 3

c面向对象程序设计MFC简单计算器实验报告

计算机与信息工程学院 《程序设计基础》课程设计报告 题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东 学生学号:2011508154 专业班级:电子信息工程(1)班 指导教师:高攀

1 课程设计的题目 编写一个能实现简单功能的计算器 2 题目要求 1. 有一个计算器图形。 2. 能实现加、减、乘、除及乘方的运算。 3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色 例如:输入数字1 时,在计算器图形上的1键变为红色。 4. 屏幕、图形颜色、形状自定 3 总体设计 3.1 总体框架 图1 系统框架

3.2 系统功能说明 在VC++6.0中绘制计算器界面,各控件的设置 对0~9控件设定相应的ID和其他属性: 图2 “1”控件设置 对“+、-、*、\”控件设定相应的ID和其他属性: 图2 “+”控件设置 对其它控件设定相应的ID和其他属性: 图3 其它控件设置

主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 4 程序详细设计 4.1系统主调模块 图5 程序流程图

4.2各模块详细设计 4.2.1 建立的变量,控件的命名,对应的消息处理函数对应表 double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。 double m_Dis; //Edit控件上需要显示的数字 BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。 double numfirst; //保存计算过程中的前一个数字, double numsecond;//保存计算过程中的第二个数字 char op;//记录当前的计算符号,可以为’+’,’-’,’*’,’/’,’=’,’c’,’n’ 变量初始化: poz=1; m_Dis = 0.0; numfirst=0; numsecond=0; op=0;

第02讲 简易计算器的设计

第02讲计算器 2.1 计算器简介 大家都知道,计算器是日常生活中不可缺少的一个工具,在Microsoft的Windows操作系统中,附带了一个计算器程序,有标准型和科学型两种模式。Windows XP下的标准型和科学型计算器程序分别如图2-1和图2-2所示。 图2-1 Windows XP下的标准型计算器 图2-2 Windows XP下的科学型计算器 Windows操作系统下附带的计算器程序功能相当的强大,本课我们将模仿Windows的计算器,使用Visual C# 2005开发平台开发一个功能相对简单的计算器应用程序,它能完成加、减、乘、除运算。 接下来详细的介绍简易计算器的设计方法和步骤。

2.2 界面设计及属性设置 用户界面设计是软件开发中非常重要的一个部分,用户界面的好坏直接影响软件的质量,本节将介绍如何设计简易计算器的用户界面以及界面上各控件的属性设置。 2.2.1 界面设计 打开Visual Studio 2005开发工具,新建一个Windows应用程序,然后在窗体上依次放置1个TextBox和17个Button控件,如图2-1所示(设置好属性后)。 图2-1 计算器用户界面 2.2.2 属性设置 窗体和各控件的属性设置如表2-1所示。 表2-1 窗体和各控件的属性

2.3 编写代码 本程序需要用到一些公共变量,例如用来接收操作数、运算结果,判断输入的是否为小数等,因此首先在代码的通用段声明以下变量: //****************************************************************** double num1, num2, result; // 操作数及运算结果 bool decimalFlag = false; // 判断输入的是否为小数 string myOperator; // 操作类型 //******************************************************************

基于单片机的简易计算器设计

目录 引言 (1) 第一章设计原理及要求 (2) 1.1设计方案的确定 (2) 1.2系统的设计方案 (2) 1.3系统的设计要求 (2) 第二章硬件模块设计 (4) 2.1单片机AT89C51 (4) 2.1.1 AT89C51芯片的特点 (5) 2.1.2 管脚说明 (5) 2.1.3 振荡器特性 (7) 2.1.4 芯片擦除 (7) 2.2键盘控制模块 (7) 2.2.1 矩阵键盘的工作原理 (8) 2.2.2 键盘电路主要器件介绍 (8) 2.3LCD显示模块 (10) 2.3.1 显示电路 (11) 2.3.2 LCD1602主要技术参数 (11) 2.3.3 引脚功能说明 (11) 2.4运算模块(单片机控制) (12) 第三章软件设计 (14) 3.1功能介绍 (14) 3.2系统流程图 (14) 3.3程序 (16) 第四章系统调试 (17) 4.1软件介绍 (17) 4.1.1 Keil uVision2仿真软件简介 (17) 4.1.2 protues简介 (17)

4.2软件调试 (18) 4.2.1 软件分析及常见故障 (18) 4.2.2 仿真结果演示 (20) 4.3硬件调试 (21) 结束语 (23) 参考文献 (24) 附录 (25) 致谢 (36)

引言 计算工具最早诞生于中国,中国古代最早采用的一种计算工具叫筹策,也被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的,约二百七十枚一束,放在布袋里可随身携带。另外直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。 17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的“纳皮尔算筹”,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加、减、乘、除、乘方和开方运算,甚至可以计算三角函数、指数函数和对数函数。这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。1642年,年仅19岁的法国伟大科学家帕斯卡引用算盘的原理,发明了第一部机械式计算器,在他的计算器中有一些互相联锁的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,人们可以像拨电话号码盘那样,把数字拨进去,计算结果就会出现在另一个窗口中,但是它只能做加减运算。1694年,莱布尼兹在德国将其改进成可以进行乘除的计算。此后,一直到20世纪50年代末才有电子计算器的出现。

简单计算器c++课程设计讲解

简单计算器 1 基本功能描述 简单计算器包括双目运算符和单目运算符。双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦、阶乘、对数、开方、倒数等运算。可对输入任意操作数包含小数和整数及正数和负数进行以上的所有运算并能连续运算。出现错误会给出提示,同时包含清除、退格、退出功能以及有与所有按钮相对应的菜单项。 2 设计思路 如图1,是输入数据子函数的流程图。打开计算器程序,输入数据,判断此次输入之前是否有数字输入,如果有,则在之前输入的数字字符后加上现有的数字字符;如果没有,则直接使编辑框显示所输入的数字字符。判断是否继续键入数字,如果是,则继续进行前面的判断,如果否,则用UpdateData(FALSE)刷新显示。 如图2,是整个计算器的流程图。对于输入的算式,判断运算符是双目运算符还是单目运算符。如果是双目运算符,则把操作数存入数组a[z+2]中,把运算符存入b[z+1]中;如果是单目运算符,则把字符串转化为可计算的数字,再进行计算。下面判断运算符是否合法,如果合法,则将结果存入a[0],不合法,则弹出对话框,提示错误。结束程序。

输入一个数字 在之前输入的数字字符后面加上现在的数字字符。 Eg :m_str+=”9”。 直接使编辑框显示所输入的数字字符。 Eg :m_str=”9”。 pass3=1表示已有数字输入 开始 之前是否有数字输入? pass3==1? 继续键入数字? 用UpdateData(FALSE)刷新显示 图1 输入数据子函数流程图 Y N Y N

输入开始 双目运算符 是否每一个操作数都存入a[]数组? 把操作数存入a[z+2],把运算符存入b[z+1]。 单目运算符 将字符串转换 为可计算的数进行运算 运算是否合法? 将结果存入a[0] 弹出对话框提示错误 结束Y Y N N 图2 简单计算器总流程图

MFC做的一个简单的计算器

目录 一.设计题目。 (1) 二.设计目的和内容。 (1) 三.基本功能描述。 (2) 四.设计思路。 (2) 五.软件设计:设计步骤、界面设计、关键功能的实现。 (3) a)设计步骤。 (3) b)界面设计。 (4) c)关键功能的实现。 (5) 六.附录。 (8) 一.设计题目。 小型计算器程序的编写. 二.设计目的和内容。 【设计目的】 1学习Visual C++的MFC开发程序的步骤。 2综合运用所学的类、继承和多态的知识。 3进一步掌握程序的调试方法。 【设计内容】 1利用MFC的向导,创建基于对话框的应用程序,添加按钮、编辑框等控件; 第1页

2实现算术加、减、乘、除等运算; 3选做:三角函数的运算、对数运算、指数运算、进制转换等。 三.基本功能描述。 具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果,按‘C E’键清屏。 四.设计思路。 a)首先考虑对所有按键分为两类,数字类和符号类。0,1,2,3,4,5,6,7,8,9为 数字类,+,-,*,/为符号类。数字在计算过程中最多需要保存两个,所以定义了两个double型变量num1和num2来进行存储,符号需要一个char型变量cal来存储。 b)为显示数字的编辑框设立一个double型的关联变量m_Num,为显示符号的编 辑框设立一个CString型的关联变量m_result,设立一个int型的小数点标志dotflag,设立一个int型的键入数字标志numflag,设立一个long型的小数部分权值quan,最后为了防止用户输入错误,设立一个判断输入是否为数字的int型标志mark。 c)然后考虑到在计算过程中num1和num2的储存状态有三种,num1==0和 num2==0,也就是程序开始运行还没有开始录入数字的状态;num1!=0和num2==0,也就是第一个数字已经录入,第二个数字还没有录入的状态这时候把m_Num的值赋给num1,m_Num归零;num1!=0和num2!=0,把m_Num的值赋给num2,m_Num归零,令m_Num等于num1和num2合并后的值。

基于AT89C51的简单计算器设计

设计题目:基于单片机的简易计算器设计与仿真 一、设计实验条件: 地点: 实验设备:PC机(装有Keil;Protues;Word ;Visio ) 二、设计任务: 本系统选用AT89C51单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计,具体设计如下: (1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LCD 显示数据和结果。 (2)采用键盘输入方式,键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键(on\c)和等号键(=),故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示overflow;当除数为0时,计算器会在LCD上提示error。 设计要求:分别对键盘输入检测模块;LCD显示模块;算术运算模块;错误处理及提示模块进行设计,并用Visio画系统方框图,keil与protues仿真 分析其设计结果。 三、设计时间与设计时间安排: 1、设计时间:6月27日~7月8日 2、设计时间安排: 熟悉课题、收集资料:3天(6月27日~6月29日)

具体设计(含上机实验):6天(6月30日~7月5日) 编写课程设计说明书:2天(7月6日~7月7日) 答辩:1天(7月8日) 四、设计说明书的内容: 1、前言:(自己写,组员之间不能相同,写完后将红字删除,排版时注意对齐) 本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除基本四则运算,并在LCD上显示相应的结果;设计电路采用AT89C51单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入;显示采用字符LCD静态显示;软件方面使用C语言编程,并用PROTUES仿真。 2、设计题目与设计任务: 现实生活中人们熟知的计算器,其功能主要如下:(1)键盘输入;(2)数值显示;(3)加、减、乘、除四则运算;(4)对错误的控制及提示。 针对上述功能,计算器软件程序要完成以下模块的设计:(1)键盘输入检测模块;(2)LCD显示模块;(3)算术运算模块;(4)错误处理及提示模块。3、主体设计部分: (1)、系统模块图:

单片机设计简易计算器

简易计算器 Simply Calculator 1 设计思想 此计算器有键盘部分、单片机、显示部分三部分组成,键盘部分主要完成输入功能;单片机主要完成数据处理功能,包括确定按键,完成运算,以及输出数据;显示器部分主要完成单片机输出的显示。 本设计的思路是利用单片机性能好,稳定性强的优点来实现系统的运行。设计大致可以分为三个步骤:第一步,硬件的选取和设计;第二步,程序的设计和调试;第三步,Protues 系统仿真。 硬件是设计的骨骼,不仅关系到设计总体方向的确定,还要综合考虑节能,环保,以及稳定性和经济性等各种因素。因此需要花费大量的时间。硬件的选取最为重要,包括选用的芯片,显示设备的选取,输入设备的选取等。本设计是通过单片机来实现的,因此选用了ATMEGA16单片机作为主体,输入设备选用矩阵键盘。程序是硬件的灵魂,是实现设计的中心环节。本设计使用的程序语言是C语言,在“ICC AVR”中运行,调试,直到运行出正确结果,然后输出后缀名为.HEX格式的文件,以备在Protues中仿真使用。程序是设计的关键,程序的调试需要大量的时间,耐心,还够要有足的细心才能成功。本设计中就出现了大量的错误,经过认真修改,最终才能运行出正确结果。最后的系统仿真是设计是否成功的验证,是设计不可缺少的重要环节。这就要求能掌握Protues的一些基本操作。2原理分析 2.1矩阵键盘的扫描 图2.1 矩阵键盘图

如图2.1所示,单片机的8个I/O口和矩阵键盘相连,用8个I/O口来控制矩阵键盘的16个按键是非常有意思的,首先我们设置单片机的PD0—PD7为输出,且PD0—PD3依次设置为低电平,而PD4—PD7设置为高电平,然后我们设置PD4—PD7为输入,而PD0—PD3仍然为输出,假如此时M1键按下,则PD0与PD4相连,因为PD0是低电平,而PD4是输入,所以PD4会被拉为低电平,同理,如果M2被按下,则PD5会被拉低,M3按下,PD6会被拉低,M4按下,PD7被拉低。这是判断有无键盘按下的过程,当我们判断是那一个键盘按下时,我们首先设置8个I/O口为输出,输出为FE,即,PD0为低电平,其他全为高电平,然后我们设置PD4—PD7为输入,如果M1被按下,则PD4会比被拉为低电平,此时会变成EE,同理可以知道M2被按下时会变为DE,M3被按下时会变为BE,M4被按下时会变为7E。同理我们可以设置8个I/O口输出FD来检测M5—M8是否被按下,设置8个I/O口输出FC来来检测M9—M12,设置8个I/O口输出F7来检测M13—M16,如果M1—M4没有被按下,就继续检测M4—M8,一次类推,就可以检测出16个按键了。在这次设计中,16个按键M1—M16所对应检测值分别为:EE,DE,BE,7E,ED,DD,BD,7D,EB,DB,BB,7B,E7,D7,B7,77。 2.2 数字显示与计算 本次设计选用的显示器是1602液晶显示器,此液晶显示器能显示32个字符,VSS接地,VDD接电源正极,E为时使能信号,R/W为读写选择端(H/L),RS为数据/命令选择端(H/L),D0—D7为数据I/O口。 首先我们初始化液晶显示器,然后显示出第一个被按下的数,并且使光标右移,如果有第二个数按下,则据继续显示,以此类推,然后把所有显示出来的数换算成一个数,如果按下“+”号,则显示出“+”,并且同理显示出“+”号后面按下的数字,然后调用加子程序,运算出结果,如果按下的是“-”,则调用减子程序,如果按下“*”,则调用乘子程序,如果按下“/”,则调用除子程序。然后再调用显示结果子程序,显示出结果。

(完整word版)C语言简易计算器课程设计.doc

C语言课程设计报告书题目:简易计算器 院系: 班级: 学号: 姓名:

摘要 该软件为用户提供在windows 系统上的简易计算器,能进行简单的加、减、 乘、除四则运算与混合运算。目的是为了巩固和加深 C 语言课程的基本知识的理 解和掌握,利用 C语言进行基本的软件设计,掌握 C 语言的编程和程序调试 的基本技能,掌握书写程序设计说明文档的能力,提高运用 C 语言解决实际问 题的能力。 关键词: C; 简易计算器 ; 程序 ; 基本算法;混合运算 SUMMARY the software provides a simple calculator in Windows system for users ,can be a simple add,subtract,multiply,divide.The purpose is to consolidate and deepen the basic knowledge of C language courses to understand and master, The use of C language for software design basic, To master the basic skills of C language programming and program debugging, Master the writing program design documentation ability,improve the ability to use C language to solve practical problems.

基于51单片机的简易计算器设计

基于单片机的简易计算器设计 摘要 (2) 关键字:80C51 LCD1602 4*4矩阵键盘计算器 (2) 第一章绪论 (3) 1.1系统开发背景 (3) 1.2系统开发意义 (3) 1.3设计目的 (3) 1.4设计任务 (3) 第二章单片机发展现状 (4) 2.1目前单片机的发展状况 (4) 2.1.1单片机的应用场合 (4) 2.2计算器系统现状 (5) 2.3简易计算器系统介绍 (5) 第三章系统硬件设计及说明 (6) 3.1系统组成及总体框图 (7) 3.2AT89S52单片机介绍 (7) 3.3其它器件介绍及说明 (10) 3.3.1 LCD1602液晶显示 (10) 3.3.2 4*4矩阵扫描按键 (13) 第四章 PROTEUS模拟仿真 (14) 第五章系统硬件设计及说明 (16) 第六章软件设计 (17) 6.1汇编语言和C语言的特点及选择 (17) 6.2源程序代码 (17)

摘要 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。 计算机在人们的日常生活中是比较常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计主要以80C51单片机为控制芯片,用C语言进行编程实现,通过4*4矩阵键盘控制,输出用液晶屏LCD1602显示,该计算器可以实现一般的加减乘除四则混合运算。 关键字:80C51 LCD1602 4*4矩阵键盘计算器

简易计算器的设计

一、功能实现:利用1602液晶显示器实现整数和小数的加法、减法、乘法、除法、开根号的运算。第一行显示输入的数据,第二行显示运算结果。 二、Proteus仿真图

三、操作说明:每次运算完后必须按一下清零键,该系统才会重新开始执行。 四、程序: #include #include #define int unsigned int #define char unsigned char void inti(); //初始化

void delay(); //延时 void anjian(); //按键显示数字和符号,第一个数存在a内 void sheji(); //设计显示完后的参数 void jsab(); //存储两个输入数 void jisuanxs(); //计算显示 void chufa(); //除法计算部分 void chengfa(); //乘法计算部分 void jianfa(); //减法计算部分 void jiafa(); //加法计算部分 void kaigenhao(); //开根号运算部分 void benshenxs(); //一个数本事显示 void leijixiaoshudian(); //小数点的累计 void fenli(); //计算后的结果分离,以便于显示 void ql(); //清屏 void xshuju(char shuju); //写数据 void xzhiling(char zhiling); //写指令 //char num[]="I LOVE YOU"; 显示在屏幕上 int sz[]={'0','1','2','3','4','5','6','7','8','9','+','-','*','/','=','.'}; char xs[]="ENRRO"; sbit e=P2^2; sbit rs=P2^0; sbit rw=P2^1; sbit key0=P2^6; sbit key1=P2^7; sbit key2=P3^0; sbit key3=P3^1; sbit key4=P3^2; sbit key5=P3^3; sbit key6=P3^4; sbit key7=P3^5; sbit key8=P3^6; sbit key9=P3^7; sbit key10=P1^3; sbit key11=P1^4; sbit key12=P1^5; sbit key13=P1^6; sbit key14=P1^7; sbit qingling=P1^0; sbit key15=P1^1; sbit key16=P1^2; int fuhao,num,m,n,q,w,s,fuhao1,fuhao2,fuhao3,fuhao4,fuhao5,xiaoshu,cishu1,cishu2; int i,g,j,p; int t,f,h; float a,b,c,d;

简单计算器编程

计算器程序 包括4个数字按钮,1个小数点按钮,+-*/= 5个计算按钮 不接受键盘输入 计算规则:当前正在输入的数存储到字符串变量 用户输入操作符,存储已经输入的数,作为第一个数,存储操作符 用户输入第二个数 用户输入操作符,与第一个数计算,并存储为第一个数,存储操作符 小数点只能输入一次 1 创建基于对话框的程序 2 打开对话框模板,增加控件: 编辑框1个 按钮4个,文字1-4 按钮1个,文字:小数点 按钮5个,文字:+ - * / = 按钮1个,文字:关闭 3 打开类向导 为编辑框加成员变量,CString m_edit 为所有按钮加消息映射

注意:以上都加再对话框类中。 4 打开对话框类的声明,加成员变量 double m_result; //前面的结果,即第一个数 int m_opt; //前面的操作符,0=,1+,2-,3*,4/ int ,m_dot; //是否输入了小数点 CString m_string; //当前正在输入的数,存为字符串 5 继续在话框类,声明2个函数 void calculation(void); //执行计算 void NumInput(CString x) //执行数字按钮输入 6 打开函数OnInitDialog(),加初始化代码 m_result = 0; m_opt = 0; m_dot = 0; m_string = ""; 6 “关闭按钮”消息映射代码: OnOK(); 8 分别打开数字按钮1-4的消息映射函数,分别输入代码: NumInput("1");

NumInput("2"); NumInput("3"); NumInput("4"); 9 打开小数点按钮的消息映射函数,输入代码: if ( m_dot==0 ) { m_dot = 1; NumInput("."); } 10 分别打开 + - * / 按钮的消息映射函数,分别输入代码: calculation(); m_opt = 0; calculation(); m_opt = 1; calculation(); m_opt = 2; calculation();

简易计算器

单片机十进制加法计算器设计 摘要 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计 算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C 语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。 引言 十进制加法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减乘除

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阳极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................

设计一个简单计算器的C语言课程设计报告

C语言课程设计报告题目:设计一个简单计算器 目录 1. 设计目的 2. 内容

3. 总体设计(有流程图) 4. 源程序编写(附上了运行图) 5. 执行结果 6. 心得体会 一、设计目的 设计一个简单计算器,在功能上功能尽量模拟windows 操作系统中的计算器,系统界面不做强制要求。 全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数、指针和文件的操作,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,规范编程思想,为以后在专业

课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。 二、内容 1、程序设计的一般步骤 a、确定数据结构 b、确定算法 C、编程 d、调试 e、总结资料 2、基本要求 a .设计正确,方案合理,能实现相应功能。 b .界面友好,使用方便。 c .程序精炼,结构清晰。 d .设计报告含程序设计说明,用户使用说明,源程序清单及程序框图。 e .上机演示。

三、总体设计(程序设计组成框图、流程图)

四、源程序编与 #in clude #in clude #in clude double jisua n( char a[]) { int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; char nibo[50],zha n2[50]; double x,n, l,z=0,zha n3[20]; typedef struct { double d1; int d2; }dd; typedef struct {

单片机简易计算器课程设计

单片机简易计算器课程设计 课程设计 题目名称________________ 简易计算器设计____________ 课程名称_____________ 单片机原理及应用____________ 学生姓名________________

班级学号________________ 2018年6月20日

目录 一设计目的 (2) 二总体设计及功能介绍 (2) 三硬件仿真图 (3) 四主程序流程图 (4) 五程序源代码 (5) 六课程设计体会 (28)

设计目的 本设计是基于51系列单片机来进行的简单数字计算器设计,可以完成计算器的键盘输入,进行加、减、乘、除六位整数数范围内的基本四则运算,并在LED上显示相应的结果。软件方面使用C语言编程,并用PROTUE仿真。 二总体设计及功能介绍 根据功能和指标要求,本系统选用MCS-51 系列单片机为主控机,实现对计算器的设计。具体设计及功能如下: 由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LED显示数据和结果; 另外键盘包括数字键(0?9)、符号键(+、-、x、十)、清除键和等号键,故只需要16个按键即可,设计中采用集成的计算键盘;

执行过程:开机显示零,等待键入数值,当键入数字,通过LED显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LED上输出运算结果。 三硬件仿真图 硬件部分比较简单,当键盘按键按下时它的那一行、那一列的端口为低电平。因此,只要扫描行、列端口是否都为低电平就可以确定是哪个键被按下。

简易计算器课程设计

评阅教师评语:课程设计成绩 考勤成绩 实做成绩 报告成绩 总评成绩指导教师签名: 课程设计报告 论文题目基于ARM的简易计算器设计 学院(系):电子信息与自动化学院 班级:测控技术与仪器 学生姓名:同组同学: 学号:学号: 指导教师:杨泽林王先全杨继森鲁进时间:从2013年 6 月10 日到2013年 6 月28 日 1

目录 1、封面—————————————————————P1 2、目录—————————————————————P2 3、前言—————————————————————P3 4、关键字————————————————————P3 5、原理与总体方案————————————————P3 6、硬件设计———————————————————P6 7、调试—————————————————————P10 8、测试与分析——————————————————P11 9、总结—————————————————————P13

10、附件—————————————————————P14 前言 近几年,随着大规模集成电路的发展,各种便携式嵌入式设备,具有十分广阔的市场前景。嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。在嵌入式系统中,数据和命令通过网络接口或串行口经过ARM程序处理后,或显示在LCD上,或传输到远端PC上。 本文通过周立功的LPC2106芯片完成的简易计算器,正是对嵌入式应用的学习和探索。 一、摘要: 计算器一般是指“电子计算器”,是能进行数学运算的手持机器,拥有集成电路芯片。对于嵌入式系统,以其占用资源少、专用性强,在汽车电子、航空和工控领域得到了广泛地应用。本设计就是先通过C语言进行相应程序的编写然后在ADS中进行运行最后导入PROTUES进行仿真。最后利用ARM中的LPC2106芯片来控制液晶显示器和4X4矩阵式键盘,从而实现简单的加、减、乘、除等四则运算功能。 关键字:中断,扫描,仿真,计算 二、原理与总体方案: 主程序在初始化后调用键盘程序,再判断返回的值。若为数字0—9,则根据按键的次数进行保存和显示处理。若为功能键,则先判断上次的功能键,根据代号执行不同功能,并将按键次数清零。程序中键盘部分使用行列式扫描原理,若无键按下则调用动态显示程序,并继续检测键盘;若有键按下则得其键值,并通过查表转换为数字0—9和功能键与清零键的代号。最后将计算结果拆分成个、十、百位,再返回主程序继续检测键盘并显示;若为清零键,则返回主程序的最开始。 电路设计与原理:通过LPC2106芯片进行相应的设置来控制LCD显示器。 而通过对键盘上的值进行扫描,把相应的键值通过MM74C922芯片进行运算从而

相关主题