当前位置:首页 » 课程大全 » 三位计数器课程设计

三位计数器课程设计

发布时间: 2021-02-16 08:49:13

① 请用D触发器构成一个三位二进制减法计数器,写出实验原理。(可以画出电路图)

按照逻辑电路设计可以弄出来,三位二进制可以设为001、010、011,或其他情况,这三个D触发器的回输答出可以设为Q1、Q2、Q3,设一个A的数据输入端,

一个输出量Y,画出状态图、真值表、再根据卡罗图求出Q1、Q2、Q3的输出表达式,再根据D的特征方程Q(n+1)=D化简,一步步来就可以得出原理表达式,有了表达式就可以画出原理图。

3个D触发器可以构成3位二进制计数器,计数范围0~7,因此其模为8。

(1)三位计数器课程设计扩展阅读:

D触发器(data flip-flop或delay flip-flop)由4个与非门组成,其中G1和G2构成基本RS触发器。电平触发的主从触发器工作时,必须在正跳沿前加入输入信号。如果在CP高电平期间输入端出现干扰信号,那么就有可能使触发器的状态出错。

而边沿触发器允许在CP触发沿来到前一瞬间加入输入信号。这样,输入端受干扰的时间大大缩短,受干扰的可能性就降低了。边沿D触发器也称为维持-阻塞边沿D触发器。

② 课程设计题目:电子计数器

单片机C51计数器要求:编写一个计数器程序,将T0作为计数器来使用,对外部信号计数,将所计数字显示在数码管上。
该部分的硬件电路如图所示,U1的P0口和P2口的部份引脚构成了6位LED数码管驱动电路,数码管采用共阳型,使用PNP型三极管作为片选端的驱动,所有三极管的发射极连在一起,接到正电源端,它们的基极则分别连到P2.0…P2.5,当P2.0…P2.5中某引脚输是低电平时,三极管导通,给相应的数码管供电,该位数码管点亮哪些笔段,则取决于笔段引脚是高或低电平。图中看出,所有6位数码管的笔段连在一起,通过限流电阻后接到P0口,因此,哪些笔段亮就取决于P0口的8根线的状态。
编写程序时,首先根据硬件连线写出LED数码管的字形码、位驱动码,然后编写程序如下:
#include "reg51.h"#define uchar unsigned char#define uint unsigned int uchar code BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};//位驱动码uchar code DispTab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};//字形码uchar DispBuf[6]; //显示缓冲区 void Timer1() interrupt 3{ uchar tmp;uchar Count; //计数器,显示程序通过它得知现正显示哪个数码管TH1=(65536-3000)/256;TL1=(65536-3000)%256; //重置初值tmp=BitTab[Count]; //取位值P2=P2|0xfc; //P2与11111100B相或P2=P2&tmp; //P2与取出的位值相与tmp=DispBuf[Count];//取出待显示的数 tmp=DispTab[tmp]; //取字形码P0=tmp;Count++;if(Count==6)Count=0; }void main(){ uint tmp;P1=0xff;P0=0xff;TMOD=0x15; //定时器0工作于计数方式1,定时器1工作于定时方式1TH1=(65536-3000)/256;TL1=(65536-3000)%256; //定时时间为3000个周期TR0=1; //计数器0开始运行TR1=1;EA=1;ET1=1;for(;;){ tmp=TL0|(TH0<<8);//取T0中的数值DispBuf[5]=tmp%10;tmp/=10;DispBuf[4]=tmp%10; tmp/=10;DispBuf[3]=tmp%10;tmp/=10;DispBuf[2]=tmp%10;DispBuf[1]=tmp/10;DispBuf[0]=0;}} 这个程序中用到了一个新的知识点,即数组,首先作一个介绍。 数组是C51的一种构造数据类型,数组必须由具有相同数据类型的元素构成,这些数据的类型就是数组的基本类型,如:数组中的所有元素都是整型,则该数组称为整型数组,如所有元素都是字符型,则该数组称为字符型数组。 数组必须要先定义,后使用,这里仅介绍一维数组的定义,其方式为: 类型说明符数组名[整型表达式] 定义好数组后,可以通过:数组名[整型表达式]来使用数组元素。 在定义数组时,可以对数组进行初始化,即给其赋予初值,这可用以下的一些方法实现:
1.在定义数组时对数组的全部元素赋予初值:例:int a[5]={1,2,3,4,5};
2.只对数组的部分元素初始化;例:int a[5]={1,2}; 上面定义的a数组共有5个元素,但只对前两个赋初值,因此a[0]和a[1]的值是1、2,而后面3个元素的值全是0。
3.在定义数组时对数组元素的全部元素不赋初值,则数组元素值均被初始化为0
4.可以在定义时不指明数组元素的个数,而根据赋值部分由编译器自动确定例:uchar BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};则相当于定义了一个BitTab[6]这样一个数组。
5.可以为数组指定存储空间,这个例子中,未指定空间时,将数组定义在内部RAM中,可以用code关键字将数组元素定义在ROM空间中。uchar code BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB}; 用这两种定义分别编译,可以看出使用了code关键字后系统占用的RAM数减少了,这种方式用于编程中不需要改变内容的场合,如显示数码管的字形码等是很合适的。
6.C语言并不对越界使用数组进行检测,例如上例中数组的长度是6,其元素应该是从BitTab[0]~BitTab[5],但是如果你在程序中写上BitTab[6],编译器并不会认为这有语法错误,也不会给出警告(其他语言如BASCI等则有严格的规定,这种情况将视为语法错误),因此,编程者必须自己小心确认这是否是你需要的结果。
程序分析:程序中将定时器T1用作数码管显示,通过interrupt 3关键字定义函数Timer1()为定时器1中断服务程序,在这个中断服务程序中,使用 TH1=(65536-3000)/256;TL1=(65536-3000)%256;
来重置定时器初值,这其中3000即为定时周期,这样的写法可以直观地看到定时周期数,是常用的一种写法。其余程序段分别完成取位码以选择数码管、从显示缓冲区获得待显示数值、根据该数值取段码以点亮相应笔段等任务。其中使用了一个计数器,该计数器的值从0~5对应第1到第6位的数码管。
主程序的第一部分是做一些初始化的操作,设置定时器工作模式、开启定时器T1、开启计数器T0、开启T1中断及总中断,随后进入主循环,主循环首先用unsigned int型变量tmp取出T0中的数值,这里使用了“tmp=TL0|(TH0<<8);”这样的形式,这相当于tmp=TH0*256+TL0,但比之于后一种形式,该方式可以得到更高的效,其后就是将tmp值不断地除10取整,这样将int型数据的各位分离并送入相应的显示缓冲区

③ 设计一个3位的十进制加法计数器。要求能够从0计数到999。从999归零时产生一个高电平的报警信号。

40110 为十进制可逆计数器/锁存器/译码器/驱动器,具有加减计数,计数器状回
态锁存,七段显示译码输答出等功能。
40110 有2 个计数时钟输入端CPU 和CPD 分别用作加计数时钟输入和减计数时
钟输入。由于电路内部有一个时钟信号预处理逻辑,因此当一个时钟输入端计数工
作时,另一个时钟输入端可以是任意状态。
40110 的进位输出CO 和借位输出BO 一般为高电平,当计数器从0~9 时,
BO 输出负脉冲;从9~0 时CO 输出负脉冲。在多片级联时,只需要将CO 和BO
分别接至下级40110 的CPU 和CPD 端,就可组成多位计数器。
引出端符号:
BO 借位输出端
CO 进位输出端
CPD 减计数器时钟输入端
CPU 加计数器时钟输入端
CR 清除端
/CT 计数允许端
/LE 锁存器预置端
VDD 正电源
Vss 地
Ya~6g 锁存译码输出端

④ 求:数电实验 三位二进制同步加法计数器设计方案

一、 二进制计数器1. 异步递增二进制计数器递增计数器就是每输入一个脉冲就进行一次加1运算,而二进制计数是输入脉冲个数与自然二进制数有对应关系。异步计数器是在做加1计数时是采取从低位到高位逐位进位的方式工作的。因此其中的各个触发器不是同步翻转的。按照二进制加法计数规则,每一位如果已经是1,则再计入1时应变为0,同时向高位发出进位信号,使高位翻转。若使用下降沿动作的触发器(此时该触发器应接成计数状态,例如JK触发器使J=K=1)组成计数器,只要将低位触发器的Q端接到高位触发器的时钟输入端即可。当低位由 时,Q端的下降沿正好可以作为高位的时钟信号CP。那么一个四位异步递增二进制计数器就如下图:JK触发器异步4位二进制加法计数器分析:(1)J、K接1,即四个触发器均处在计数状态(2)清零端给一个负脉冲,进行总清,防止过去状态干扰输出(3)画波形图JK触发器异步4位二进制加法计数器时序图从以上分析可以看出,各触发器的变化是依次逐个进行的,而每个触发器的变化都需要一定的延迟时间,尤其计数器位数教多时,累计延迟时间就教长,所以异步计数器比同步计数器的速度低。要可以用一个Z表示进位输出,也就是记满1111后次态为0000此时不同于总清的0000。从波形上可以看出,每经一级触发器输出的脉冲的周期就增加一倍,即频率降低一倍,因此一位二进制计数器就是一个二分频器。异步4位二进制加法计数器状态转移表当触发器的个数为N时,最后一个触发器输出的频率将降为输入脉冲频率的1/2N,它能累计的最大脉冲个数为2N-1。例如我们前面画的图N=4,它就能累计15个脉冲而Q3输出1/16分频。如果使用上升沿触发器构成异步二进制递增计数器,其逻辑图:D触发器异步4位二进制加法计数器D触发器异步4位二进制加法计数器波形图综上所述,对一个二进制递增计数器归纳如下:u 计数器由若干个工作在计数状态时的触发器构成。如用负跳变触发器则进位信号从 端引出;用正跳变触发器构成则进位信号则从 端引出u N个触发器具有 个状态,称为以 为模的计数器(或模 计数器),其中计数容量为 -1u 由于异步计数器进位信号象波浪一样推进,因此又称为纹波计数器2. 异步二进制递减计数器按照二进制减法计数规则,递减计数器规律:若低位触发器已经为0,则再输入一个减计数脉冲后应翻转成1,同时向高位发出借位信号,使高位翻转。CP数如果用下降沿触发的JK触发器构成异步二进制减法计数器,则:下降沿动作的异步二进制减法计数器将异步二进制减法计数器与异步加法计数器比较可以看出,它们都是将低位触发器的一个输出端接到高位触发器的时钟输入端而组成的。在采用下降沿触发的计数器时,加计数以 端为输出端,而减法计数以 端为输出端。可以推导,若采用上升沿计数器则情况相反。3. 同步二进制递增计数器异步计数器工作速度较低,常常又被称为串行计数器。为了提高计数述速度,可采用同步计数器,其特点是计数脉冲同时接于各位触发器的时钟脉冲输入端,当计数脉冲到来时,应该翻转的触发器同时翻转,没有各级延迟时间的积累问题。同步计数器又称并行计数器。假设要组成四位二进制(M=16)的同步递增计数器,首先根据计数规律得到状态表:CP序号Q3Q2Q1Q0等效十进制数分析状态表,可以得到各触发器的翻转条件u 最低位触发器FF0每输入一个脉冲翻转一次u 其它各触发器都是在所有低位触发器的输出端全为1时,在下一个CP有效沿到来时状态改变一次。由于同步计数器中各触发器的CP端输入同一时钟脉冲,因此触发器的翻转状态就由它们的输入信号状态决定。例如JK触发器状态就由J、K端的状态决定。组成同步计数器的关键就是根据翻转条件,确定各触发器输入端的逻辑表达式。如果用下降沿触发的JK触发器组成上述计数器,根据JK触发器的逻辑功能和上述两个条件,可列出四位同步二进制递增计数器各触发器之间的连接逻辑关系: 触发器翻转条件J、K端的逻辑关系驱动(激励)方程FF0每输入一个脉冲翻转一次J0=J0=1FF1Q0=1J1=K1=Q0FF2Q0=Q1=1J2=K2=Q0Q1FF3Q0=Q1=Q2=1J3=K3=Q0Q1Q2根据这些方程可以画出同步二进制递增计数器的逻辑电路图:同步4位二进制加法计数器对于同步二进制递增计数器也可以用状态图描述或工作波形(时序图)描述。4位二进制加法计数器状态图4位二进制加法计数器时序图4. 二进制递减计数器对于同步二进制递减计数器,首先要列写状态表,下面以4位二进制递减计数器为例CP序号Q3Q2Q1Q0输出分析状态可以总结:u 低位触发器FF0每输入一个脉冲翻转一次u 其它各触发器都是在所有低位触发器的输出为0时变化仿效递增计数器,可得四位同步二进制递减计数器级间连接的逻辑关系: 触发器翻转条件J、K端的逻辑关系FF0每输入一个脉冲翻转一次J0=J0=1FF1Q0=0J1=K1= FF2Q0=Q1=0J2=K2= FF3Q0=Q1=Q2=0J3=K3= 根据逻辑表达式可以画出逻辑图: 同步4位二进制减法计数器当然也可以用状态图和时序图描述该电路。从上面分析可以发现,对于同步二进制计数器,递增和递减的区别在于J、K端来自低位触发器的输出为1还是0,那么通过一个控制端就可以实现可逆计数。二、 8421BCD码十进制计数器二进制计数器,虽然它的袋内陆结构简单,运算方便,但是当二进制数的位数较多时,要很快地读出来就比较困难,因此有讨论十进制计数器的必要。所谓十进制就是“逢十进一”。前面讨论四位二进制计数器的计数状态是从0000~1111共16个状态。要表示十进制的十个状态,就要去掉其中6个状态,至于去掉哪些可以有不同的安排,如果考虑BCD编码,即去掉1010~1111这6个状态。下面给出用JK触发器组成的一位异步十进制递增计数器逻辑图异步8421BCD十进制加法计数器分析计数原理:代入JK触发器的特性方程 可以写出画出时序图:异步8421BCD十进制加法计数器时序图按照同样的道理,可以分析8421BCD码同步十进制递减计数器。

⑤ 产品成品计数器课程设计

你不会也是铜陵学院的吧?

⑥ 用D触发器设计一个三位的计数器,有效计算状态为110-101-011-110,如果有挂起,则消除之

第一步:确定触发器个数,这里题目要求是3位,那么就至少有3种独立的标志,因此至少专需要3个触发器属。

第二步:画出状态转移表:

太晚了,就做这么多了吧,有问题有时间可以继续讨论。

⑦ 如何用非门和与非门设计一个3位计数器 电路图

你做的这东西是三位几进制的计数器呢?是否可逆计数?是否要求锁存?都木说呵。

用门搭建十进制计数器比较麻烦,三位十进计数器如4553者,已经属于中规模集成电路了,不建议自己搭建。

用门电路搭建二进制计数器比较容易,就你说的那样,级联D触发器,然后让它们进行与运算即可。另外,无论是4000系列还是74/54系列,都有专用的“除频器”可供选择。印象中应用较多的是2的十四次方,2的十五次方,2的十七次方这三款芯片,具体型号你自己查查吧。

用门电路搭建三位任意进制计数器也比较繁琐,推荐级联4017来解决这个问题。

⑧ 用74LS00做三位计数器

http://210.43.0.21/jxwz/shiyanshi/shynr/shu/dgdz.pdf

⑨ 用jk触发器设计一个三进制计数器,详细点,谢谢

用jk触发器设计一个三进制计数器,计数是00,01,10,这三个数,所以,只需两个回JK触发器就行,不需答要3,用了3个,也有一个触发器的状态始终0,也没有用。

首先,把2个JK触发器接成同步加法计数器(是4进制的),再改成3进制就行了。当计数为3时,输出状态为11,就利用11状态产生一个复位信号,使两个触发器复位回0,就不会出现计数的3了,最大数是2,就是要求的3进制计数器了。

逻辑图如下(也是仿真图),JK触发器是74LS112。

⑩ VHDL 设计一个3位的十进制加法计数器。要求能够从0计数到999。

--VHDL程序如下:

LIBRARYieee;

UsEieee.std_logic_1164.all;

ENTITYcnt1000Is

PORT

(

:IN STD_LOGIC;

clr :IN STD_LOGIC;

en :IN STD_LOGIC;

count :OUT INTEGERRANGE0TO999;

co :OUT STD_LOGIC);

ENDcnt1000;

ARCHITECTUREaOFcnt1000Is

SIGNAL s :INTEGERRANGE0TO999;

BEGIN

PROCESS(clk,clr)

BEGIN

IFclr='0'THEN

s<=0;

ELSIF(clk'EVENTANDclk='1')THEN

IFen='1'THEN

IFs<999THEN

s<=s+1;

ELSEs<=0;

ENDIF;

ELSE

s<=s;

ENDIF;

IFs=999THEN co<='1';

ELSEco<='0';

ENDIF;

ENDIF;

ENDPROCESS;

count<=s;

ENDa;

--波形仿真如下:

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919