搜档网
当前位置:搜档网 › 十进制加减法

十进制加减法

十进制加减法
十进制加减法

目录

课程设计任务书 (2)

1 问题描述 (3)

2 前期分析 (3)

3 课程设计 (3)

3.1 总体设计 (3)

3.2 模块设计 (4)

3.2.1 求和模块 (4)

3.2.2 输入十进制数模块 (5)

3.2.3 存储器清零模块 (6)

3.2.4 减法模块 (7)

4 程序源代码 (7)

5 调试与分析 (13)

6 测试结果 (13)

7 经验与体会 (15)

评分表 (16)

课程设计任务书

学生姓名:毛习均专业班级:计算机1004班

指导教师:许毅工作单位:计算机科学与技术学院题目: 十进制加减计算器

初始条件:

理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧.

实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法.

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具

体要求)

进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计.具体的设计任务及要求:

1)编写程序实现十进制数的加减法;

2)将计算结果在屏幕上显示;

3)程序采用子程序结构,结构清晰;

4)友好清晰的用户界面,能识别输入错误并控制错误的修改.

在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书.

阅读资料:

1)《IBM—PC汇编语言程序设计实验教程》实验2.4

2)《IBM—PC汇编语言程序设计(第2版)》例6.11

时间安排:

设计安排一周:周1、周2:完成系统分析及设计.

周3、周4:完成程序调试,和验收.

周5:撰写课程设计报告.

指导教师签名:年月日

系主任(或责任教师)签名:年月

十进制加减法计算器

1问题描述

用汇编语言编写一个十进制加减法计算器,此程序要求将结果显示在屏幕上,并且友好清晰的用户界面,能识别输入错误并且控制修改.在此程序中采用子结构程序使结构清晰.

2前期分析

此课题是做一个带显示界面的十进制加减法计算器.首先,程序中多次用到BIOS的10号类型的显示中断功能,所以,在完成此课题之前重点深入学习例行中断程序的理论知识以及用法.其次,识别输入错误的修改功能,这就需要判断错误并及时置光标到合适的位置,以便提示并修改错误.最后,对于采用子程序结构必须清晰了解课题的大体结构,然后分析与设计子程序结构.比如输入十进制数就可以采用子程序结构.

3课题设计

3.1总体设计

图1有好用户界面

3.2模块设计

3.2.1求和模块

如右图2,求和模块,将加数与被

加数相加然后扩展为双字,最后通过求

余把每一位数存储在HE存储单元里,

后面把结果按位输出.

图2 求和

3.2.2输入十进制数模块

图3输入十进制数

上图3,就是输入两个十进制数,对输入的字符判断,如果是0-9之间的数,则转化为十进制数,否则提示重新输入字符.

3.2.3存储单元清零模块

为保证不发生内存访问冲突,每次重新计算的时候都要存储单元清零.如图4

图4存储单元清零

3.2.4减法模块

减法模块主要是比较减数与被减数的大小,如果data1>data2就直接计算,打印结果.否者将data1压入堆栈,显示’-’,然后data1出栈、计算,打印结果.

减法模块如下图5

图5 减法

4.程序源代码

DATAS SEGMENT

STR1 DB 0AH,0DH, ' ********************************************' STR2 DB 0AH,0DH, ' * *'

STR3 DB 0AH,0DH, ' * *'

STR4 DB 0AH,0DH, ' * 1:Enter run *'

STR5 DB 0AH,0DH, ' * *'

STR6 DB 0AH,0DH, ' * other keys exit *'

STR7 DB 0AH,0DH, ' * *'

STR8 DB 0AH,0DH, ' * *' STR9 DB 0AH,0DH, ' * *' STR10 DB 0AH,0DH, ' ********************************************' LENGTH1 EQU $-STR1 ;至str1的字节数STR11 DB 'Enter Exit,Other keys continue!$'

STR12 DB 'Please input again!$'

ERR DB 'Error!Please input again!$'

STR13 DB 'input data1:','$'

STR14 DB 'input data2:','$'

STR15 DB 'add result:','$'

STR16 DB '-','$'

STR17 DB 'sub result:','$'

COUNT DW ?

VALUE DW ?

JIASHU DW ?

BEIJIASHU DW ?

HE DW ?

SHOW MACRO M ;定义宏,显示字符串

LEA DX,M

MOV AH,9

INT 21H

ENDM

GUANGBIAO MACRO M1,M2

MOV DH,M1 ;行(Y坐标)MOV DL,M2 ;列(X坐标)MOV BH,0 ; 显示页码MOV AH,02

INT 10H ;用文本坐标下,设置光标位置ENDM

QINGPING MACRO M1,M2,M3,M4,M5

MOV AH,6 ;向上滚屏MOV AL,M1 ;滚动行数(0-清窗口)MOV BH,0DH ;空白区域的缺省属性MOV CH,M2 ;窗口的左上角位置,Y坐标MOV CL,M3 ;----------------,X坐标MOV DH,M4 ;窗口的右上角位置,Y坐标MOV DL,M5 ;----------------,X坐标INT 10H

ENDM

DATAS ENDS

STACKS SEGMENT

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

MOV AX,DATAS

MOV DS,AX

MOV AL,3 ;80*25 16色文本MOV AH,0 ;设置显示模式为80*25彩色文本模式INT 10H

MOV BP,SEG STR1 ;取段地址MOV ES,BP

MOV BP,OFFSET STR1 ;取偏移地址MOV CX,LENGTH1

MOV DX,0

MOV BL,09H ;属性(颜色) MOV AL,0 ; 光标位置不变(1改变)属性存在BL中,2和3的属性不在BL 中

GUANGBIAO 4,15

MOV AH,13H ;在TELETYPE模式下显示字符串INT 10H

MOV AH,1 ;键盘输入并回显INT 21H

CMP AL,31H ;输入1进入加法器,输入2结束

;JNZ NEXT

;NEXT:

;JMP LOOP8

GUANGBIAO 8,20 ;确定光标位置(字符串起始位置)SHOW STR13

GUANGBIAO 9,20

SHOW STR14

GUANGBIAO 10,20

SHOW STR15

GUANGBIAO 11,20

SHOW STR17

MOV SI,-2

MOV CX,5

LOOP1: ;存储器清零 ADD SI,2

MOV HE[SI],0

LOOP LOOP1

MOV BX,0

LOOP2: ;输入被加数 QINGPING 1,8,30,8,50

QINGPING 1,9,30,9,50

QINGPING 1,10,30,10,50

QINGPING 1,11,30,11,50

GUANGBIAO 8,30

CALL INPUT

MOV BEIJIASHU,BX

LOOP3: ;输入加数 QINGPING 1,13,18,13,51

QINGPING 1,12,20,12,50

MOV BX,0

GUANGBIAO 9,30

MOV BX,0

CALL INPUT

MOV JIASHU,BX

LOOP4:

GUANGBIAO 10,30 ;相加

MOV AX,BEIJIASHU

ADD AX,JIASHU

CWD

MOV DX,0 ;扩展并求结果各位数值 MOV BX,10000

DIV BX

MOV [HE],AX

MOV AX,DX ;余数给AX CWD

MOV BX,1000

DIV BX

MOV [HE+2],AX

MOV AX,DX

CWD

MOV BX,100

DIV BX

MOV [HE+4],AX

MOV AX,DX

CWD

MOV BX,10

DIV BX

MOV [HE+6],AX

MOV [HE+8],DX

MOV SI,-2

MOV CX,5

LOOP5:

ADD SI,2 ;结果输出

MOV DX,HE[SI]

ADD DX,30H

MOV AH,02

INT 21H

LOOP LOOP5 ;每位循环输出LOOP_I : ;JIAN FA

GUANGBIAO 11,30

MOV AX,BEIJIASHU

CMP AX,JIASHU

JAE FLAG

XCHG AX,JIASHU

PUSH AX

MOV DX,OFFSET STR16

MOV AH,09H

INT 21H

POP AX

FLAG:

SUB AX,JIASHU

CALL PRINT

JMP LOOP6

LOOP6:

GUANGBIAO 13,19 ;退出或继续 SHOW STR11

MOV AH,01

INT 21H

CMP AL,0DH ;回车退出 JNE LOOP7

MOV AH,4CH

INT 21H

LOOP7:

QINGPING 1,13,18,13,51

GUANGBIAO 12,21

SHOW STR12

JMP LOOP1

LOOP8:

MOV AH,4CH

INT 21H

ERROR:

GUANGBIAO 12,21

SHOW ERR

JMP LOOP1

INPUT PROC NEAR ;输入子程序LP1:

MOV AH,01

INT 21H

CMP AL,0dH ;输入回车输入结束 JE EXIT

CMP AL,31H

JB ERROR

CMP AL,39H

JA ERROR ;不是0~9之间则显示错误 SUB AL,30H

CBW

XCHG AX,BX

MOV CX,10

MUL CX

ADD BX,AX

JMP LP1 ;跳转直到输入回车EXIT:

RET

INPUT ENDP

PRINT PROC NEAR ;JIA FA DE SHU CHU JIE GUO

PUSH AX

MOV VALUE,AX

MOV COUNT,0

PRINT_D_LOP1:

XOR DX,DX

MOV AX,VALUE

MOV BX,10

DIV BX

MOV VALUE,AX

PUSH DX

INC COUNT

CMP VALUE,0

JA PRINT_D_LOP1

PRINT_D_LOP2:

CMP COUNT,0

JE P_EXIT

DEC COUNT

POP AX

ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

JMP PRINT_D_LOP2

P_EXIT:

POP AX

RET

PRINT ENDP

CODES ENDS

END START

5调试与分析

(1)最初汇编的时候出现asm<74>:error A2053:jump out of range by 121 byte,看看源程序和查资料发现是有条件跳转有界限的,无条件跳转可以“远跳”.最后通过有条件和无条件结合,解决这一问题.

(2)对于减法的结果,重新输入时候没有把结果清零,我就用mov ax,0;mov,dx,0还是不行,经过调试,发现是对减法的那个结果没有清屏.而不是存储器清零的原因.

(3)对于跳转指令,遇到跳转才跳转,没有的话,就是一步一步的指令顺序执行.这个好像是汇编中很简单的概念,但是有时候很容易忘记,但是经过调试发现,出现了这个简单的逻辑错误.

6测试结果

(1)友好界面,开始运行时的界面,当输入1就运行程序,输入其他键就退出程序,如下图6

图6 开始菜单

(2)程序输入34,89后得到加法结果为00123,减法结果-55结果正确,如下图7

图7正确输入,输出结果

(3)当输入非(0-9)的数字时,比如输入字母或者符号时,就提示“Error!please input again!”,提示重新输入,直到输入正确,如下图8

图8输入错误,提示重新输入

(4)最后输入正确数字后,将会看到“Enter Exit,other key continue!”

如果输入enter键退出程序,否者继续运算,如下图9

图9输入正确,并执行运算,enter键退出

7经验与体会

该开始看这个题目很简单的,但是后来发现很多的问题.比如在BIOS的10号类型的显示中断功能的应用就花费不少的时间,那里面确实有很多技巧值得深入学习.

本程序的跳转出现越界的情况,最后通过查资料最终把问题解决了,说明我们不懂的问题多去深入那个问题研究.

其余比较关键的就是本程序的细节问题,比如在输入时如何防止程序出错,就是在输入非数字的数据时可以提示使用者错并使其重新输入.

本程序用到了课堂上几乎没有讲过的宏定义,此程序应用了宏定义,使程序更加简洁.也不失一种大胆的尝试,并且取得了很好的效果.

通过本次课程设计发现自己在课堂上所学是知识只是基础部分,如果想自己做出更好的程序就需要花更多的精力在上面,通过网上找资料,我发现只要可以熟练运用汇编,我们就可以做出各种有趣或者实用的程序,那是一件非常有意义的事情.可能这也是我们学习这门课程的最终所要达到的目的.

同步二进制加法计数器

同步二进制加法计数器 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.文字叙述逻辑功能 解:

最新程序自动生成10以内加减法口算练习题集合(2500题)

姓名 ______ 时间 ______ 分数 ______ 7-0= 8+0= 9-2= 1+6= 8-1= 9+1= 6-2= 1+8= 8-7= 4+6= 4-2= 1+9= 5-0= 1+2= 7-4= 0+8= 7-5= 6+2= 3-1= 7+0= 7-4= 3+5= 4-0= 5+1= 7-5= 3+4= 9-0= 8+1= 4-3= 5+5= 7-2= 8+0= 5-4= 6+1= 3-2= 5+0= 9-4= 6+1= 5-3= 4+5= 8-1= 8+1= 5-2= 4+6= 8-2= 5+5= 8-2= 1+0= 4-3= 1+3=

姓名 ______ 时间 ______ 分数 ______ 4-1= 3+2= 3-2= 3+3= 9-5= 9+0= 6-3= 5+5= 4-2= 1+5= 9-4= 7+2= 1-0= 5+3= 2-1= 8+1= 9-6= 9+1= 6-0= 5+0= 9-1= 1+7= 9-7= 5+1= 3-2= 3+4= 9-3= 9+1= 7-4= 9+1= 7-3= 6+2= 7-3= 9+0= 3-1= 6+2= 9-3= 6+1= 3-0= 3+1= 9-6= 6+1= 8-7= 1+0= 8-5= 4+4= 9-7= 6+1= 3-2= 8+1=

姓名 ______ 时间 ______ 分数 ______ 8-7= 8+0= 9-7= 4+0= 9-1= 0+5= 8-4= 5+3= 3-0= 1+1= 5-2= 0+2= 3-2= 1+1= 9-1= 4+5= 3-2= 6+0= 5-0= 2+5= 9-2= 0+8= 8-1= 3+4= 7-4= 4+2= 6-1= 3+6= 7-1= 3+4= 9-2= 6+3= 3-0= 8+2= 9-7= 6+0= 8-1= 5+2= 4-2= 1+6= 7-0= 2+3= 1-0= 7+3= 4-2= 8+0= 4-3= 3+3= 9-8= 0+10=

VHDL双向十进制加减法计数器(代码和截图)

Clk上升沿有效,we=0,dir=0 此时为加法操作 Clk上升沿有效,we=0,dir=1 此时为减法操作 We=1,需要置初值,上升沿有效,dir=1,减法操作

We=0,dir任意,保持 LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; entity vh is port ( clk : in std_logic; dir : in std_logic; we : in std_logic; d : in std_logic_vector(3 downto 0); co : out std_logic ); end entity; architecture rtl of vh is SIGNAL temp:std_logic_vector(3 downto 0); begin process (clk) begin if(we='1')then temp<=d; elsif(clk'event and clk='1')then if(dir='0')then if(temp<9)then temp<=temp+'1';

co<='0'; else temp<="0000"; co<='1'; end if; elsif(dir='1')then if(temp>0)then temp<=temp-'1'; co<='0'; else temp<="1001"; co<='1'; end if; end if; end if; end process; end rtl;

verilog HDL十进制加减法计数器报告

十进制加减法计数器 1.实验要求 (1)在Modelsim环境中编写十进制加减法计数器程序; (2)编译无误后编写配套的测试程序; (3)仿真后添加信号,观察输出结果。 2.设计程序如下 module decade_counter #(parameter SIZE=4) (input clock,load_n,clear_n,updown, input [SIZE-1:0]load_data, output reg [SIZE-1:0]q ); always @(negedge load_n,negedge clear_n,posedge clock) if (!load_n) q<=load_data; else if (!clear_n) q<=0; else //clock??? if(updown) q<=(q+1)%10; else begin if(q==0) q<=9; else q<=q-1; end endmodule 3.测试程序如下 `timescale 1ns/1ns module test_decade_counte; reg clock,load_n,clear_n,updown; reg [3:0]load_data; wire [3:0]q; decade_counter T1(clock,load_n,clear_n,updown,load_data,q); initial begin clock=0;clear_n=0;

#30 clear_n=1;load_n=0;load_data=7; #30 load_n=1;updown=0; #300 updown=1; #300 updown=0; #300 updown=1; #300 $stop; end always #10 clock=~clock; always @(q) $display("At time%t,q=%d",$time,q); endmodule 4.波形如下 5.测试结果如下 # At time 0,q= 0 # At time 30,q= 7 # At time 70,q= 6 # At time 90,q= 5 # At time 110,q= 4 # At time 130,q= 3 # At time 150,q= 2 # At time 170,q= 1 # At time 190,q= 0 # At time 210,q= 9 # At time 230,q= 8 # At time 250,q= 7 # At time 270,q= 6 # At time 290,q= 5 # At time 310,q= 4 # At time 330,q= 3

十进制4位加法计数器设计

洛阳理工学院 十 进 制 4 位 加 法 计 数 器 系别:电气工程与自动化系 姓名:李奇杰学号:B10041016

十进制4位加法计数器设计 设计要求: 设计一个十进制4位加法计数器设计 设计目的: 1.掌握EDA设计流程 2.熟练VHDL语法 3.理解层次化设计的内在含义和实现 设计原理 通过数电知识了解到十进制异步加法器的逻辑电路图如下 Q3 则可以通过对JK触发器以及与门的例化连接实现十进制异步加法器的设计 设计内容 JK JK触发器的VHDL文本描述实现: --JK触发器描述 library ieee; use ieee.std_logic_1164.all; entity jk_ff is

port( j,k,clk: in std_logic; q,qn:out std_logic ); end jk_ff; architecture one of jk_ff is signal q_s: std_logic; begin process(j,k,clk) begin if clk'event and clk='0' then if j='0' and k='0' then q_s <= q_s; elsif j='0' and k='1' then q_s <= '0'; elsif j='1' and k='0' then q_s <= '1'; elsif j='1' and k='1' then q_s <= not q_s; end if; end if; end process; q <= q_s; qn <= not q_s; end one; 元件门级电路: 与门VHDL文本描述实现: --与门描述library ieee; use ieee.std_logic_1164.all;

实验十进制加减法计数器

实验1 十进制加减法计数器 实验地点:电子楼218 实验时间:2012年10月19日指导老师:黄秋萍、陈虞苏 实验要求:设计十进制加减法计数器,保留测试程序、设计程序、仿真结果 1.设计程序: module count(EN,CLK,DOUT,F,RST); input EN,CLK,F,RST; output [3:0]DOUT; reg [3:0]DOUT; always@(posedge CLK) begin :abc if(EN) if(!RST) if(F) begin :a DOUT=DOUT+1; if(DOUT==10) DOUT=0; end //END A else begin :b DOUT=DOUT-1; if(DOUT==15) DOUT=9; end else DOUT=0; else DOUT=DOUT; end endmodule 2.测试程序 `timescale 10ns/1ns module test_count; wire [3:0] DOUT; reg EN,F,RST,CLK; count M(EN,CLK,DOUT,F,RST); initial begin :ABC CLK=0; EN=0;

RST=1; F=1; #100 EN=1; #200 RST=0; #1500 F=0; #3000 $stop; end always #50 CLK=~CLK; initial $monitor("EN=%b,F=%b,RST=%b,DOUT%D",EN,F,RST,DOUT); endmodule 3.测试结果 # EN=0,F=1,RST=1,DOUT x # EN=1,F=1,RST=1,DOUT x # EN=1,F=1,RST=1,DOUT 0 # EN=1,F=1,RST=0,DOUT 0 # EN=1,F=1,RST=0,DOUT 1 # EN=1,F=1,RST=0,DOUT 2 # EN=1,F=1,RST=0,DOUT 3 # EN=1,F=1,RST=0,DOUT 4 # EN=1,F=1,RST=0,DOUT 5 # EN=1,F=1,RST=0,DOUT 6 # EN=1,F=1,RST=0,DOUT 7 # EN=1,F=1,RST=0,DOUT 8 # EN=1,F=1,RST=0,DOUT 9 # EN=1,F=1,RST=0,DOUT 0 # EN=1,F=1,RST=0,DOUT 1 # EN=1,F=1,RST=0,DOUT 2 # EN=1,F=1,RST=0,DOUT 3 # EN=1,F=1,RST=0,DOUT 4 # EN=1,F=1,RST=0,DOUT 5 # EN=1,F=0,RST=0,DOUT 5 # EN=1,F=0,RST=0,DOUT 4 # EN=1,F=0,RST=0,DOUT 3 # EN=1,F=0,RST=0,DOUT 2 # EN=1,F=0,RST=0,DOUT 1 # EN=1,F=0,RST=0,DOUT 0 # EN=1,F=0,RST=0,DOUT 9 # EN=1,F=0,RST=0,DOUT 8 # EN=1,F=0,RST=0,DOUT 7 # EN=1,F=0,RST=0,DOUT 6 # EN=1,F=0,RST=0,DOUT 5

四位二进制减法计数器

成绩评定表

课程设计任务书

摘要 Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,应用范围非常广泛,由于数字系统中高低电平分别用0和1表示,数字电路问题可以转化成逻辑问题,可以通过仿真电路表示出来,进行观察和研究,并且可以下载到实验箱上。此次课程设计我将使用VHDL设计一个四位二进制减法器。 Multisim是美国国家仪器(NI)有限公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。在这次课设中我将用它绘制出电路图,进行四位二进制减法器模拟。 关键词:Quartus II;VHDL;Multisim;减法器

目录 一、课程设计目的 (1) 二、设计框图 (1) 三、实现过程 (2) 1、QUARTUS II实现过程 (2) 1.1建立工程 (2) 1.2编译程序 (7) 1.3波形仿真 (11) 1.4引脚锁定与下载 (15) 1.5仿真结果分析 (16) 2、MULTISIM实现过程 (16) 2.1求驱动方程 (16) 2.2画逻辑电路图 (20) 2.3逻辑分析仪的仿真 (21) 2.4结果分析 (21) 四、总结 (23) 五、参考书目 (24)

一、课程设计目的 1:了解四位二进制计数器工作原理和逻辑功能。 2:掌握计数器电路的分析、设计方法及应用。 3:学会正确使用JK 触发器。 二、设计框图 状态转换图是描述时序电路的一种方法,具有形象直观的特点,即其把所用 触发器的状态转换关系及转换条件用几何图形表示出来,十分清新,便于查看。 在本课程设计中,四位二进制减法计数器用四个CP 上升沿触发的JK 触发器实现,其中有相应的跳变,即跳过了0000 0001 0010三个状态,这在状态转换图中可以清晰地显示出来。具体结构示意框图和状态转换图如下: ↓ ????←????←????←????←????←????←???→????→????→????→????→????→? 1000011101100101010000111/10011010101111001101111011110 /0/0/0/0/0/0 /0/0/0/0/0/ B:状态转换图

10进制加法计数器课程设计

西北师范大学知行学院 数字电子实践论文 课题:74ls161组成的十进制加法计数器 (置数法) 班级:14电本 学号:14040101114 姓名:于能海

指导老师:崔用明 目录 第1章前言 (1) 1.1 摘要 (1) 1.2 设计目的 (2) 1.3 设计内容及要求 (2) 第2章设计方案 (3) ....................................................................................................................... 错误!未定义书签。 2.1主要芯片功能介绍 (3) 2.2.1 四位二进制计数器74161介绍 (3) ............................................................................................................... 错误!未定义书签。 2.2 工作原理 (4) 第3章硬件设计 (4) 3.1 单元电路设计 (4) 3.2 总硬件电路图 (5) 第4章仿真与试验 (6) 4.1 仿真结果 (6) 4.2 调试中遇到的问题 (7) 第5章结论和体会 (8)

第1章前言 1.1 摘要在数字电路技术的课程中,计数器的功能是记忆脉冲的个数,它是数字系统中应用最广泛的基本时序逻辑构件。计数器在微型计算机系统中的主要作用就是为CPU和I/O设备提供实时时钟,以实现定时中断、定时检测、定时扫描、定时显示等定时控制,或者对外部事件进行计数。一般的微机系统和微机应用系统中均配置了定时器/计数器电路,它既可当作计数器作用,又可当作定时器使用,其基本的工作原理就是"减1"计数。计数器:CLK输入脉冲是一个非周期事件计数脉冲,当计算单元为零时,OUT输出一个脉冲信号,以示计数完毕。 本十进制加法计数器是基于74161芯片而设计的, 该十进制加法计数器设计理念是用于工厂流水线上产品计数,自动计数,方便简单。 关键词:74ls161计数器 Introduction In the course of digital circuit technology, the counter memory function is the number of pulses, it is a digital system, the most widely used basic sequential logic components. The main role of the counter in the micro-computer system is to provide real-time clock for the CPU and I / O devices to achieve the timer interrupt, timing detection, scheduled scanning, the timing display timing control, or to count external events. General computer systems and computer application systems are equipped with a timer / counter circuit, it can as a counter action, but also as a timer, the basic working principle is "minus 1" count. Counter: CLK input pulse is a non-periodic event count pulses to zero when calculating unit, OUT outputs a pulse signal, to show the count is completed. The decimal addition counter is designed based on the 74161 chip, the low potential sensor senses when to rely on external signals, sensors in an object within the sensing range, otherwise it is a high potential. Within the sensing range of the sensor when an object is moved out of date, sensor potential from high to low and then high, appears on the edge. Counter is automatically incremented and displayed on a digital control. The decimal addition counters have two seven-segment LED. It can count from 0 to 99 objects, and easy to expand. The design concept of decimal addition counter is used to count on a factory assembly line products, automatic counting, convenient and simple. Keywords:74ls161counter

十进制加法计数器 (3)

EDA技术与VHDL实验报告 一实验题目:十进制加法计数器 二实验目的: 设计带有异步复位和同步时钟使能的十进制加法计数器。 三实验内容: 编写十进制加法计数器的VHDL实现程序;通过电路仿真和硬件验证,了解变量的使用方法,以及“(OTHERS=>X)”的使用方法。四实验原理: 十进制加法计数器的VHDL描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10; ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN) V ARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

IF RST = '1' THEN CQI := (OTHERS =>'0') ; --计数器异步复位 ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿 IF EN = '1' THEN --检测是否允许计数(同步使能) IF CQI < 9 THEN CQI := CQI + 1; --允许计数检测是否小于9 ELSE CQI := (OTHERS =>'0'); --大于9,计数值清零 END IF; END IF; END IF; IF CQI = 9 THEN COUT <= '1'; --计数大于9,输出进位信号 ELSE COUT <= '0'; END IF; CQ<= CQI; --将计数值向端口输出END PROCESS; END behav;

2位10进制加法计数器课程设计

目录 第1章前言 (1) 1.1 摘要 (1) 1.2 设计目的 (1) 1.3 设计内容及要求 (1) 第2章设计方案 (2) 2.1 系统框图 (2) 2.2主要芯片功能介绍 (2) 2.2.1 四位二进制计数器74161介绍 (2) 2.2.2七段显示译码器7448介绍 (3) 2.3 工作原理 (4) 第3章硬件设计 (5) 3.1 单元电路设计 (5) 3.2 总硬件电路图 (7) 第4章仿真与试验 (8) 4.1 仿真结果 (8) 4.2 调试中遇到的问题 (8) 第5章结论和体会 (9) 第6章参考文献 (10)

第1章前言 1.1 摘要 在数字电路技术的课程中,计数器的功能是记忆脉冲的个数,它是数字系统中应用最广泛的基本时序逻辑构件。计数器在微型计算机系统中的主要作用就是为CPU和I/O设备提供实时时钟,以实现定时中断、定时检测、定时扫描、定时显示等定时控制,或者对外部事件进行计数。一般的微机系统和微机应用系统中均配置了定时器/计数器电路,它既可当作计数器作用,又可当作定时器使用,其基本的工作原理就是"减1"计数。计数器:CLK输入脉冲是一个非周期事件计数脉冲,当计算单元为零时,OUT输出一个脉冲信号,以示计数完毕。 本十进制加法计数器是基于74161芯片而设计的,依靠传感器感应外界信号,传感器在感应范围内有物体时输出低电位,反之则是高电位。当传感器的感应范围内有物体移过时,传感器电位由高到低再到高,出现上跳沿。计数器会自动加一,并将在数码管上显示。本十进制加法计数器有两位七段数码管。可计数0~99个物体,并易于扩展。 该十进制加法计数器设计理念是用于工厂流水线上产品计数,自动计数,方便简单。 1.2 设计目的 1、综合运用相关课程中所学到的理论知识去独立完成某一设计课题; 2、学习用集成触发器构成计数器的方法; 3、进一步熟悉常用芯片和电子器件的类型及特性,并掌握合理选用器件的原则; 5、初步了解电路设计、仿真的过程和方法; 4、锻炼分析问题解决问题的能力; 1.3 设计内容及要求 1、具有2位10进制计数功能; 2、利用传感器,不接触计数; 3、每一个物体经过,计数器自动加1; 4、具有显示功能; 5、并用相关仿真软件对电路进行仿真。

十进制加法计数器

十进制加法器设计 1课程设计的任务与要求 课程设计的任务 1、综合应用数字电路知识设计一个十进制加法器。了解各种元器件的原理及其应用。 2、了解十进制加法器的工作原理。 3、掌握multisim 软件的操作并对设计进行仿真。 4、锻炼自己的动手能力和实际解决问题的能力。 5、通过本设计熟悉中规模集成电路进行时序电路和组合电路设计的方法,掌握十进制加法器的设计方法。 课程设计的要求 1、设计一个十进制并运行加法运算的电路。 2、0-9十个字符用于数据输入。 3、要求在数码显示管上显示结果。 2十进制加法器设计方案制定 加法电路设计原理 图1加法运算原理框图 如图1所示 第一步 置入两个四位二进制数。例如(1001)2,(0011)2和(0101)2,(1000)2,同时在两个七段译码显示器上显示出对应的十进制数9,3和5,8。

第二步将置入的数运用加法电路进行加法运算。 第三步前面所得结果通过另外两个七段译码器显示。即: 加法运算方式,则(1000)2+(0110)2=(1110)2 十进制8+6=14 并在七段译码显示出14。运算方案 通过开关S1——S8接不同的高低电平来控制输入端所置的两个一位十进制数,译码显示器U8和U9分别显示所置入的两个数。数A直接置入四位超前进位加法器74LS283的A4——A1端,74LS283的B4——B1端接四个2输入异或门。四个2输入异或门的一输入端同时接到开关S1上,另一输入端分别接开关S5——S8,通过开关S5——S8控制数B的输入,通过加法器74LS283完成两个数A和B的相加。由于译码显示器只能显示0——9,所以当A+B>9时不能显示,我们在此用另一片芯片74LS283完成二进制码与8421BCD码的转换,即S>9(1001)2时加上3(0011)2,产生的进位信号送入译码器U10来显示结果的十位,U11显示结果的个位。 3十进制加法器电路设计 加法电路的实现 用两片4位全加器74LS283和门电路设计一位8421BCD码加法器。由于一位8421BCD 数A加一位数B有0到18这十九种结果。而且由于显示的关系,当大于9的时候要加六转换才能正常显示,所以设计的时候有如下的真值表:

十进制加法计数器

燕山大学 课程设计说明书 题目:十进制加法计数器 学院(系):电气工程学院 年级专业: 学号: 学生姓名: 指导教师 教师职称:实验师实验师 燕山大学课程设计(论文)任务书 院(系):电气工程学院基层教学单位:电子实验中心学号学生姓名专业(班级) 设计题目十进制加法器 设计技术参数●在数码管上显示加数、被加数和结果 ●设置加数和被加数。当加数和被加数超过9时显示“E”,计算结果显示为“EE” 设计要求●在4个数码管显示加数、被加数和结果 ●分别用4个拨码开关设置加数和被加数 ●当加数、被加数超过9时,蜂鸣器报警5秒

工作量●学会使用Max+PlusII软件和实验箱 ●独立完成电路设计,编程下载、连接电路和调试●参加答辩并书写任务书 工作计划1.了解EDA的基本知识,学习使用软件Max+PlusII,下发任务书,开始电 路设计; 2.学习使用实验箱,继续电路设计; 3.完成电路设计; 4.编程下载、连接电路、调试和验收; 5.答辩并书写任务书。 参考资料《数字电子技术基础》.阎石主编.高等教育出版社. 《EDA课程设计B指导书》. 指导教师签字基层教学单位主任签字金海龙 说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。 2013年 3 月 11 日 目录 第1章前言 (4) 第2章设计说明 (5) 2.1 设计思路 (5) 2.2 模块介绍 (5) 第3章总电路原理图 (10) 第4章波形仿真图及结果分析 (11) 第5章补充说明 (12) 5.1真值表 (12) 5.2管脚锁定及硬件连线.......................................& (13) 第6章心得体会 (15) 参考文献 (16) 第1章前言

十进制加减可逆计数器的设计

摘要 计数器是数字电路中最为基本的一个单元电路。本次基础强化的目标是要我们熟悉常用MSI集成计数器的功能和应用;掌握利用集成计数器构成不同功能的计数器的设计方法;学会利用EDA软件(Proteus)对模M的可逆计数器电路进行仿真;掌握可逆计数器电路的安装及调试方法。本次课设报告先是说明了十进制加/减可逆计数器的技术指标,简要地陈述了设计方案和设计思路,然后就对其有关理论知识作了一些简要的介绍,然后在性能指标分析基础上进行单元电路设计,设计出整体电路图并且在软件Proteus中进行仿真,最后通过protel 做出电路板验证是否达到技术要求,总结课设体会。 关键词:手动控制,自动控制,计数器,加减可逆

目录 摘要 (1) 1设计任务与要求 (3) 2设计方案及其比较 (3) 2.1 设计方案 (3) 2.2设计思路 (4) 2.2.1手控自动加、减计数器设计思路 (4) 2.2.2自控可逆方式计数器设计思路 (4) 2.2.3手动脉冲设计思路 (5) 2.3集成电路及元件选择 (6) 3实现方案 (6) 3.1 脉冲发生电路实现方案 (6) 3.1.1 基本原理 (6) 3.1.2 有关参数及计算 (7) 3.2 加/减/计数器控制电路实现方案 (7) 3.3 自动控制可逆计数器实现方案 (9) 3.4译码显示单元电路设计实现方案 (10) 3.4.1译码显示单元电路设计 (10) 3.4.2译码器74LS48 (11) 3.4.3显示器LG5011AH (12) 3.4.4译码显示电路 (13) 3.5 手动脉冲发生电路实现方案 (14) 3.6 清零功能实现方案 (15) 3.7 总原理图的设计实现方案 (16) 4 Proteus仿真 (17) 5 制版与调试 (18) 5.1 DXP注意事项 (18) 5.2 制作PCB板的流程 (19) 5.3 注意事项 (19) 5.4 调试结果与分析 (19) 6 课设总结 (20) 谢辞 (21) 参考文献 (22) 附录 (23)

异步十进制加法计数器

5.16 虚拟实验16:异步十进制加法计数器 一、实验目的 1. 熟悉异步十进制加法计数器的工作原理及逻辑功能的测试方法。 2. 学会中规模集成电路的使用方法。 3. 掌握显示器件的使用方法。 二、实验原理 计数是一种最简单、最基本的运算,在各种数字系统中,往往需要对脉冲进行计数、分频,实现测量、运算、控制等各项功能。 计数器品种繁多,按触发器翻转情况不同可分为同步计数器和异步计数器;按计数过程中,计数器中数的增、减情况不同可分为递增(加法)、递减(减法)和可逆计数器;按计数器的进制不同又可分为二进制计数器、十进制计数器、二一十进制计数器及N进制计数器;此外还有特殊形式的寄存器型计数器等。 由若干个单元触发器,如边沿JK触发器、D触发器等可以组成任意进制的同步或异步计数器。在同步十进制计数器中,计数脉冲同时驱动各级触发器的时钟,使各级触发器同时动作,因而工作速度较快;在异步计数器中,由于各级触发器时钟不同,因而触发器工作有先有后,电路工作速度较慢。 目前中规模集成计数器品种很多,应用十分方便。除特殊需要外,已不必要用单元触发器自行设计计数器了。利用反馈复位法和已有的二进制计数器产品,便可以方便地构成任意进制的计数器。特别是利用可编进制计数器甚至不需要外加复位电路就能十分方便地构成N进制计数器。 在本次实验中选用的数字集成电路74290(T4290)是异步二—五—十进制计数器,它的外部引线排列如图5.16.1所示。 图5.16.1 异步二-五-十进制 计数器T4290外部引线排列图 其中,CLKA′和CLKB′是时钟脉冲CP0、CP1输入端;RO(1)、RO(2)是异步置0端;R9(1)、R9(2)为置9端S9(1)和S9(2);输出端QA、QB、QC、QD即Q0、Q1、Q2、Q3端。当将Q0和 - 148 -

十进制加法计数器程序

[例5.6.1] 十进制计数器的VHDL描述(sw向上是0(on);灯亮为0 )LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; entity count10 is PORT (cp,r:IN S TD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); end count10; ARCHITECTURE Behavioral OF count10 IS SIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0) ; BEGIN PROCESS (cp,r) BEGIN if r='0' then count<="0000"; elsiF cp'EVENT AND cp='1' THEN if count="1001" THEN count <="0000"; ELSE count <= count +1; END IF; end if; END PROCESS; q<= count; end Behavioral; [例5.6.1] 十进制计数器的VHDL描述(sw向上是1;灯亮为1)library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity count10 is PORT (cp,r:IN S TD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); end count10; ARCHITECTURE Behavioral OF count10 IS SIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0) ; BEGIN PROCESS (cp,r) BEGIN if r='1' then count<="0000"; elsiF cp'EVENT AND cp='1' THEN if count="1001" THEN count <="0000"; ELSE count <= count +1; END IF; end if; END PROCESS; q<=not count; end Behavioral;

单片机课程设计十进制加法计算器设计

华东交通大学 课程设计报告书所属课程名称 单片机原理及应用 题目________________________________________ 院(系)电气学院 _________________ 班级电气化14 - 班 学号________________________________________ 学生姓名____________________________________ 指导教师____________________________________ 辅导教师____________________________________ 2016年12月30日

课程设计(论文)任务书 电气学院 ______________ 电气工程___________ 专业14 级( )班 一、课程设计(论文)题目___________ 填写所选题目____________________________ 二、课程设计(论文)工作自2016 年12月_26_日起至2016 年12月_^0_日止。 三、课程设计(论文)内容要求: 1 ?本课程设计的目的 (1)使学生掌握系统单片机各功能模块的基本工作原理; (2 )培养学生单片机硬件电路设计的基本思路和方法; (3 )使学生掌握系统调试的方法; (4)培养学生分析、解决问题的能力; (5)提高学生的科技论文写作能力。 2 ?课程设计的任务及要求 1) 基本要求: (1)分析所设计系统各功能模块的工作原理; (2 )选用合适的器件(芯片); (3)提出系统的设计方案(要有电路原理图) ; (4 )对所设计电路进行仿真调试。 (5 )所设计系统的具体功能要求: (此处填写自已所选题目任务书中的系统功能要求) 2) 提高要求: 在基本要求达到后,可进行创新设计,如改善电路性能,在实验板上调试等。 3) 课程设计论文编写要求 (1)要按照书稿的规格誊写课设论文 (2)论文包括目录、绪论、正文、小结、参考文献、附录等 (3)正文中要有程序设计思路的阐述,程序流程图,硬件原理图等 (4)课设论文装订按学校的统一要求完成 4) 课设考核: 从以下几方面来考查: (1)出勤情况及任务的饱满程度; (2)设计任务的难易程度; (3)完成课设任务情况; (4)动手调试能力; (5)论文撰写的原理分析、设计思路以及论述的层次性、条理性、格式的规范性; 5) 课程设计进度安排 内容天数地点 构思及收集资料 1 图书馆

16进制同步加法计数器

目录 1 加法计数器 (2) 1.1 题目内容 (2) 1.2 状态图 (2) 1.3 选择触发器,求时钟方程,输出方程和状态方程 (2) 1.4 求驱动方程 (5) 1.5 画逻辑电路图 (6) 2 序列脉冲发生器 (7) 2.1 题目内容 (7) 2.2 状态图 (7) 2.3 选择触发器,求时钟方程,输出方程和状态方程 (8) 2.4 求驱动方程 (9) 2.5 画逻辑电路图 (10) 3 总结 (11) 4 参考文献 (11)

1 加法计数器 1.1题目内容 设计一个十六进制同步加法计数器,具有清零和置位功能 1.2状态图 根据二进制递增计数的规律,可画出如图1所示的十六进制加法计数器的状态图。 0 0 0 0 0 0 0 0000 0001 0010 0011 0100 0101 0110 0111 0 0 1111 1110 1101 1100 1011 1010 1001 1000 0 0 0 0 0 0 0 C 排列: C=Q n 3Q n 2 Q n 1 Q n 图 1 十六进制同步加法计数器的状态图 1.3选择触发器,求时钟方程,输出方程和状态方程 选择触发器 由于JK触发器功能齐全,使用灵活,故选用4个时钟下降沿触发的边沿JK 触发器。 求时钟方程 由于要求构成的是同步计数器,显然各个触发器的时钟信号都应使用输入计数脉冲 CP,即 CP0=CP1=CP2=CP3=CP

求输出方程 由图1所示状态图可直接得到 C= Q n 3 Q n 2 Q n 1 Q n 求状态方程 根据图1所示状态图的规定,可画出如图2所示的计数器次态卡诺图。 Q 图2 十六进制同步加法计数器次态的卡诺图 把图2所示卡诺图分解开,便可得到如图3所示各个触发器次态的卡诺图。 n n (a)

四位十进制加法计数器

四位十进制加法计数器 一、实训目的 1.巩固编译、仿真VHDL文件的方法。 2.掌握VHDL程序顺序语句的应用。 3.掌握四位二进制加法计数器的工作原理。 二、实训器材 计算机与Quartus Ⅱ工具软件。 三、实训指导 (一)实训原理 四位十进制加法计数器真值表如表6-1所示。 表6-1 四位十进制加法计数器的真值表 输入输出 CR LD CP DIR D3 D2 D1 D0 Q3 Q2 Q1 Q0 1 X X X X X X X 0 0 0 0 0 0 X X d3 d2 d1 d0 d3 d2 d1 d0 0 1 ↑ 1 X X X X 加法计数 0 1 ↑0 X X X X 减法计数 0 1 1 X X X X X 保持 (二)实训步骤 1.设计输入VHDL文件 (1)建立工程项目。 (2)建立VHDL文件。 (3)设计输入VHDL文件,可用IF语句或CASE语句等顺序语句设计。 VHDL代码如下: LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY JIAJIANJISHU IS PORT(D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

CR,CP,LD,DIR:IN STD_LOGIC; CO,BO:OUT STD_LOGIC; Q:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); END JIAJIANJISHU; ARCHITECTURE W OF JIAJIANJISHU IS BEGIN PROCESS(CR,CP,DIR,LD,D) BEGIN IF CR='1' THEN Q<="0000"; ELSIF LD='0' THEN Q<=D; ELSE IF (CP='1' AND CP'EVENT) THEN IF DIR='1' THEN Q<=Q+1; IF Q=9 THEN Q<="0000"; END IF; ELSIF DIR='0' THEN Q<=Q-1; IF Q=0 THEN Q<="1001"; END IF; END IF; END IF; END IF; END PROCESS; CO<=Q(3) AND Q(0)AND DIR; BO<=(NOT Q(3))AND(NOT Q(2))AND (NOT Q(1)) AND (NOT Q(0))AND (NOT DIR); END W; 2.编译仿真VHDL文件 (1)编译VHDL文件。 如果有错误,检查并纠正错误,直至最后通过。 (2)仿真VHDL文件。 认真核对输入/输出波形,检查设计的功能是否正确。 四位十进制加法计数器的仿真波形图如图6-1所示。

相关主题