加减 计数器详解

加减 计数器详解
加减 计数器详解

实例:以下是一个0~9999 加/减计数器的设计:

设计使用key0 为复位信号: 按下后实现计数清0。key1为暂停按钮:按下后计数暂停。key2为加、减控制按钮:不按时加计数,按下后减计数。使用27M时钟信号。计数时每秒钟10次。主模块为counter ,从模块为display。

module counter(clk,res,stp,sub,seg,com);

input clk,res,stp,sub;

//clk为27M时钟res(接按键0)复位信号stp(接按键1)暂停信号sub (接按键2)加/减控制端(1:加、0:减)output [7:0] seg; // 8段码显示

output [3:0] com; // 4个数码管选通信号(0 选通表示有效)

reg [31:0] number; // 要输出的数字0~9999

reg [31:0] clk_count; // 时钟计数(记录经过了多少时钟周期)

always @ (posedge clk) begin

if(res==0) begin // 复位

clk_count = 0;

number = 0;

end

else

if(clk_count==27_000_00) begin // 每当计数到2700000时(即:每过27_000_00 / 27M 秒时执行、、、)clk_count = 0; // 重新计数

case ({number,sub}) // 组合判断number与sub 信号

‘b0 : number = 9999; // 在number为0 ,并且继续减时number=9999

‘b1001_1100_0011_111 : number = 0; //在number=9999,并且继续加时number=0

default :number = !stp? number:!sub? number-1 : number+1 ;

//否则,在!stp为真时计数停止,!stp为假时判定“!sub? number-1 : number+1 ”;此时!sub为真number-1 ,!sub为假number+1 ,

endcase

end

else

clk_count = clk_count+1; // 每个clk周期时钟计数始终加1

end

display D_0(.res(res),.clk(clk),.number(number),.seg(seg),.com(com)); // 调用模块display 并将它起名为D_0

endmodule

module display(res,clk,number,seg,com); //模块用于在数码管上显示number值

input res,clk;

input [31:0] number;

output reg [7:0] seg;

output reg [3:0] com;

reg [7:0] number_temp;

reg [31:0] clk_count; //时钟计数

always @(posedge clk) begin

clk_count = clk_count+1; //首先先让时钟计数加1

if(res==0) begin // 复位

com = 4'b0111; // 选通第一个数码管

seg = 8'b0111_1111; // 显示数码管中间的一条短横

clk_count = 0; // 计数清零

end

else if(clk_count == 27_000) begin // 每计数至27_000时(即:每过27000 / 27M 秒时)执行以下语句clk_count = 0; // 计数清零

if(com==4'b1110) // 判定如果当前已是最右边数码管亮时让它重新回到最左边的数码管进行显示

com = 4'b0111;

else

com = (com = com>>1) | 4'b1000; // 数码管从左边开始依次向右边显示(即0111→1011→1101→1110→0111、、、、)end

else

case(com) // 判定是哪一个数码管在显示,并调用函数dis 将那位上应该显示的数的段码送至seg 端

4'b0111: seg = dis((number%1_0000)/1000); // 显示千位

4'b1011: seg = dis((number%1_000)/100); // 显示百位

4'b1101: seg = dis((number%1_00)/10); // 显示十位

4'b1110: seg = dis(number%1_0); // 显示个位

default: seg = 8'b01111111; // 否则显示横杠

endcase

end

function [7:0] dis; // 函数dis 用以输出0~9 对应的段码

input [7:0] nu; //接受一个输入

case(nu)

'd0: dis=8'b10010000;

'd1: dis=8'b10011111;

'd2: dis=8'b01011000;

'd3: dis=8'b00011001;

'd4: dis=8'b00010111;

'd5: dis=8'b00110001;

'd6: dis=8'b00110000;

'd7: dis=8'b10011101;

'd8: dis=8'b00010000;

'd9: dis=8'b00010001;

default: dis=8'b01111111;

endcase

endfunction

endmodule

简易加减计算器小程序

[java語言與程序設計]简易加减计算器小程序 歸真我发表于:2011/8/1922:51:21标签(TAG): 简易加减计算器小程序 在上一篇《简易计算器面板小程序》中,我已对面板部分的程序作了详细的注释,并对程序的运行过程及结果作了完整的介绍,并且是上机调试过了得到的结果。但是,那只是面板,不能运算。要想让它具有运算的功能,还得在此基础上作一些修改,加进有关按钮动作响应部分的程序。为了便于理解,便于调试,便于学习,掌握其要点,我想应该遵循循序渐进的原则,所以,先从加减运算开始,看看这个功能是怎么实现的。请看下面的小程序。从程序中可以看出,它是利用内部类ButtonAct来处理按钮的动作响应的。从总体上讲是两个按钮“运算”和“重置”,但“运算”又区分为“加”和“减”。所以,用负责实现双分支的if语句来编程。 /**C2.java简易加减计算器小程序*/ import java.applet.*; import java.awt.*; import java.awt.event.*; public class C2extends Applet{ TextField t1,t2,t3; Button btn1,btn2; CheckboxGroup select; Checkbox a,s;//分别代表加、减 Label b; public void init(){ t1=new TextField(13); t2=new TextField(13); t3=new TextField(13); btn1=new Button("等于");

btn2=new Button("重置"); select=new CheckboxGroup(); a=new Checkbox("加",true,select); s=new Checkbox("减",false,select); b=new Label("简易加法/减法计算器"); add(b); add(t1); add(a); add(s); add(t2); add(btn1); add(t3); add(btn2); btn1.addActionListener(new ButtonAct());//注册给ButtonAct对象btn2.addActionListener(new ButtonAct());//注册给ButtonAct对象} class ButtonAct implements ActionListener{//内部类,按钮处理public void actionPerformed(ActionEvent e){ int op1,op2,op3; if(e.getSource()==btn1){//等于按钮 op1=Integer.parseInt(t1.getText()); op2=Integer.parseInt(t2.getText()); if(a.getState())//以下判断计算类型并实现相应的计算 op3=op1+op2; else op3=op1-op2; t3.setText(Integer.toString(op3)); } else{//重置按钮 t1.setText(""); t2.setText(""); t3.setText(""); a.setState(true); } } }//end of ButtonAct }//*~ 运行结果为:

EDA 16位加法计数器的设计

北京理工大学 用程序输入方法设计一个16位二进制加法计数器 学院:机械xxxx学院 专业班级:10机械电子工程x班 姓名:陈xx 学号:10xxxxxx 指导教师:xxx 老师

目录 摘要 (1) 1 绪论 (2) 2 计数器的工作原理 (3) 3 设计原理 (4) 4 电路系统的功能仿真 (5) 6 个人小结 (20) 参考文献 (21)

摘要 计数器是数字系统中使用较多的一种时序逻辑器件。计数器的基本功能是统计时钟脉冲的个数,即对脉冲实现计数操作。计数器也可以作为分频、定时、脉冲节拍产生器和脉冲序列产生器使用。计数器的种类很多,按构成计数器中的各触发器是否使用一个时钟脉冲源来分,可分为同步计数器和异步计数器;按进位体制的不同,可分为二进制计数器、十进制计数器和任意进制计数器;按计数过程中数字增减趋势的不同,可分为加法计数器、减法计数器和可逆计数器;还有可预制数和可编计数器等等。本次课程设计将利用众多集成电路软件软件中的Quartus II软件,使用VHDL语言编程完成论文《用程序输入方法设计一个16位二进制加法计数器》,调试结果表明,所设计的计数器正确实现了计数功能。 关键词:二进制;加法计数器;VHDL语言

1 绪论 现代电子设计技术的核心已日趋转向基于计算机的电子设计自动化,即EDA(Electronic Design Automation)技术。EDA技术就是依赖功能强大的计算机,在集成电路软件平台上,对以硬件描述语言HDL(Hardware Description Language)为系统逻辑描述手段完成的设计文件,自动完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。一般所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。 EDA工具软件可大致可分为芯片设计辅助软件、可编程芯片辅助设计软件、系统设计辅助软件等三类。常用的EDA工具软件平台有:Matlab、Protel、Proteus、OrCAD以及我们学习的本次课程结课论文所用到的Quartus II等。而且EDA工具软件平台一般都有第三方软件接口,以便于与其他软件联合使用。 本次课程结课论文在设计16位二进制加法计数器时所用到的EDA软件工具平台是Quartus II。Quartus II 是Altera公司的综合性PLD(可编程逻辑器件)开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II 通过和DSP

同步二进制加法计数器

同步二进制加法计数器 F0302011 5030209303 刘冉 计数器是用来累计时钟脉冲(CP脉冲)个数的时序逻辑部件。它是数字系统中用途最广泛的基本部件之一,几乎在各种数字系统中都有计数器。它不仅可以计数,还可以对CP 脉冲分频,以及构成时间分配器或时序发生器,对数字系统进行定时、程序控制操作。此外,还能用它执行数字运算。 1、计数器的特点: 在数字电路中,把记忆输入CP脉冲个数的操作叫做计数,能实现计数状态的电子电路称为计数器。特点为(1)该电路一般为Moore型电路,输入端只有CP信号。 (2)从电路组成看,其主要组成单元是时钟触发器。 2、计数器分类 1) 按CP脉冲输入方式,计数器分为同步计数器和异步计数器两种。 同步计数器:计数脉冲引到所有触发器的时钟脉冲输入端,使应翻转的触发器在外接的CP脉冲作用下同时翻转。 异步计数器:计数脉冲并不引到所有触发器的时钟脉冲输入端,有的触发器的时钟脉冲输入端是其它触发器的输出,因此,触发器不是同时动作。 2) 按计数增减趋势,计数器分为加法计数器、减法计数器和可逆计数器三种。 加法计数器:计数器在CP脉冲作用下进行累加计数(每来一个CP脉冲,计数器加1)。 3) 按数制分为二进制计数器和非二进制计数器两类。 二进制计数器:按二进制规律计数。最常用的有四位二进制计数器,计数范围从0000到1111。 异步加法的缺点是运算速度慢,但是其电路比较简单,因此对运算速度要求不高的设备中,仍不失为一种可取的全加器。同步加法优点是速度快,虽然只比异步加法快千分之一甚至几千分之一秒,但对于计数器来讲,却是十分重要的。所以在这个高科技现代社会中,同步二进制计数器应用十分广泛。 下图为三位二进制加法计数器的电路图。 图1 三位二进制计数器 图示电路为对时钟信号计数的三位二进制加法计数器或称为八进制加法计数器。 该电路的经典分析过程: 1.根据电路写出输出方程、驱动方程和状态方程 2. 求出状态图 3.检查电路能否自启动 4.文字叙述逻辑功能 解:

做一个五进制的加减法计数器

做一个五进制的加减法 计数器 标准化管理部编码-[99968T-6889628-J68568-1689N]

一、做一个五进制的加减法计数器,输入控制端为1时,做加法,为0时, 做减法,用JK触发器实现。 第一步:根据要求进行逻辑抽象,得出电路的原始状态图。 取输入数据变量为X,检测的输出变量为Z,该电路的功能是五进制计 数器。当X=1时,计数器作加“1”运算,设初态为S 0。状态由S 做加1运 算,状态转为S 1,输出为0;状态S 1 做加1运算,转为状态S 2 ,输出为0;状 态S 2做加1运算,转为状态S 3 ,输出为0;状态S 3 做加1运算,转为状态S 4 , 输出为0;当状态S 4继续做加1运算时,状态由S 4 转到S ,输出为1。当X=0 时,计数器作减“1”运算。状态由S 做减1运算,此时产生借位,状态转为 S 4,输出为1;状态S 4 做减1运算,转为状态S 3 ,输出为0;状态S 3 做减1运 算,转为状态S 2,输出为0;状态S 2 做减1运算,转为状态S 1 ,输出为0;状 态S 1做减1运算,状态由S 1 转为状态S ,输出为0。 由此得出状态转换图:第二步:状态编码。 该电路是五进制计数器,有五种不同的状态,分别用S 0、S 1 、S 2 、S 3 、 S 4 表示五种状态,这五种状态不能作状态化简。在状态编码时,依据 2n+1

速算,简易计算器c语言代码,可实现加减乘除

#include"stdio.h" #include"math.h" #include"stdlib.h" struct optrstyle { int top; char stack[20]; } struct opndstyle { int top; int stack[20]; } void main() { char ch; while(1) { printf("-----------------------------------------\n"); printf("|-----------欢迎来到速算24--------------|\n"); printf("|----------是否开始游戏?????------------|\n"); printf("|--------- 开始游戏请按'Y'-------------|\n"); printf("|--------- 退出游戏请按其他键-------------|\n"); printf("-----------------------------------------\n"); scanf("%c",&ch); if(ch=='Y' or ch=='y') { } else break; } } int EvaluateExpression() { // 算术表达式求值的算符优先算法。设OPTR 和OPND 分别为运算符栈和运算数栈,OP 为运算符集合。 InitStack(OPTR); Push(OPTR,'#'); InitStack(OPND); c = getchar(); while(c!='#' || GetTop(OPTR)!='#') { if(!In(c,OP))

简易加减计数器

1.设计目的 1、综合运用相关课程中所学到的知识去完成设计课题。 2、学会电路的设计与仿真。 3、能自己熟练连接实现逻辑电路。 4、掌握Proteus的基本用法。 5、掌握74LS283N芯片的逻辑功能和译码显示器的使用方法。2.设计要求 1、用于两位以下十进制的加减运算。 2、以合适方式显示输入数据及计算结果。 3、设计要求被减数大于或等于减数。 3.总体设计 3.1电路方框图 图1电路方框图

3.2工作原理 先利用单刀双掷开关将加数(减数)与被加数(被减数)置入,然后通过将加数(减数)通过异或门进行逻辑组合,再通过74LS283N 实现8421码的转换,最后接上7段数码管显示结果。 4.单元电路设计与分析 4.1加法电路 加法电路原理图如图1所示: 图1加法电路 4.2减法电路 图2减法电路

4.3元件清单以及元件介绍 2、设计思路 第一步,置入两个四位二进制数。例如(1001),(0011)和(0101),(1000),同时在两个七段译码显示器上显示出对应的十进制数9,3和5,8。 第二步,通过开关选择加(减)运算方式; 第三步,若选择加运算方式所置数送入加法运算电路进行运算,同理若选择减运算方式,则所置数送入减法运算电路运算; 第四步,前面所得结果通过另外两个七段译码器显示。即: 若选择加法运算方式,则(1000)+(0110)=(1110)十进制8+6=14并在七段译码显示器上显示14。 若选择减法运算方式,则(0101)-(1000)=(10011)十进制5-8=-3,并在七段译码显示器上显示-3。 3、运算方案 方案一 通过开关J1-J8接不同的高低电平来控制输入端所置的两个一

android简单计算器课程设计

摘要 Android是当今最重要的手机开发平台之一,它是建立在Java基础之上的,能够迅速建立手机软件的解决方案。Android的功能十分强大,成为当今软件行业的一股新兴力量。Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,具有以下5个特点:开放性、应用程序无界限、应用程序是在平等条件下创建的,应用程序可以轻松的嵌入网络、应用程序可以并行运行。而简单计算器又是手机上必备的小程序,所以此次创新实践很有意义。并且具有很强的使用性。 关键字:Android Java基础计算器

目录 第1章开发工具与环境 (1) 1.1 Android平台 (1) 1.2 Java开发环境 (1) 1.3 Eclipse (1) 1.4 Android程序基础—Android应用程序的构成 (2) 第2章系统分析与设计 (4) 2.1系统的可行性分析 (4) 2.2 系统的需求分析 (4) 2.3 系统的优势 (4) 2.4 系统的流程图 (5) 第3章系统详细设计 (6) 3.1 动作Activity (6) 3.2 布局文件XML (6) 3.3 Activity的详细设计 (7) 3.2 布局文件XML的详细设计 (21) 3.2 系统的运行结果 (24) 结论 (25) 参考文献 (26)

第1章开发工具与环境 1.1 Android平台 1.谷歌与开放手机联盟合作开发了Android, 这个联盟由包括中国移动、摩托罗拉、高通、宏达和T-Mobile在内的30多家技术和无线应用的领军企业组成。 2.Android是一个真正意义上的开放性移动设备综合平台。通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,来建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统,这样应用之间的通用性和互联性将在最大程度上得到保持。 3.所有的Android应用之间是完全平等的。 4.所有的应用都运行在一个核心的引擎上面,这个核心引擎其实就是一个虚拟机,它提供了一系列用于应用和硬件资源间进行通讯的API。撇开这个核心引擎,Android的所有其他的东西都是“应用”。 5.Android打破了应用之间的界限,比如开发人员可以把Web上的数据与本地的联系人,日历,位置信息结合起来,为用户创造全新的用户体验。 1.2 Java开发环境 Java技术包含了一个编程语言及一个平台。Java编程语言具有很多特性,如面向对象、跨平台、分布式、多线程、解释性等等。Java编程语言起源于Sun公司的一个叫“Green”的项目,目的是开发嵌入式家用电器的分布式系统,使电气更加智能化。1996年1月发布了JDK1.1版本,一门新语言自此走向世界。之后,1998年12月发布了1.2版本,2002年2月发布1.4版本,2004年10月发布1.5版本(5.0),2006年12月发布1.6(6.0)版本,这是目前的最新版本。Java1.2版本是一个重要的版本,基于该版本,Sun将Java技术分为J2SE、J2ME、J2EE,其中J2SE为创建和运行Java程序提供了最基本的环境,J2ME与J2EE 建立在J2SE的基础上,J2ME为嵌入式应用(如运行在手机里的Java程序)提供开发与运行环境,J2EE为分布式的企业应用提供开发与运行环境。 1.3 Eclipse

用JKFF触发器设计一个模为8的加法计数器

题目:用JKFF 设计模为8的加法计数器 步骤1: 分析题意 根据题目所给的条件,待设计的计数器默认为模为8的加法器,不需要求加载初值。电路只需要故电路只需时钟输入端clk ,clk 作为电路的同步时钟,不必当做输入变量对待;输出一个8进制数要3个输出端,记为0Q 1Q 2Q 。要有输出信号Y ,故共需要3个输出端。因输出量0Q 1Q 2Q 就是计数值,故采用Moore 型电路较为合适。 步骤2:建立原始状态图 模8加法器要求逢8加1,。有此状态图做出如图所示。需要8个状态故不需要化简。 /Y /0 /0 /0 S0→ S1→ S2→ S3 ↑ /1 ↓ /0 S7←S6←S5← S4 /0 /0 /0 步骤3:状态分配。 由于最大模的值为8,因此必须取代码位数n=3。假设S0=000,S1=001,S2=010,S3=011,S4=100,S5=101,S6=110,S7=111.则可以做出状态转移表如图。 步骤4:选触发器,求时钟、输出、状态、驱动方程。 因需要3位二进制代码,选用三个CP 下降沿出发的J-K 触发器,分别用FF0,FF1,FF2表示。 有状态列表可作出次态卡诺图及输出函数的卡诺图,如图所示。 与J-K 触发器的特性方程 n n n Q K Q J Q +=+1 比较得到驱动方程 输入 现态 次态 输 出 CP Q2 Q1 Q0 12 +n Q 11 +n Q 1 +n Q Y 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 2 0 1 0 0 1 1 0 3 0 1 1 1 0 0 0 4 1 0 0 1 0 1 0 5 1 0 1 1 1 0 0 6 1 1 0 1 1 1 0 7 1 1 1 1

加减BCD计数器

module counter(clkin, rst_n, ld, data, out, c,jiajian,hex0,hex1); input clkin, rst_n, ld,jiajian; input [7:0] data; output [7:0] out; output c; output [6:0]hex0; output [6:0]hex1; reg [6:0]hex0; reg [6:0]hex1; reg c = 0; reg[3:0] ten, unit; assign out = {ten, unit}; parameter seg0 = 7'b1000000, //显示在数码管上的数码 seg1 = 7'b1111001, seg2 = 7'b0100100, seg3 = 7'b0110000, seg4 = 7'b0011001, seg5 = 7'b0010010, seg6 = 7'b0000010, seg7 = 7'b1111000, seg8 = 7'b0000000, seg9 = 7'b0010000, sega = 7'b0001000, segb = 7'b0000011, segc = 7'b1000110, segd = 7'b0100001, sege = 7'b0000110, segf = 7'b0001110; always@(posedge clkin ) begin case (jiajian) 1'b0: begin if(!rst_n) {ten, unit} <= 0; else if(ld) {ten, unit} <= data; else begin if(ten == 5) begin if(unit == 8) begin c = 1;

做一个五进制的加减法计数器

一、做一个五进制的加减法计数器,输入控制端为1时,做加法,为0时,做减法, 用J K 触发器实现。 第一步:根据要求进行逻辑抽象,得出电路的原始状态图。 取输入数据变量为X,检测的输出变量为乙该电路的功能是五进制计数器。当X=1时,计数器作加“ 1”运算,设初态为S o。状态由S o做加1运算,状态转为S i,输出为0;状态S i做加1运算,转为状态S2,输出为0;状态S2做加1运算,转为状态S3,输出为0;状态S3做加1运算,转为状态S4,输出为0;当状态S4继续做加1 运算时,状态由S4转到S0,输出为1。当X=0时,计数器作减“1”运算。状态由S0 做减1运算,此时产生借位,状态转为S4,输出为1;状态S4做减1运算,转为状态S3,输出为0;状态S3做减1运算,转为状态S2,输出为0;状态S2做减1运算,转为状态S1,输出为0;状态S1做减1运算,状态由S1转为状态 S0,输出为0。由此得出状态转换图: 第二步:状态编码。 该电路是五进制计数器,有五种不同的状态,分别用S0、S1、S2、S3、S4表示五种状态,这五种状态不能作状态化简。在状态编码时,依据2n+1

第三步:求出输出方程,状态方程和驱动方程(控制函数)。用 JK触发器构成逻辑电路,JK触发器的特性方程Q2n Q1n 00 01 Q n+1=J Q n+ K Q n。 XQ3n 00 01 11 10 1 000 0 X X X 1V X n 0000 00011110 (1) Q2n Q1n _________ (b) Q3n+1=X Q2 Q1n+ X Q3n Q2n Q1n 2n Q1n 00 01 11 10 1000 X X X 0X A X 00u0 状态转换表如下: 1 1 10 XQ3 00 01 11 10 Z=X Q n3 + X Q3 1n XQ3

简易加减法计算器

电子技术课程设计 题目:简易加减法计算器 一、设计课题:简易加减法计算器 二、设计任务和要求: 1、用于两位以下十进制数的加减运算。 2、以合适方式显示输入数据及计算结果。 三、原理电路设计 1、方案的比较 对于简单加减计算器可有三种不同的方案 ①用数/模转换,与模拟电路中的加减计算器进行简单的加减计 算。先用74LS147二-十进制优先编码器转化为二进制进行输A,然后数模转化模拟信号,进行加减计算后,转化为数字信号输 出。 此方案思路较明确,但经过二次数模相互转换,精确率较低; 具体输出时的负数效应,与单输入的二进制转化为十进制时电 路较复杂,无成块的集成电路,致使误差率较大。 ②可用数字电路中4位超前进位加法器74LS283与方案一输入相 同;后用三态输出CMOS门电路进行选择输入,进行加法运算

后输出,输出时,注意负数的问题与在输出中2进制与10进制关系的问题。还有寄存器的问题。 此方案思路明确,比较精确,此中的2进制与10进制问题需复杂门电路解决无现成集成元件,存在太多的散元件。减法运算需要反码进行运算,况且在其触发过程中需要考虑同步问题。 ③可运用数字电路中的单时钟同步十进制加/减计数器74LS190 进行加减计算。方案以上升沿进行输入,触发加减计算。本方案输入方式不同于一般输入方式,需要有所改进。但思路明了,不十分复杂,对于负数运算较复杂,可集成程度较高。 终上所述,最好是相互结合,以③为本。 2、单元电路设计

3、元件的选择

对于计数器来说需要选同时可以进行加减计数的计数器进行 加减,因此选用单时钟十进制加/减计数器74LS190. 其电路图及功能表如下: 中间由于1/0的输出不能够持久的进行保持,因此可用RS触 发器进行保持。对于加/减,等于触发需要74LS194进行触发 保持 4、整体电路(见附图) 5、工作原理 主要运用十进制加/减计数器74LS190加/减计数功能与74LS194的触发 功能。 六、设计总结 我们以为,在这学期的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教别人,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。而且,这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。 因为由于时间的紧缺和许多课业的繁忙,并没有做到最好,但是,最起码我们没有放弃,它是我们的骄傲!相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。我们的激情永远还会结束,

用单片机语言设计16位加法计算器实验报告概要

湖北第二师范学院计算机学院09计应 单片机课程设计 实验报告 课程设计名称:电子计算器 课程设计单位:10计应(1)班 课设小组成员:徐凡(1060310039) 凡平(1060310058) 彭浩(1060310045) 桂银(1060310010) 潘光卉(1060300033) 完成时间:2012年04月02日至2012年04月 24 日

单片机课程设计实验报告 课程设计题目:简易计算器 作品功能描述:当通过输入键盘数字时,能够在显示器上显示输出的数值,并且通过想实现的简单运算功能,实现计算器的加、减、乘、 除和清零,并将结果显示出来。 小组成员工作分工:徐凡:程序主框架的构造和主要功能函数的设计。 凡平:原理图的设计和硬件的焊接。 彭浩:基本功能函数的设计(“+,-,*,/”)。 桂银:程序流程图的设计和键盘扫描程序的实现。 潘光卉:编写文档和功能测试。 硬件电路设计:本设计中我们用的是AT89C52芯片,LCD1602 (PROTEUS中为LM016L)就是那个液晶屏,因为可以显示2行16个字符,故 叫做LCD1602. 11.0592M或12M晶振(CRYSTAL),两者均可,但要涉及到串口 需选用12MKEYPAD-SMALLCALC就是那个4X4键盘 电容20~30PF(CAP),接最小电路 电容10PF主要接复位电路 RESPACK-8排阻,为20K的,一个引脚接正极,另8个引脚接 I/O口接RES电阻10K,接复位电路 实物照片:硬件原理图

原理说明: 1,上电后,屏幕初始化; 2,计算。按下数字键,屏幕显示要运行的第一个数字,再按下符号键,然后再按下数字键,屏幕显示要运算的第二个数字,最后按 下“=”号键,屏幕上显示出计算结果。 3,如果要再次计算,可以按下“ON/C”键清零,或者继续按下数字键,即可重新计算。 键盘使用说明如下: 按键功能说明:Array“+”实现两个数的相加 “-”实现两个数的相减 “×”实现两个数的乘积 “÷”实现两个数商的运算 “ON/C”计算器显示的清零和 接通电源

加减 计数器详解

实例:以下是一个0~9999 加/减计数器的设计: 设计使用key0 为复位信号: 按下后实现计数清0。key1为暂停按钮:按下后计数暂停。key2为加、减控制按钮:不按时加计数,按下后减计数。使用27M时钟信号。计数时每秒钟10次。主模块为counter ,从模块为display。 module counter(clk,res,stp,sub,seg,com); input clk,res,stp,sub; //clk为27M时钟res(接按键0)复位信号stp(接按键1)暂停信号sub (接按键2)加/减控制端(1:加、0:减)output [7:0] seg; // 8段码显示 output [3:0] com; // 4个数码管选通信号(0 选通表示有效) reg [31:0] number; // 要输出的数字0~9999 reg [31:0] clk_count; // 时钟计数(记录经过了多少时钟周期) always @ (posedge clk) begin if(res==0) begin // 复位 clk_count = 0; number = 0; end else if(clk_count==27_000_00) begin // 每当计数到2700000时(即:每过27_000_00 / 27M 秒时执行、、、)clk_count = 0; // 重新计数 case ({number,sub}) // 组合判断number与sub 信号 ‘b0 : number = 9999; // 在number为0 ,并且继续减时number=9999 ‘b1001_1100_0011_111 : number = 0; //在number=9999,并且继续加时number=0

简易计算器课程设计

基于单片机的计算器的设计 摘要:本设计是一个实现加减乘除的计算器,它的硬件主要由四部分构成,一个8051单片机芯片,两个八段共阴极数码管,一个4*4键盘,它可以实现一位数的加减乘除运算。 显示部分:采用LED动态显示。 按键部分:采用4*4键盘。采用软件识别键值,并执行相应的操作。 关键词:LED接口;键盘接口;8255A;汇编语言 一、概述 1.1设计要求及任务: (1)设计4*4的键盘,其中10个数字键0~9,其余六个键“+”、“—”、“*”、“/”、“=”、和“C”键; (2)设计两位LED接口电路; (3)实现1位数的简单运算 1.2设计原理 (1)LED显示器接口技术 LED动态显示接口技术 (2)键盘显示技术 逐行(逐列扫描法) 二、系统总体方案和硬件设计 2.1计算器总体思想 显示部分:采用LED动态显示。 按键部分:采用4*4键盘。采用软件识别键值,并执行相应的操作。 执行过程:开机显示零,等待键入数值,当键入数字,经通过数码管显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。 图1 系统设计框图

2.2硬件的选择与连接 图二硬件连接总图 2.2.1硬件选择 (1)由于本设计比较简单,因此选用内部含有4KBE2PROM的89C51单片机作为系统的核心。 (2)扩展输入/输出端口 在扩展输入/输出端口时,要求输入口能够缓冲,,输出口能够锁存。常用小规模集成电路芯片74LS244或74LS245等扩展输入端口,用74LS273、74LS373、 74LS377扩展输出端口。这种扩展方法的特点是电路简单,但功能单一、灵活性差。因而常采用中规模的可编程并行接口芯片8255A扩展输入/输出端口。 (3)锁存电路采用74LS373 2.2.2接口设计 (1)单片机与8255A的接口设计 8255A中的数据总线缓冲器为三态双向数据缓冲存储器,用于将8255A的数据线 D0~D7和单片机的数据总线(P0口)连接,实现单片机和接口间的数据传送。 读写控制部件的接口设计 1、/CS为片选信号,接成低电平表示8255A 被选中。/CS与P2.7相连,用P2口的最高位控制8255A是否工作。即将P2.7控制为低电平。 2、RESET-复位信号,高电平有效,接在单片机的RST端。 3、/RD和/WR为读写控制信号,低电平有效。分别将两个端口接单片机的/RD和/WR 4、A1和A0-端口选择信号,分别与单片机的低两位地址线P1.1和P1.0相连。用于选择不同端口。采用74LS373三态锁存器,用于分离P0口第八位地址线,将它的Q0和Q1口接至8255A的地址输入端A0和A1。

电工课程设计 加法计数器

电子技术 课程设计 院系:汽车学院 班级:汽车运用工程 学号:2202070332 指导老师:李民 姓名:文雨佳

四位二进制加法器 一技术要求: (1)四位二进制加数与被加数输入 (2)二位数码管显示 二摘要: 此设计的是简单的四位二进制加法器,在计算机中,其加、减、乘、除运算都是分解成加法运算进行的。此次设计选择超前进位二进制并行加法器T693,在译码器上选择五输入八输出的译码器,要用二位数码管显示,需要采用七段显示译码器。本次设计采用的是共阴极数码管所以选择74ls248(74ls48)译码器三总体设计方案论证与选择: 设计四位二进制加法器,可以选择串行二进制并行加法器,但为了提高加法器的运算速度,所以应尽量减少或除去由于进位信号逐级传递所花费的时间,使各位的进位直接由加数和被加数来决定,而无须依赖低位进位,因而我们选择超前进位二进制并行加法器。 加法器选择:超前进位二进制并行加法器 设一个n位的加法器的第i位输入为ai、bi、ci,输出si和ci+1,其中ci是低位来的进位,ci+1(i=n-1,n-2,…,1,0)是向高位

的进位,c0是整个加法器的进位输入,而cn是整个加法器的进位输出。则和si=ai i i+ ibi i+ i ici+aibici (1) 进位ci+1=aibi+aici+bici (2) 令gi=aibi,(3) pi=ai+bi, (4) 则ci+1= gi+pici (5) 只要aibi=1,就会产生向i+1位的进位,称g为进位产生函数;同样,只要ai+bi=1,就会把ci传递到i+1位,所以称p为进位传递函数。把(5)式展开,得到 ci+1= gi+ pigi-1+pipi-1gi-2+…+ pipi-1…p1g0+ pipi-1…p0c0 (6) 随着位数的增加(6)式会加长,但总保持三个逻辑级的深度,因此形成进位的延迟是与位数无关的常数。一旦进位(c1~cn-1)算出以后,和也就可由(1)式得出。 使用上述公式来并行产生所有进位的加法器就是超前进位加法器。产生gi和pi需要一级门延迟,ci 需要两级,si需要两级,总共需要五级门延迟。与串联加法器(一般要2n级门延迟)相比,(特别是n比较大的时候)超前进位加法器的延迟时间大大缩短了。 四设计方案的原理框图、总体电路图、接线图及说明

16位加法器设计

计算机组成原理 课程设计报告 题目 16位加法器设计B 院系信息科学技术学院 专业计算机科学与技术 班级 11计本(2) 教师 学生 学号

内容提要 本设计在其他基本加法器的基础上改进为超前进位加法器,它避免了串行进位加法器的进位延迟,提高了速度。其主要分为四章,第一章为设计概述,主要介绍设计的任务、目标,以及设计环境,第二章为总体设计方案,其主要介绍本设计中系统设计的框架。第三章为仿真测试,给出了系统在仿真环境下波形测试结果,看是否满足题目要求。第四章为设计心得总结,主要是介绍在经过本次设计后,自己的一些心得体会。最后还给出了本设计的一些参考文献。

前言 计算机组成原理是一门实践性很强的课程;其课程设计目的在于综合运用所学知识,全面掌握微型计算机及其接口的工作原理、编程和使用方法;在设计中,通过小组协作提出设计方案,进行软件设计、调试,最后获得正确的结果,可以加深和巩固对理论知识的更好掌握,进一步建立计算机应用系统体概念,初步掌握单片机软、硬件开发方法,为以后进行实际的单片机软、硬件应用开发奠定良好的基础。 本设计是利用74181、74182芯片组成了16位加法器的组间组内并行。 。

目录 1设计概述 (5) 1.1设计任务 (5) 1.2 设计要求 (5) 1.3设计环境 (5) 2总体设计方案 (6) 3仿真测试 (9) 4设计个人总结 (10) 参考文献: (10)

1设计概述 1.1设计任务 1、掌握MaxPlus2软件的使用方法。 2、熟悉74系列芯片的组成和工作过程。 3、掌握半加器,一位全加器的设计原理,掌握超前进位产生电路的设计方法。 4、正确将电路原理图下载到试验箱中。 5、正确通过实验箱连线实现一位二进制数的相加并得到正确结果。 6、完成设计实验报告。 7、完成课程设计答辩。 1.2 设计要求 1、巩固和运用所学课程,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。 2、学会使用MAX-PLUSⅡ软件设计电路原理图及功能模拟 3、熟悉常用的门电路 1.3设计环境 MaxPlus2

单片机 简易加法计数器

《单片机原理及应用》课程课程设计 题目简易计算器的设计 院(系)信息工程学院 专业班级 11级计算机应用技术1班 学生姓名 XXXXX 学号 XXXXXXXX 设计地点计算机应用实验室 指导教师 XXXX 起止时间:2013年6月3日至2013 年6 月14 日

摘要 随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。 本题目是实现两位数的加减运算的简易计算器,实现键盘输入,由七段LED 数码管输出;程序都是根据教材内和网络中的程序参考编写而成,在功能上还并不十分完善,限制也较多。本设计重在设计构思,使得我们用专业知识、专业技能分析和解决问题,通过设计使得我们对所学知识彻底巩固。 课程设计目的和意义: 通过这次课程设计,进一步掌握单片机理论知识,知道AT89S52单片机的原理、编程和各种功能的应用,了解简易计算器的工作原理,初步掌握计算器的硬软件设计、编写、调试和仿真,充分提高动手能力和排除故障的能力。同时通过毕业设计加深了我们对单片机的认识和兴趣,发挥了我们的创新能力。 在本次课程设计中,充分调动了组员的积极性,彼此之间通过相互合作,共同努力,一起出色地完成了任务! 设计任务:能够实现0~9这10个1位数的加减运算,用10个按键模拟0~9数字键,用两个按键实现加减运算,运算结果用5个数码管显示出来。如:5+3=8。关键词 : 单片机;数码管;矩阵键盘

目录 1.设计方案 (4) 1.1设计思路 (4) 1.2整体设计 (4) 2.电路设计原理 (6) 2.1键盘接口电路 (6) 2.2数码管显示原理及译码电路 (7) 2.3运算模块(单片机控制) (7) 3.功能程序仿真调试 (10) 3.1编程调试环境 (10) 3.2测试结果截图 (11) 4.程序设计 (12) 4.1软件程序设计 (12) 4.2源程序 (14) 5.总结 (18) 6.参考文献 (19)

模可变16位加法计数器

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:信息工程学院 题目: 模可变16位加法计数器设计 初始条件: 可用仪器: PC机(Quartus II软件)硬件:EDA-IV型实验箱。 要求完成的主要任务: (1)设计任务 设计可变16位加法计数器,可通过3个选择位M2、M1、M0实现最多8种不同模式的计数方式,例如可构成5、10、16、46、100、128、200、256进制,共8种计数模式。 (2)时间安排: 2012.12.17 课程设计任务布置、选题、查阅资料 2012.12.18-21 设计,软件编程、仿真和调试 2012.12.22 2012.12.23 实验室检查仿真结果,验证设计的可行性和正确性,熟悉实验平台和试验箱 2012.12.24-26 设计的硬件调试 2012.12.27-28 机房检查设计成果,现场演示硬件实物,提交设计说明书及答辩 指导教师签名:年月日系主任(或责任教师)签名:年月日

目录 摘要.................................... 错误!未定义书签。Abstract ................................................ II 1 计数器的工作原理 (1) 2 设计原理 (3) 2.1 整体设计原理 (3) 2.2 单元模块的设计 (4) 2.2.1 计数模块的设计 (4) 2.2.2显示模块的设计 (5) 2.2.3分频模块的设计 (5) 2.2.4 顶层模块的设计 (5) 3 单元模块元件原理图 (6) 4 电路系统的功能仿真 (8) 5 硬件调试 (10) 6 个人小结 (12) 参考文献 (13) 附录 (14)

VB6.0的小程序计算器

的小程序计算器 对于刚入门学习VB6 的朋友来说肯定会做些小程序吧,这里就是给大家演示个简单的计算器程序,仅供参考啦。 界面上加减乘除四个按钮分别是cmdAdd cmdPlus、cmdMultiple、cmdDevide,小数点按钮是cmdDot,负号按钮是cmdMinuse,数字0?9为了偷懒,用了控件数组cmdNumber(O)~ cmdNumber(9),上面txtShow 是显示数字和结果用的,txtOperate 是显示中间步骤的。 思路大致是这样, 点加减乘除这类操作符的时候, 把当前txtShow 的值保存在模块变量mstrParam1 里,同时把操作符保存到mstrOperate 里,按等于号时把先把当前txtShow 的值保存在模块变量mstrParam2 里,然后对mstrParam1 和mstrParam2 进行运算,当然要记得设法把String 转换成数值进行运算。 转换的过程要注意,这里是用的Variant 数据类型, vParam1 和vParam2 都是Variant 类型,保存的是mstrParam1 和mstrParam2 的数值。之所以不用integer 、long 、double 这些标准类型,是因为这些类型都有大小限制,做出来用着不方便,VB最大的整型long才 到47 ,这意味着计算器的计算结果只能限制在9位到10位。而Variant类型可以支持非常 大的数,具体多大不清楚,但起码几十位是能够支持的。另外,最后算完的结果也要做格式化,因为如果数值非常大的话,VB会自动转成科学计数法,所以要用Format函数进行调整。 如果需要源代码的话在我百度空间里留言。Explicit Private Const mstrFORMATDEFAULT As String = "#.##" Private mstrParam1 As String, mstrParam2 As String Private mstrOperate As String Private Sub cmdAdd_Click() mstrParam1 = Trim mstrOperate = "+" ___ nil = & mstrParam1 & vbCrLf = & mstrOperate & vbCrLf End Sub Private Sub cmdPlus_Click() mstrParam1 = Trim mstrOperate = "-" ____ Illi

相关文档
最新文档