当前位置:文档之家› 用六位数码管动态显示计数器的计数结果

用六位数码管动态显示计数器的计数结果

用六位数码管动态显示计数器的计数结果
用六位数码管动态显示计数器的计数结果

北华航天工业学院

《EDA技术综合设计》

课程设计报告

重写

报告题目:用六位数码管动态显示计数器的计数结果作者所在系部:电子工程系

作者所在专业:自动化

作者所在班级:B08221班 03号

作者姓名:肖茂林

指导教师姓名:崔瑞雪

完成时间:2010年12月1日

课程设计任务书

课题名称用六位数码管动态显示计数器的计数结果完成时间2010年11月30日

指导教师崔瑞雪职称教授学生姓名肖茂林班级B08221

总体设计要求和技术要点

①总体设计要求:设计一个能在7段数码管上动态刷新显示十进制、十二进制、六十进制、四位二进制计数器计数结果的VHDL语言程序并在EDA实验开发系统上实现该功能。

②技术要点:VHDL语言编辑程序、共阴7段数码管及FPGA可编程芯片的工作原理与连线。

工作内容及时间进度安排

2010年11月18日—28日编辑VHDL语言程序

2010年11月29日在教二实验室调试程序

2010年11月30日在实验室答辩验收

课程设计成果

1.与设计内容对应的软件程序

2.课程设计报告书

3.成果使用说明书

4.设计工作量要求

内容摘要

用VHDL语言在MAX+PLUS2环境下

设计一个带使能输入、进位输出及同步清零的十进制计数器。

设计一个带使能输入及同步清零的十二进制计数器。

设计一个带使能输入及同步清零的六十进制加法计数器。

设计一个四位二进制可逆计数器。

设计一个共阴7段数码管控制接口,在时钟信号的控制下,使六位数码管动态刷新显示上述计数器的计数结果。

最后在EDA实验开发系统实验操作。

关键词

计数器、EDA实验开发系统、动态显示

目录

一、课程设计要求 (1)

二、题目分析 (1)

三、设计思路 (1)

四、VHDL语言程序设计 (2)

五、顶层文件截图 (7)

六、在EDA实验开发系统上的功能实现 (8)

七、实验总结 (8)

八、参考文献 (8)

一、课程设计要求

用VHDL语言在MAX+PLUS2环境下

设计一个带使能输入、进位输出及同步清零的十进制计数器。

设计一个带使能输入及同步清零的十二进制计数器。

设计一个带使能输入及同步清零的六十进制加法计数器。

设计一个四位二进制可逆计数器。

设计一个共阴7段数码管控制接口,在时钟信号的控制下,使六位数码管动态刷新显示上述计数器的计数结果。

最后在EDA实验开发系统实验操作。

二、题目分析

四个计数器同时开始计数,通过计数器的使能端可以随时控制计数器是否继续工作,通过同步清零端可以随时把任何一个计数器清零重新开始计数。四位二进制可逆计数器可以随时进行加计数或减计数。

通过六进制计数器扫描数码管和作为对其他4个计数器的选择信号,再通过一个数据选择器选择出计数器的输出信号,通过4-7译码器的输出信号在数码管上显示出计数结果。

三、设计思路

当时钟信号频率足够大时可以实现六个数码管“同时”显示各计数

器的计数结果。因为人的眼睛分辨不出各数码管的快速跳变。所以能实现所要求的同步计数的目的。

四、VHDL语言程序设计

1.十进制计数器:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY JISHU10 IS

PORT( CLK,E,L:IN STD_LOGIC;

I :IN STD_LOGIC_VECTOR(3 DOWNTO 0);

C :OUT STD_LOGIC;

O :BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) );

END JISHU10;

ARCHITECTURE ABC OF JISHU10 IS

BEGIN

C<='1' WHEN O="1001" AND E='1' ELSE '0';

PROCESS(I)

BEGIN

IF RISING_EDGE(CLK) THEN

IF L='1' THEN O<=I;

ELSIF E='1' THEN

IF O="1001" THEN O<="0000";

ELSE O<=O+1;

END IF;

END IF;

END IF;

END PROCESS;

END ABC;

2.十二进制计数器:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY JISHU12 IS

PORT( CLK,E,L:IN STD_LOGIC;

I :IN STD_LOGIC_VECTOR(3 DOWNTO 0);

O :BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));

END JISHU12;

ARCHITECTURE ABC OF JISHU12 IS

BEGIN

PROCESS(I)

BEGIN

IF RISING_EDGE(CLK) THEN

IF L='1' THEN O<=I;

ELSIF E='1' THEN

IF O="1011" THEN O<="0000";

ELSE O<=O+1;

END IF;

END IF;

END IF;

END PROCESS;

END ABC;

3.六十进制计数器:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY JISHU60 IS

PORT( CLK,E,L:IN STD_LOGIC;

I :IN STD_LOGIC_VECTOR(7 DOWNTO 0);

OL,OH :BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));

END JISHU60;

ARCHITECTURE ABC OF JISHU60 IS

6

BEGIN

PROCESS(I)

BEGIN

IF RISING_EDGE(CLK) THEN

IF L='1' THEN OL<=I(3 DOWNTO 0); OH<=I(7 DOWNTO 4);

ELSIF E='1' THEN

IF OL="1001" THEN OL<="0000";

IF OH="0101" THEN OH<="0000";

ELSE OH<=OH+1;

END IF;

ELSE OL<=OL+1;

END IF;

END IF;

END IF;

END PROCESS;

END ABC;

4.四位二进制可逆计数器:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY KENI16 IS

PORT( CLK,JJ,L,E:IN STD_LOGIC;

I :IN STD_LOGIC_VECTOR(7 DOWNTO 0);

OL,OH :BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));

END KENI16;

ARCHITECTURE ABC OF KENI16 IS

BEGIN

PROCESS(I)

BEGIN

IF RISING_EDGE(CLK) THEN

IF L='1' THEN OH<=I(7 DOWNTO 4); OL<=I(3 DOWNTO 0);

ELSIF E='1' THEN

IF JJ='1' THEN

IF OL="0101" AND OH="0001" THEN OL<="0000";

OH<="0000";

7

ELSIF OL="1001" THEN OL<="0000";

OH<=OH+1;

ELSE OL<=OL+1;

END IF;

ELSIF JJ='0' THEN

IF OL="0000" AND OH="0000" THEN OL<="0101";

OH<="0001";

ELSIF OL="0000" THEN OL<="1001";

OH<=OH-1;

ELSE OL<=OL-1;

END IF;

END IF;

END IF;

END IF;

END PROCESS;

END ABC;

5.4--7译码器:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY YIMA IS

PORT( I:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

O:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));

END YIMA;

ARCHITECTURE ABC OF YIMA IS

BEGIN

WITH I SELECT

O<="1111110" WHEN "0000",

"0110000" WHEN "0001",

"1101101" WHEN "0010",

"1111001" WHEN "0011",

"0110011" WHEN "0100",

"1011011" WHEN "0101",

"1011111" WHEN "0110",

"1110000" WHEN "0111",

"1111111" WHEN "1000",

"1111011" WHEN "1001",

8

"1110111" WHEN "1010",

"0011111" WHEN "1011",

"0000000" WHEN OTHERS;

END ABC;

6.六进制计数器:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY JISHU6 IS

PORT( CLK,E,L :IN STD_LOGIC;

I :IN STD_LOGIC_VECTOR(2 DOWNTO 0);

O :BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0));

END JISHU6;

ARCHITECTURE ABC OF JISHU6 IS

BEGIN

PROCESS(I)

BEGIN

IF RISING_EDGE(CLK) THEN

IF L='1' THEN O<=I;

ELSIF E='1' THEN

IF O="101" THEN O<="000";

ELSE O<=O+1;

END IF;

END IF;

END IF;

END PROCESS;

END ABC;

7.数据选择器:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY XUANZE IS

PORT( A,B,C,D,E,F :IN STD_LOGIC_VECTOR(3 DOWNTO 0);

I :IN STD_LOGIC_VECTOR(2 DOWNTO 0);

O :OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );

END XUANZE;

ARCHITECTURE ABC OF XUANZE IS

BEGIN

PROCESS(I)

BEGIN

CASE I IS

WHEN "000" => O<=A;

WHEN "001" => O<=B;

WHEN "010" => O<=C;

WHEN "011" => O<=D;

WHEN "100" => O<=E;

WHEN "101" => O<=F;

WHEN OTHERS => NULL;

END CASE;

END PROCESS;

END ABC;

五、顶层文件截图

六、在EDA实验开发系统上的功能实现

在计算机和试验箱均断电的情况下连接好下载电缆和芯片的各端口之间的连线,接下来先给试验箱供电然后打开计算机找到MAX+plus2软件将先前已编辑好的的程序下载到芯片上。调整时钟信号的频率直到7段数码管能实现所求的功能。

七、实验总结

1.实验注意事项

①不能再带电情况下拔插下载电缆。

②连接好下载电缆后应先接通实验箱的电源,再接通计算机的电源。

③测试完毕后应先断开计算机的电源再断开试验箱的电源最后拔下下载电缆的两个插头。

2.收获与体会

①掌握了十进制、十二进制、六十进制、十六进制计数器的设计方法。

②掌握多位计数器相连的设计方法。

③掌握了CPLD技术的层次化结构化设计方法。

④通过同一设计小组的几个同学分做不同模块然后将不同模块合起来联试,培养了大家的分工与合作的团队意识,同时加深对层次化设计理念的理解。

八、参考文献

李国洪、胡辉、沈明山等编著《EDA技术与实验》—机械工业出版社

出版。

评语

课程设计成绩:

指导教师:

日期:年月日

计数器的设计实验报告

计数器的设计实验报告 篇一:计数器实验报告 实验4 计数器及其应用 一、实验目的 1、学习用集成触发器构成计数器的方法 2、掌握中规模集成计数器的使用及功能测试方法二、实验原理 计数器是一个用以实现计数功能的时序部件,它不仅可用来计脉冲数,还常用作数字系统的定时、分频和执行数字运算以及其它特定的逻辑功能。 计数器种类很多。按构成计数器中的各触发器是否使用一个时钟脉冲源来分,有同步计数器和异步计数器。根据计数制的不同,分为二进制计数器,十进制计数器和任意进制计数器。根据计数的增减趋势,又分为加法、减法和可逆计数器。还有可预置数和可编程序功能计数器等等。目前,无论是TTL还是

CMOS集成电路,都有品种较齐全的中规模集成计数器。使用者只要借助于器件手册提供的功能表和工作波形图以及引出端的排列,就能正确地运用这些器件。 1、中规模十进制计数器 CC40192是同步十进制可逆计数器,具有双时钟输入,并具有清除和置数等功能,其引脚排列及逻辑符号如图5-9-1所示。 图5- 9-1 CC40192引脚排列及逻辑符号 图中LD—置数端CPU—加计数端CPD —减计数端CO—非同步进位输出端BO—非同步借位输出端 D0、D1、D2、D3 —计数器输入端 Q0、Q1、Q2、Q3 —数据输出端CR—清除端 CC40192的功能如表5-9-1,说明如下:表5-9-1 当清除端CR为高电平“1”时,计数

器直接清零;CR置低电平则执行其它功能。当CR为低电平,置数端LD也为低电平时,数据直接从置数端D0、D1、D2、D3 置入计数器。 当CR为低电平,LD为高电平时,执行计数功能。执行加计数时,减计数端CPD 接高电平,计数脉冲由CPU 输入;在计数脉冲上升沿进行8421 码十进制加法计数。执行减计数时,加计数端CPU接高电平,计数脉冲由减计数端CPD 输入,表5-9-2为8421 码十进制加、减计数器的状态转换表。加法计数表5-9- 减计数 2、计数器的级联使用 一个十进制计数器只能表示0~9十个数,为了扩大计数器范围,常用多个十进制计数器级联使用。 同步计数器往往设有进位(或借位)输出端,故可选用其进位(或借位)输出信号驱动下一级计数器。 图5-9-2是由CC40192利用进位

用6位数码管显示时间

#include #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; sbit key1=P3^4; sbit key2=P3^5; sbit key3=P3^6; sbit key4=P3^7; sbit fm=P2^3; uchar num,num1,num2,num3,temp; void init(); void keyscan(); //void jianpan(); void delay(uint a) { uint x,z; for(x=a;x>0;x--) for(z=10;z>0;z--); } uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, }; unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef}; void display1(uchar numdi) //秒钟显示函数 { uchar fen,miao; fen=numdi/10; miao=numdi%10; dula=1; P0=table[fen]; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(20); dula=1;

P0=table1[miao]; dula=0; P0=0xff; wela=1; P0=0xf7; wela=0; delay(20); } void display(uchar numdis)//分钟显示函数{ uchar shi,ge; shi=numdis/10; ge=numdis%10; dula=1; P0=table[shi]; dula=0; P0=0xff; wela=1; P0=0xef; wela=0; delay(20); dula=1; P0=table[ge]; dula=0; P0=0xff; wela=1; P0=0xdf; wela=0; delay(20); } void display2(uchar numd2)//小时显示函数{ uchar xshi,xfen; xshi=numd2/10; xfen=numd2%10; dula=1; P0=table[xshi]; dula=0; P0=0xff; wela=1; P0=0xfe;

余三码计数器

--底层设计实体计数器163 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; entity v74hc163 is port( clk,clr_l,ld_l,ctp,ctt : in std_logic; d: in unsigned (3 downto 0); --置数输入 q : out unsigned (3 downto 0); --计数输出 rco : buffer std_logic); --进位输出end v74hc163 ; architecture behave of v74hc163 is signal iq : unsigned (3 downto 0); begin process(clk, ctt, iq) begin if clk'event and clk='1' then if clr_l = '0' then iq <= (others =>'0'); --同步清0 elsif ld_l ='0' then iq<=d; --同步置数 elsif rco ='1' then iq <= d; --计数满重新计数 elsif (ctt and ctp) ='1' then iq<= iq+1 ; --计数end if; end if; if (iq=15) and (ctt='1') then rco<='1'; --计到15进位else rco<='0'; end if; q<=iq; end process; end behave ; --底层设计实体与非门 library ieee; use ieee.std_logic_1164.all; entity nand_gate is port ( a,b:in std_logic; nand_result:out std_logic); end nand_gate; architecture behave of nand_gate is begin nand_result<=not(a and b); end behave; --底层设计实体非门 library ieee; use ieee.std_logic_1164.all;

6位7段LED数码管显示

目录 1. 设计目的与要求..................................................... - 1 - 1.1 设计目的...................................................... - 1 - 1.2 设计环境...................................................... - 1 - 1.3 设计要求...................................................... - 1 - 2. 设计的方案与基本原理............................................... - 2 - 2.1 6 位 8 段数码管工作原理....................................... - 2 - 2.2 实验箱上 SPCE061A控制 6 位 8 段数码管的显示................... - 3 - 2.3 动态显示原理.................................................. - 4 - 2.4 unSP IDE2.0.0 简介............................................ - 6 - 2.5 系统硬件连接.................................................. - 7 - 3. 程序设计........................................................... - 8 - 3.1主程序......................................................... - 8 - 3.2 中断服务程序.................................................. - 9 - 4.调试............................................................... - 12 - 4.1 实验步骤..................................................... - 12 - 4.2 调试结果..................................................... - 12 - 5.总结............................................................... - 14 - 6.参考资料........................................................... - 15 - 附录设计程序汇总.................................................... - 16 -

四位二进制加法计数器课程设计

成绩评定表 学生姓名郝晓鹏班级学号1103060129 专业通信工程课程设计题目四位二进制加法 计数器 评语 组长签字: 成绩 日期20 年月日

课程设计任务书 学院信息科学与工程学院专业通信工程 学生姓名郝晓鹏班级学号1103060129 课程设计题目四位二进制加法计数(缺0010 0011 1101 1110) 实践教学要求与任务: 1、了解数字系统设计方法。 2、熟悉VHDL语言及其仿真环境、下载方法。 3、熟悉Multisim仿真环境。 4、设计实现四位二进制加计数(缺0010 0011 1101 1110) 工作计划与进度安排: 第一周:熟悉Multisim及QuartusII环境,练习数字系统设计方法。包括采用触发器设计和超高速硬件描述语言设计,体会自上而下、自下而上设计 方法的优缺点 第二周:1.在QuartusII环境中仿真实现四位二进制加计数(缺0100 0101 1001 1010 )。 2.在Multisim环境中仿真实现四位二进制加计数,缺(0100 0101 1001 1010),并通过虚拟仪器验证其正确性。 指导教师: 201 年月日专业负责人: 201 年月日 学院教学副院长: 201 年月日

摘要 本文采用在MAXPLUSⅡ环境中用VHDL语言实现四位二进制加法计数(缺0010 0011 1101 1110),在仿真器上显示结果波形,并下载到目标芯片上,在实验箱上观察输出结果。在Multisim环境中仿真实现四位二进制加法计数器(缺0010 0011 1101 1110),并通过虚拟仪器验证其正确性。 关键词:MAXPLUSⅡ环境;VHDL语言;四位二进制加计数;Multisim环境

实验四、 计数器的设计 电子版实验报告

实验四:计数器的设计 实验室:信息楼247 实验台号: 4 日期: 专业班级:机械1205 姓名:陈朝浪学号: 20122947 一、实验目的 1. 通过实验了解二进制加法计数器的工作原理。 2. 掌握任意进制计数器的设计方法。 二、实验内容 (一)用D触发器设计4位异步二进制加法计数器 由D触发器组成计数器。触发器具有0和1两种状态,因此用一个触发器 就可以表示1位二进制数。如果把n个触发器串起来,就可以表示N位二进制 数。(用两个74LS74设计实现) (二)利用74LS161设计实现任意进制的计数器 设计要求:学生以实验台号的个位数作为所设计的任意进制计数器。 先熟悉用1位74LS161设计十进制计数器的方法。 ①利用置位端实现十进制计数器。 ②利用复位端实现十进制计数器。 提示:设计任意计数器可利用芯片74LS161和与非门设计,74LS00为2输 入与非门,74LS30为8输入与非门。 74LS161为4位二进制加法计数器,其引脚图及功能表如下。

三、实验原理图 1.由4个D触发器改成的4位异步二进制加法计数器 2.由74LS161构成的十进制计数器

四、实验结果及数据处理 1.4位异步二进制加法计数器实验数据记录表 2. 画出你所设计的任意进制计数器的线路图,并说明设计思路。

设计思路:四进制为四个输出Q3Q2Q1Q0=0000,0001,0010,0011循环,第一个无效状态为0100 1,置位法设计四进制计数器:当检测到输入为0011时,先输出显示3,然后再将D 置于低电位,计数器输出Q3Q2Q1Q0复位。 2,复位法设计四进制计数器:当检测到第一个无效状态0100时,通过与非门的反馈计数器的Cr首先置于低电平使计数器复位为0000。 五、思考题 1. 由D触发器和JK触发器组成的计数器的区别? 答:D触发器是cp上升沿触发,JK触发器是下降沿触发。 2. 74LS161是同步还是异步,加法还是减法计数器? 答:同步。加法计数器。 3. 设计十进制计数器时将如何去掉后6个计数状态的? 答:加一个与非门形成负反馈。当计数到第一个无效状态Q3Q2Q1Q0==1010时,Q3和Q1全为1,Q1,Q3接与非门,输出作为复位信号,使所有触发器复位,从而去掉了后6个状态。

8421码到余三循环码的转换电路仿真课设报告

东北大学秦皇岛分校计算机与通信工程院 电子线路课程设计 具有数显的数码转换电路(8421码—余3循环码)

课程设计任务书 专业:通信工程学号:4101015 学生姓名:吴玉新 设计题目:具有数显的码制转换电路8421码—余3循环码一、设计实验条件 高频实验室 二、设计任务及要求 1. 要求输入为8421码。输出为余三循环码 2. 输出要具有数显功能 三、设计报告的内容 1.前言 数字电路课程设计是继“数字电路”课后开出的实践环节课程其目的是训练学生综合运用学过的数字电路的基本知识独立设计比较复杂的数字电路能力。设计建立在硬件和软件两个平台的基础上。硬件平台是可编程逻辑器件所选器件可保存在一片芯片上设计出题目要求的数字电路。软件平台是multisim通过课程设计学生要掌握使用EDA电子设计自动化工具设计数字电路的方法包括设计输入便宜软件仿真下载及硬件仿真等全过程。数字电路课程设计在于更好的让学生掌握这门课程并且了解其实用性知道该门课程和我们的生活息息相关并且培养学生的动手能力让学生对该门课程产生浓厚的兴趣。 2.设计内容及其分析 (1)方案一 1.设计思路 设计8421转余三循环码主要是考虑怎样找到二者之间的联系。列出真值表后,根据值为1的那些项列出表达式,用最小项之和表示。然后根据卡诺图进行

化简,得出最简表达式。最后根据表达式,在Multisim上画图仿真,用灯的灭(表示0)和亮(表示1)来表示码制的转换。即可得到8421码对余三循环码的转换。 真值表: 表1 8421转余三循环码真值表 根据真值表得出表达式: X4=A——C X3=B——C——+ A——BCD+A——B——D—— X2=A B——C——D——+A——B+A——C+A——D X1=A B——C——+A——BD+A——BC 根据表达式画出逻辑电路图:

用数码管显示实时日历时钟的应用设计

(用数码管显示实时日历时钟的应用设计)

摘要 本课题通过MCS-51单片机来设计电子时钟,采用汇编语言进行编程,可以实现以下一些功能:小时,分,秒和年,月,日的显示。本次设计的电子时钟系统由时钟电路,LED显示电路三部分组成。51单片机通过软件编程,在LED数码管上实现小时,分,秒和年,月,日的显示;利用时钟芯片DS1302来实现计时。本文详细介绍了DS1302 芯片的基本工作原理及其软件设计过程,运用PROTEUS软件进行电路连接和仿真,同时还介绍了74LS164,通过它来实现I|O口的扩展。 关键词:时钟芯片,仿真软件,74LS164 目录 前言 0.1设计思路 (8) 0.2研究意义 (8)

一、时钟芯片 1.1 了解时钟芯片……………………………………………….8-9 1.2 掌握时钟芯片的工作原理………………………………….10-11二、74LS164 2.1 了解74LS164........................................................11-12 2.2 掌握的74LS164工作原理. (12) 三、数码管 3.1 熟悉常用的LED数码管...........................................12-13 3.2 了解动态显示与静态显示. (13) 四、程序设计 4.0 程序流程图 (14) 4.1 DS1392的驱动.......................................................15-16 4.2 PROTUES实现电路连接. (17) 4.3 数码管的显示:小时;分;秒 (18) 4.4 数码管显示:年;月;日 (19) 五、总结…………………………………………………………………..20-21 六、附页程序………………………………………………………………22-31前言

数电课设___四位二进制加法计数器的设计

成绩评定表

课程设计任务书

摘要 Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。 Multisim是Interactive Image Technologies (Electronics Workbench)公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。 本次数电课程设计使用Quartus II仿真环境以及VHDL下载和Multisim仿真环境来编译实现四位二进制同步加法计数器。在Multisim中选用一个集成计数器74LS163来实现四位二进制加法计数器。运用卡诺图求解时序方程。逻辑电路图中,四个小红灯即为显示器,从右到左显示时序图中的十四种状态,其中,灯亮表示“1”,灭表示“0”,从而达到计数目的。 关键字:Quartus II Multisim 集成计数器74LS163 时序图卡诺图 目录

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

实验五计数器的设计实验报告

实验五计数器的设计——实验报告 邱兆丰 15331260 一、实验目的和要求 1.熟悉JK触发器的逻辑功能。 2.掌握用JK触发器设计同步计数器。 二、实验仪器及器件 1、实验箱、万用表、示波器、 2、74LS73,74LS00,74LS08,74LS20 三、实验原理 1.计数器的工作原理 递增计数器----每来一个CP,触发器的组成状态按二进制代码规律增加。递减计数器-----按二进制代码规律减少。 双向计数器-----可增可减,由控制端来决定。 2.集成J-K触发器74LS73 ⑴符号: 图1 J-K触发器符号

⑵功能: 表1 J-K触发器功能表 ⑶状态转换图: 图2 J-K触发器状态转换图

⑷特性方程: ⑸注意事项: ①在J-K触发器中,凡是要求接“1”的,一定要接高电平(例如5V),否则会出现错误的翻转。 ①触发器的两个输出负载不能过分悬殊,否则会出现误翻。 ② J-K触发器的清零输入端在工作时一定要接高电平或连接到实验箱的清零端子。3.时序电路的设计步骤 内容见实验预习。 四、实验内容 1.用JK触发器设计一个16进制异步计数器,用逻辑分析仪观察CP和各输出波形。2.用JK触发器设计一个16进制同步计数器,用逻辑分析仪观察CP和各输出波形。3.设计一个仿74LS194 4.用J-K触发器和门电路设计一个特殊的12进制计数器,其十进制的状态转换图为:5.考虑增加一个控制变量D,当D=0时,计数器按自定义内容运行,当D=1时,反方向运行 五、实验设计及数据与处理 实验一

16进制异步计数器 设计原理:除最低级外,每一级触发器用上一级触发器的输出作时钟输入,JK都接HIGH,使得低一级的触发器从1变0时高一级触发器恰好接收下降沿信号实现输出翻转。实验二 16进制同步计数器 设计原理:除最低级外,每一级的JK输入都为所有低级的输出的“与”运算结果实验三 仿74LS194 设计原理:前两个开关作选择端输入,下面四个开关模仿预置数输入,再下面两个开关模仿左移、右移的输入,最后一个开关模仿清零输入。四个触发器用同一时钟输入作CLK输入。用2个非门与三个与门做成了一个简单译码器。对于每一个触发器,JK输入总为一对相反值,即总是让输入值作为输出值输入。对于每一个输入,当模式“重置”输出为1时,其与预置值结果即触发器输入;当模式“右移”、“左移”输出为1时,其值为上一位或下一位对应值;当各模式输出均为0时各触发器输入为0,使输出为0。 实验四 设计原理: 在12进制同步计数器中,输出的状态只由前一周期的状态决定,而与外来输入无关,因此目标电路为Moore型。而数字电路只有0和1两种状态,因此目标电路要表达12种状态需

组成原理课程设计-余三码十进制加法器

长春大学 课程设计说明书 题目名称余三码十进制加法器设计 院(系)计算机科学与技术 专业(班级)电算07402班 学生姓名武英波 指导教师谷赫 起止日期2010.6.15---2010.6.19

┊ ┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊ 目录 1.设计题目 (2) 2.设计目的 (2) 3.设计任务 (2) 4.设计分析 (2) 5.设计过程 (2) 5.1 设计原理 (2) 5.2 器件选择 (3) 5.3 电路链接及结果显示 (4) 6.设计心的 (8) 7. 参考文献 (8)

┊ ┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊1. 设计题目 余三码十进制加法器单元电路的设计与实现 2.设计目的 1.对已学过的组成原理知识知识进行综合运用; 2.能按要求设计出具有一定功能的逻辑电路。 3.设计任务 1、已知余三编码由四位二进制组成,2十进制一位数的余三码进行相加要对最后的运算结果进行调整,若结果无进位,则从和数中减去3,若结果有进位,则在和数中加上3,设计具有此功能的加法逻辑电路。 2、利用MAX PLUS II完成电路图的绘制,选择合适的逻辑电路和芯片。 3、对所设计的电路分析其性能优劣,并与所熟悉的其他电路做比较,总结各自优缺点。 4、利用软件进行仿真。 4. 设计分析 余三码的十进制加法器,分析为输入的两个余三码数相加,结果为余三码数。实现余三码的十进制加法器可以使用多中方法,如超前进位加法器、串行进位加法器。可以使用集成器件,如74ls283等,也可以使用基本的与、或、非门等完成设计。 因此,余三码的十进制加法器的设计,在这里使用两中方法,一种是集成器件74ls283,原理是超前进位的方法,另一种方法是使用与、非、或门,利用串行进位加法器实现。在实现过程中一定要注意编码的变换。 5. 设计过程 5.1设计原理 全加器原理:由全加器的真值表可得S i和C i的逻辑表达式: 定义两个中间变量G i和P i :

ds1302时钟数码管显示时分秒

单片机原理课程设计 课题名称:基于DS1302的数码管显示数字钟 专业班级:电子信息工程 学生学号:0414070126 学生姓名:张向阳 指导教师:张云马崇霄 设计时间:2010年6月21日--2010年6月25日

目录 摘要................................................................................... 1 设计任务和要求..................................................................... 2 方案论证........................................................................... 3 系统硬件设计....................................................................... 3.1 系统总原理图 ............................................................... 3.2 元器件清单.................................................................................... .................................................. 3.3 PCB板图.................................................................................... ................................................... 3.4 Proteus仿真图.............................................................. 3.5 分电路图及原理说明......................................................... 3.5.1 主控部分(单片机MCS-51).................................................................... .......... 3.5.2 计时部分(实时时钟芯片DS1302).................................................................. 3.5.3 显示部分(共阳极数码管)....................................................................... ......... 3.5.4 调时部分(按键)....................................................................... ......................... 4 系统软件设计....................................................................... 4.1 程序流程图.................................................................. 4.2 程序源代码................................................................... 5 心得体会...........................................................................

实验五 计数器的设计

实验五计数器的设计 姓名:zht 学号: 班级:15自动化 日期:2016/11/11

目录 一、实验内容 (3) 二、设计过程、逻辑图及仿真 (4) ①设计过程 (4) ②逻辑图及仿真 (5) 三、实验数据及总结 (8) ①实验数据 (8) ②总结 (10)

一、实验内容 1.用JK触发器设计一个16进制异步计数器,用逻辑分析仪观察CP 和各输出的波形。 2.用JK触发器设计一个16进制同步计数器,用逻辑分析仪观察CP 和各输出的波形。 3.用JK触发器和门电路设计一个特殊的12进制同步计数器,其十进制的状态转换为从01依次计数到12,再回到01开始新一轮计数。实验仪器: 1.实验箱,示波器。 2.器件:74LS73,74LS00,74LS08,74LS20

二、设计过程、逻辑图及仿真 ①设计过程: 1.异步计数器是将CLK应用于第一个JK触发器的时钟输入上,然后将输出Q接入后一个JK触发器的时钟输入,后面的连接方式都是由前一个JK触发器的输出Q作为后一个JK触发器的时钟输入。异步计数器的原理是由于实验箱上的JK触发器是下降沿触发,第一个JK触发器的输出Q1每一个时钟周期变化一次,即经过两个时钟周期后Q1经过了一个周期。同理,由于第一个JK触发器的输出Q1是第二个的时钟输入,所以经过两个Q1周期后第二个JK触发器的输出Q2经过了一个周期,即每四个时钟周期的时间Q2经过一个周期。以此类推,则第三个JK触发器的输出Q3的周期是时钟周期的八倍,第四个JK 触发器的输出Q4是时钟周期的十六倍,因而Q4、Q3、Q2、Q1组成了一个16进制计数器。该计数器的缺点是由于传输延迟会在其中积累,会限制计数器按时钟运行的速度。 2.同步计数器将CLK应用于每个JK触发器的时钟输入上。第一个JK 触发器的输出Q连接到第二个JK触发器的J和K。此后前一个JK触发器的输出和后一个JK触发器的输出经过与门后共同作为再后一个JK触发器的J和K输入。如此一来,第二个JK触发器的J、K输入由第一个JK触发器的输出Q1控制,时钟每变化两个周期Q1会变化一个周期,而只有当Q1为0时第二个触发器在经过时钟下降沿时才会使输出Q2的状态发生改变,即Q2的周期为Q1的两倍,时钟周期的四倍。接着由于Q1和Q2经过与门后作为第三个触发器的J、K输

8位数码管显示时钟

本人依据AT89C51和8位数码管为素材,以最少的见实现最多的功能! 本程序开机流动显示学号可实现时钟,日历,定时闹钟,秒表等功能! C程序: #include unsigned char led[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00}; //用一维数组定义-9、横杠、全灭 unsigned char num[12]={2,0,0,9,3,5,0,7,0,1,2,0} ; unsigned char a[8]; unsigned char second=0,minute=0,hour=0,year=0,mon=1,day=1,day1,hsec,sec_m,min_m,N,temp1; unsigned char minute1=0,hour1=0; unsigned char b[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //扫描 unsigned char k=0; unsigned int temp; // 记录毫秒为秒的变量 unsigned char M,S_flag; //M是模式,更新时间的种模式加上正常模式 S_flag闪烁标志 sbit K0=P3^7; //K0是闹钟起停标志位 sbit K1=P3^0; sbit K2=P3^1; sbit K3=P3^2; sbit BEEP=P3^3; void delay(unsigned n) //0.2毫秒 { int x,y; for(x=0;x

十进制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;

余3码转换成2421 BCD 码

课程设计任务书 学生姓名:许玉林学生专业班级:计算机0902班 指导教师:陈建军学院名称:计算机科学与技术学院 一、题目:余3码转换成2421 BCD 码 原始条件:使用“与”门( 74 LS 08 )、“或”门( 74 LS 32 )、非门( 74 LS 04 ),设计余3码转换成8421 BCD 码。 二、要求完成设计的主要任务如下: 1.能够运用数字逻辑的理论和方法,把时序逻辑电路设计和组合逻辑电路设计相结合,设计一个有实际应用的数字逻辑电路。 2.使用同步时序逻辑电路的设计方法,设计余3码转换成2421 BCD 码。写出设计中的三个过程。画出课程设计图。 3.根据74 LS 08、74 LS 32、74 LS 04集成电路引脚号,在设计好的余3码转换成2421 BCD 码电路图中标上引脚号。 4.在试验设备上,使用74 LS 08、74 LS 32、74 LS 04集成电路连接、调试和测试余3码转换成2421 BCD 码电路。 三、课程设计进度安排:

课程设计正文 一、根据要求列出真值表。在该课程设计中,余3码有0011~1100十种输入,另外0000~0010和1101~1111六种输入是不可能发生的。因此 m~2m和13m~15m是该实验中的无关小项。根据课程设计要求列出的真值表如表1-1所示。 表1-1真值表 二、写出函数逻辑表达式 1(8,9,10,11,12)(0,1,2,13,14,15) Y m d =+ ∑∑ 2(7,9,10,11,12)(0,1,2,13,14,15) Y m d =+ ∑∑ 3(5,6,8,11,12)(0,1,2,13,14,15) Y m d =+ ∑∑

数字电路实验 计数器的设计

数字电路与逻辑设计实验报告实验七计数器的设计 姓名:黄文轩 学号:17310031 班级:光电一班

一、实验目的 熟悉J-K触发器的逻辑功能,掌握J-K触发器构成异步计数器和同步计数器。 二、实验器件 1.数字电路实验箱、数字万用表、示波器。 2.虚拟器件: 74LS73,74LS00, 74LS08, 74LS20 三、实验预习 1. 复习时序逻辑电路设计方法 ①根据设计要求获得真值表 ②画出卡诺图或使用其他方式确定状态转换的规律 ③求出各触发器的驱动方程 ④根据已有方程画出电路图。 2. 按实验内容设计逻辑电路画出逻辑图 Ⅰ、16进制异步计数器的设计 异步计数器的设计思路是将上一级触发器的Q输出作为下一级触发器的时钟信号,置所有触发器的J-K为1,这样每次到达时钟下降沿都发生一次计数,每次前一级 触发器从1变化到0都使得后一级触发器反转,即引发进位操作。 画出由J-K触发器组成的异步计数器电路如下图所示:

使用Multisim仿真验证电路正确性,仿真图中波形从上到下依次是从低位到高位 触发器的输出,以及时钟信号。: 可以看出电路正常执行16进制计数器的功能。 Ⅱ、16进制同步计数器的设计 较异步计数器而言,同步计数器要求电路的每一位信号的变化都发生在相同的时间点。

因此同步计数器各触发器的时钟脉冲必须是同一个时钟信号,这样进位信息就要放置在J-K 输入端,我们可以把J-K端口接在一起,当时钟下降沿到来时,如果满足进位条件(前几位触发器输出都为1)则使JK为1,发生反转实现进位。 画出由J-K触发器和门电路组成的同步计数器电路如下图所示 使用Multisim仿真验证电路正确性,仿真图中波形从上到下依次是从低位到高位触发器的输出,计数器进位输出,以及时钟信号。:

余三码

余三码 软工(3+2)1001班组员:谢凯徐伟杰王直心 实验目的 设计一位十进制数的余三码编码的加法器单元电路。 实验基本要求 在做本实验之前,需要具备几点要求: 1)知道二进制是如何加减运算的; 2)知道二进制和十进制之间的关系及相互之间的转化; 3)知道逻辑门电路图符号代表什么含义及其功能特性是如何; 以上3点是做本实验的基础,如有一点不满足,请先自学相关内容。 实验过程 首先,我们要了解什么是余三码? 余三码(余3码)【计算机】是由8421码加上0011形成的一种无权码,由于它的每个字符编码比相应的8421码多3,故称为余三码。BCD码的一种。 那什么是8421码呢? 8421码,即BCD代码,是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。 以上都是一些比较专业的定义,下面来讲一下我的理解。首先,不管是余三码还是8421码都是由四位长度的二进制来表示的。四位二进制能表示是数值范围是0000(0)-1111(15),8421码呢,为了方便人的十进制思维,只选取了0000(0)-1001(9)分别和十进制下的0-9一一对应,1010(10)-1111(15)这一部分不要了。由此可以看出,8421码选择的二进制数转化为十进制得到的数值也是从0到9的,和它要对应的十进数数值完全吻合。而余三码呢,它选取0011(3)-1100(12)来和十进制下的0-9一一对应,由于它选取的二进制数转化为十进制得到的数值是从3到12的,比它要对应的十进数数值都大3,故称为余三码。 下图更为直观的表现了余三码,8421码与十进制数的对应关系: 表1-1

基于51单片机100天倒计时数码管显示(共阴) (附加时分秒显示)

基于51单片机100天倒计时数码管显示 (共阴) (附加时分秒显示) #include unsigned char s[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char e3,f3,g3,h3,count,flag0,flag2,flag3,flag4,j,a1,a2,a3,a4,b1,b2; void delay(unsigned char i); signed int time1=100,time0=59,time3=59,time4=23; void sm(); void time2(); void hms1 (); void timej (); void timez (); sbit ks=P1^4; sbit hms=P1^5; sbit add=P1^6; sbit bat=P1^7; void sm() //100天数码管显示 { e3=time1/100; f3=time1%100/10; g3=time1%100%10; P2=0x00; P0=s[e3]; delay(2); P2=0x01; P0=s[f3]; delay(2); P2=0x02; P0=s[g3]; delay(2); a1=time4%60/10; //时显示 a2=time4%60%10; a3=time3%60/10; //分显示 a4=time3%60%10; P2=0x03; P0=s[a1]; delay(2); P2=0x04;

delay(2); P2=0x05; P0=s[a3]; delay(2); P2=0x06; P0=s[a4]; delay(2); b1=time0%60/10; 秒显示b2=time0%60%10; P2=0x07; P0=s[b1]; delay(2); P2=0x08; P0=s[b2]; delay(2); } void main() { TMOD=0x01; TH0=0x3c; TL0=0xb0; EA=1; ET0=1; while(1) { sm(); time2(); hms1(); timej(); timez(); } } void time2() //计时开始{ if(ks==0) {delay(10);} if(ks==0) {flag0=1;} if(flag0==1&&ks==1)

相关主题
文本预览
相关文档 最新文档