1624进制计数器可逆计数显示电路的设计

&&& 实验教学
实验五 计数器及其应用
一、实验目的
1.熟悉由集成触发器构成的计数器电路及其工作原理。
2.熟练掌握常用中规模集成电路计数器及其应用方法。
二、实验原理
所谓计数,就是统计脉冲的个数,计数器就是实现“计数”操作的时序逻辑电路。计数器的应用十分广泛,不仅用来计数,也可用作分频、定时等。
计数器种类繁多。根据计数体制的不同,计数器可分成二进制(即2n进制)计数器和非二进制计数器两大类。在非二进制计数器中,最常用的是十进制计数器,其它的一般称为任意进制计数器。根据计数器的增减趋势不同,计数器可分为加法计数器——随着计数脉冲的输入而递增计数的;减法计数器——随着计数脉冲的输入而递减的,可逆计数器——既可递增、也可递减的。根据计数脉冲引人方式不同,计数器又可分为同步计数器——计数脉冲直接加到所有触发器的时钟脉冲(CP)输入端;异步计数器——计数脉冲不是直接加到所有触发器的时钟脉冲(CP)输入端。
1.异步二进制加法计数器
异步二进制加法计数器是比较简单的。图32 (a)是由4个JK(选用74LS112集成片)触发器构成的4位二进制(十六进制)异步加法计数器,图32
(b)和(c)分别为其状态图和波形图。
对于所得状态图和波形图可以这样理解:触发器FFo(最低位)在每个计数沿(CP)的下降沿(1 → 0)翻转,触发器FF1的
CP 端接 FF0 的 Q0 端 .因而当 FF0(Q0)由1→0时,FF1翻转。类似地,当
FFl(Ql)由1→0时,FF2翻转,FF2(Q2)由1→0时,FF3翻转。
(a)逻辑图
(c)波形图
图32 4位二进制(十六进制)异步加法计数器
4位二进制异步加法计数器从起始态共十六个状态,因此,它是十六进制加法计数器,也称模16加法计数器 (模M = 16)。
从波形图可看到,Q0的周期是CP周期的二倍;Ql是Q0的二倍,CP的四倍;Q2是Q1的二倍,Q0的四倍,CP的八倍;Q3是Q2的二倍,Ql的四倍,Q0的八倍,CP
的十六倍。所以 Q0、Ql、Q2、Q3也分别实现了二、四、八、十六分频,这就是计数器的分频作用。
2.异步二进制减法计数器
异步二进制减法计数器原理同加法计数器,只要在图32(a)所示加法计数器逻辑电路中将低位触发器Q端接高位触发器CP端,换成低位触发器Q端接高位触发器CP端即可。图33为异步二进制减法计数器。
如果用D触发器,则可把D触发器先转换成T′触发器,然后根据74LS74D触发器是上升沿触发,画出逻辑电路图。用74LS74构成的4位二进制计数器其逻辑电路如图34所示。
3.其它进制计数器
在很多实际应用中,往往需要不同的计数进制满足各种不同的要求。如电子钟里需要六十进制、二十四进制,日常生活中的十进制,等等。
(a)逻辑图
(b) 状态图
(c)波形图
图33 4位二进制(十六进制)异步减法计数器
图34 用74LS74 D触发器构成的4位异步二进制加法计数器
在图34中虚线所示,我们只要把Q3和Q1通过与非门接到FFo、FFI、FF2、FF3四个触发器的清零端Rd,即可实现从十六进制转换为十进制的计数器。如要实现十四进制计数器,可以把Q3、Q2、Q1相“与非”后,接触发器FF3
~ FF0的清零端Rd。同理可实现其它进制的异步计数器。
“8421码”十进制计数器是常用的,图35为下降沿触发的JK触发器构成的异步十进制计数器(8421码)。
(b)状态图
(c)波形图
图35异步十进制(8421码)计数器
要组成100进制(8421码)计数器可以把两个8421码计数器联起来即可实现。
4.集成计数器
在实际工程应用中,我们一般很少使用小规模的触发器去拼接而成各种计数器,而是直接选用集成计数器产品。例如74LS16l是具有异步清零功能的可预置数4位二进制同步计数器。74LS193是具有带清除双时钟功能的可预置数4位二进制同步可逆计数器。图36为74LS161管脚排列图。
由可知,74LS161具有下列功能:
,不管其它输入端为何状态,输出均为0 。
2)CR= 1,LD=
0 ,在CP上升沿时,将d0 ~ d3置入Q0 ~ Q3中。
1 ,若CTT=CTP= 1 ,对CP脉冲实现同步计数。
1,若 CTP?CTT= 0 ,计数器保持。
进位CO在平时状态为0 ,仅当CTT = 1且Qo ~ Q3 全为1时,才输出1(CO = CTT?Q3?Q2?Ql?Q0)。74LS193主要功能如下:
① CR=1 为清零,不管其它输入如何,输出均为0。
② CR=0,LD =
0,置数,将D、C、B、A置入QD、QC、QB、QA中。
③ CR=0,LD= 1,在CPD=1,CPU有上升沿脉冲输入时,实现同步二进制加法汁数。在CPU=
1 ,CPD有上升沿脉冲输入时,实现同步二进制减法计数。
④ 在计数状态下 (CR=0, LD = 1
,CPD=1 时 )CPU输入脉冲 , 进行加法计数,仅当计数到 QD ~ QA全1时,且CPu为低电平时,进位CO输出为低电平;减法计数时
(CPU=1,CPD 为脉冲输入,CR=0,LD=1),仅当
QD~QA 全 0 时,且CPD为低电平 时,借位BO输出为低电平。74LS193的管脚排列图如图37所示。
图36 74LS161管脚排列图
图37 74LS193管脚排列图
三、实验内容与步骤
1.异步二进制加法计数器
(1) 将二片74LS112(双JK触发器)插入IC空插座中。
(2)其中CP接单次脉冲(或连续脉冲),R端接实验箱上的复位开关K5。
(3)接通实验系统(箱)电源,先按复位开关K5(复位开关平时处于1,此时LED灯亮,按下为0,则LED灯灭。再松开开关,恢复至原位处于1,LED灯亮)。计数器清零。
(4)按动单次脉冲(即输入CP脉冲),计数器按二进制工作方式工作。这时Q3、Q2、Q1、Q0的状态应和图32
(b)一致。如不一致,则说明电路有问题或接线有误,需重新排除错误后,再进行实验论证。
2.异步二进制减法计数器
(1)按图33 (a)接线。实际上,只要把异步二进制加法计数器的输出脉冲引线由Q端换成Q端,即为异步二进制减法计数器。
(2)输入单次脉冲CP,观察输出Q3、Q2、Q1、Q0的状态是否和图33(b)一致。
(3)将CP脉冲连线接至连续脉冲输出(注意:必须先断开与单次脉冲连线,再接到连续脉冲输出上),调节连续脉冲旋钮,观察计数器的输出。
3.用D触发器构成计数器
(1)按图34接线,即为4位二进制(十六进制)异步加法计数器。验证方法同上。从本实验不难发现,用D触发器构成的二进制计数器与JK触发器构成的二进制计数器的接线(即电路连接)不一样,原因是74LS74双D触发器为上升沿触发,而74LS112双JK触发器为下降沿触发。
(2)构成十进制异步计数器
在图34中,将Q3和Ql两输出端,接至与非门的输入端,输出端接计数器的四个清零端Rd。图中虚线所示(原来Rd接复位按钮K5的导线应断开)。按动单次脉冲输入,就可发现其逻辑功能为十进制(8421码)计数器。
4.集成计数器74LS161的功能验证和应用
(1)将74LS161芯片插入实验箱IC空插座中。D0、D1、D2、D3接四位数据开关
,Q0、Q1、Q2、Q3、CO接五只LED发光二极管,置数控制端LD、清零端CR,分别接逻辑开关K1、K2,CTP、CTT分别接另二只逻辑开关K3、K4,CP接单次脉冲。接线完毕,接通电源,进行74LS161功能验证。
① 清零:拨动逻辑开关K2 = 0( CR=
0)则输出Q0 ~ Q3全为0,即LED全灭。
② 置数:设数据开关 D3 D2 D1 Do =
1010,再拨动逻辑开关KI=0,K2=1(即LD=0,
CR=1),按动单次脉冲(应在上升沿时),输出Q3Q2QlQo
= 1010,即D3 ~ Do 数据并行置入计数器中,若数据正确,再设置D3 ~ D0为0111,输入单次脉冲,观察输出正确否(Q3
~ Q0= 0111) 。如不正确,则找出原因。
③ 保持功能:置K1=K2=1(即CR=LD=1),K3
或 K4= 0 ( 即 CTT = 0 或 CTp = 0
),则计数器保持,此时若按动单次脉冲输入 CP ,计数器输出 Q3 ~ Q0不变(即LED状态不变)。
④ 计数:置K1=K2=1(即CR=LD=1)K3=K4=1(CTT
1)则74LS161处于加法计数器状态。这时,可按动单次脉冲输入CP,LED显示十六进制计数状态,即从→…1111进行顺序计数,当计到计数器全为1111时,进位输出LED发光二极管亮(即CO
= 1,CO=CTT?Q3?Q2?Q1?Q0)。
将CP接单次脉冲的导线去掉,连至连续脉冲输出端,这时可看到二进制计数器连续翻转的情况。
(2)十进制计数也可用74LS161方便地实现。将Q3和Ql通过与非门反馈后接到CR端。利用此法,74LS161可以构成小于模16的任意进制计数器。
同步置数法,就是利用LD这一端给一个零信号,使数据
D3D2DID0 = 0110
(即十进制数6)并置入计数器中,然后以6为基值向上计数直至15(共十个状态),即→→→→。所以利用(15)10=(1111)2状态CO为1的特点,反相后接到LD,而完成十进制计数器这一功能。同样道理,也可以从0、1、2等数值开始,再取中间十个状态为计数状态,取最终状态的“1”信号相与非后,作为LD的控制信号,就可完成十进制计数器。例如若D3D2DlD0
=(0000)2 = 0则计到9,D3D2DlD0=(0001)2
= 1则计到10,等等。
5.集成计数器74LS193的功能验证
74LSl93 计数器的使用方法和74LS161很相似。
(1)清零:74LS193的CR端与74LS161不同,它是“1”信号起作用,即CR=1时,74LS193清零。实验时,将CR置1,观察输出QD、Qc、QB、QA的状态,并和逻辑功能图37比较。
(2)计数:74LS193可以加、减计数。在计数状态时,CR = 0 ,LD
= 1 ,CPD=1,CPU输入脉冲,为加法计数器;CPU = 1
,CPD输入脉冲,计数器为减法计数器。
(3)置数:CR=0,置数数据开关为任一二进制数(如0111),拨动逻辑开关 K1=0(LD=
0)则数据 D、C、B、A己送入 QD ~ QA中。
(4)用74LS193也可实现任意进制计数器,这里不一一实验了。读者可以试做一下其它几个任意进制的计数器。
四、注意事项
集成片在使用时,不能带电接、拔导线。
五、实验总结
1.若用74LS193构成60进制计数器,电路如何?
2.总结74LS161二进制计数器的功能和特点。
常用基本逻辑门电路功能测试
组合逻辑中规模集成电路
——编码器和译码器
半加器、全加器、数据选
择器及数据分配器
触发器电路及功能转换
计数器及其应用
寄存器、移位寄存器及其应用
<font color="#5时基电路及其应用
数模(D/A)转换器及模数(A/D)转换器《设计一个四位可逆二进制计数器》的实验报告_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
6页免费5页4下载券9页免费4页免费2页免费 25页1下载券5页1下载券2页免费1页免费2页免费
喜欢此文档的还喜欢9页免费2页免费5页1下载券6页免费4页1下载券
《设计一个四位可逆二进制计数器》的实验报告|广&#8203;西&#8203;大&#8203;学&#8203;数&#8203;电&#8203;实&#8203;验&#8203;七
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢本页面信息由华强电子网用户提供,如果涉嫌侵权,请与我们客服联系,我们核实后将及时处理。
应用与方案分类
摄像头让人们可以记录下镜头下的一切,同时也拉近了人们的距T214 2-16进制同步可预置计数器的应用电路图
> T214 2-16进制同步可预置计数器的应用电路图
T214 2-16进制同步可预置计数器的应用电路图
2-16可,它主主要电参数是:电源电流ICC小于94MA,计数工作频率FM&10MHZ,CP到输出的平均延迟时间小于45NS.的管脚外引线排列及功用如图所示.的真值表如15表所示,他的功能表如16表所示.本文引用地址:我们从真值表和功能表可知,可有以下四种
分享给小伙伴们:
我来说两句……
微信公众账号请帮忙做一个eda的VHDL的编程设计 四位十进制可逆计数器 急啊啊啊啊 在线等 回答满意有追加分_百度知道
请帮忙做一个eda的VHDL的编程设计 四位十进制可逆计数器 急啊啊啊啊 在线等 回答满意有追加分
提问者采纳
这是我自己做的,如果有什么错误,请指正(反正运行结果正确)。希望对你有帮助,还有一个原理图,不知能不能传上去该程序实现的功能:设计一个至少4位的十进制计数器,具有加减计数功能和置数功能,并能通过数码管显示计数结果。减数为零时发声报警。加数为9999时报警----------这个程序中clk接1KHZ时个位每秒变化一下------------------------D:\VHDL\test\test\four\three\4位数码管级联\加计数----------library&use&ieee.std_logic_1164.use&ieee.std_logic_unsigned.------------------------------------------entity&countup&is port(clk:in&std_
&clr:in&std_
&lad:in&std_
&en:&in&std_logic_vector(1&downto&0);
&clkup:in&std_
&sel:out&std_logic_vector(1&downto&0);&
&din:in&std_logic_vector(3&downto&0);&&&&&&&&&
&pout:buffer&std_logic_vector(7&downto&0);
&speaker:out&std_logic);end&entity&-----------------------------------------------architecture&art&of&countup&is SIGNAL&dout:STD_LOGIC_VECTOR(3&DOWNTO&0); SIGNAL&dout0,dout1,dout2,dout3:STD_LOGIC_VECTOR(3&DOWNTO&0); SIGNAL&counter:std_logic_vector(1&downto&0);begin-----------------进程1---------------------------------------------------one:&--这个进程是数码管从0变到9之后,数码管的位置在依次变化 process(clkup)is
begin if(en=&00&)then
&&&& if(clkup&#39;event&and&clkup=&#39;1&#39;&&)then
&&&&if&clr=&#39;1&#39;&then&dout0&=&0000&;dout1&=&0000&;dout2&=&0000&;dout3&=&0000&;
elsif&lad=&#39;1&#39;&then&dout0&=dout1&=dout2&=dout3&=
elsif(dout0&=&1001&)then&dout0&=&0000&;&&&&&---------显示个位数字
if(dout1&=&1001&)then&dout1&=&0000&;&---------显示十位数字
if(dout2&=&1001&)then&dout2&=&0000&;&--------显示百位数字
if(dout3&=&1001&)then&dout3&=&0000&;----显示千位数字
else&dout3&=dout3+1;
else&dout2&=dout2+1;
else&dout1&=dout1+1;
else&dout0&=dout0+1;
end& ---------------------------------process(clk)&is begin
if&(clk&#39;event&and&clk=&#39;1&#39;)&then&&
if(dout0=&1001&&and&dout1=&1001&&and&dout2=&1001&&and&dout3=&1001&)then
speaker&=&#39;1&#39;;&else&speaker&=&#39;0&#39;;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
end& & end&process&;------------------进程2---------------------------------------two:
process(clk)&is begin &&&&if&(clk&#39;event&and&clk=&#39;1&#39;)&then&&&&& ------------------------------------------------
counter&=counter+&#39;1&#39;;&&&&&&&&&&&&&&&&&&&&&&&&&--- case&counter&is&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&---&&&&&&&when&&00&=&dout&=&dout1;&&&&&&&&&&&&&&&---&&&&&&&when&&01&=&dout&=&dout2;&&&&&&&&&&&&&&&---&&&&&&&when&&10&=&dout&=&dout3;&&&&&&&&&&&&&&&---&&&&&&&when&&11&=&dout&=&dout0;&&&&&&&&&&&&&&&---&&&&&&&when&others=&NULL;&&&&&&&&&---&&&&&&&end&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&---&&&end&&&&&---------------------------------&&& end&process& sel&=-----------------进程3-------------------------------------------------- three:&&--这个进程是进入一个时钟dout就加1,而在数码管上显示的数字就相应的加1;直到数码管从1变化到9 process(dout)is begin
case&dout&is&
when&&0000&&=&&pout&=&&;
when&&0001&&=&&pout&=&&;
when&&0010&&=&&pout&=&&;
when&&0011&&=&&pout&=&&;
when&&0100&&=&&pout&=&&;
when&&0101&&=&&pout&=&&;
when&&0110&&=&&pout&=&&;
when&&0111&&=&&pout&=&&;
when&&1000&&=&&pout&=&&;
when&&1001&&=&&pout&=&&;
when&others&=&&pout&=&&;
end&process&-------------------------------------------------------------------
end&architecture& -----------&D:\VHDL\test\test\four\three\4位数码管级联\减计数--------library&use&ieee.std_logic_1164.use&ieee.std_logic_unsigned.------------------------------------------entity&countdn&is port(clk:in&std_
&clr:in&std_
&lad:in&std_
&en:&in&std_logic_vector(1&downto&0);
&clkdn:in&std_
&sel:out&std_logic_vector(1&downto&0);&
&din:in&std_logic_vector(3&downto&0);&&&&&&&&&
&pout:buffer&std_logic_vector(7&downto&0);
&speaker:out&std_logic);end&entity&-----------------------------------------------architecture&art&of&countdn&is SIGNAL&dout,pdout:STD_LOGIC_VECTOR(3&DOWNTO&0); SIGNAL&dout5,dout6,dout7,dout8:STD_LOGIC_VECTOR(3&DOWNTO&0); SIGNAL&counter:std_logic_vector(1&downto&0);begin-----------------进程1---------------------------------------------------one1:&--这个进程是数码管从0变到9之后,数码管的位置在依次变化 process(clkdn)is
begin if&en=&01&then
if(dout6=&0000&&and&dout7=&0000&&and&dout8=&0000&&and&dout5=&0000&)then
&&speaker&=&#39;1&#39;;else&speaker&=&#39;0&#39;;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
end&& &&&&if(clkdn&#39;event&and&clkdn=&#39;1&#39;&&)then
if&clr=&#39;1&#39;&then&dout5&=&0000&;dout6&=&0000&;dout7&=&0000&;dout8&=&0000&;
elsif&lad=&#39;1&#39;&then&dout5&=dout6&=dout7&=dout8&=
elsif(dout5=&0000&)then&dout5&=&1001&;&&&&&&&&&&&&&&---------显示个位数字
if(dout6=&0000&)then&dout6&=&1001&;&&&&&&&&&&---------显示十位数字
if(dout7=&0000&)then&dout7&=&1001&;&&&&&&---------显示百位数字
if(dout8=&0000&)then&dout8&=&1001&;&&---------显示千位数字
else&dout8&=dout8-1;
else&dout7&=dout7-1;
else&dout6&=dout6-1;
else&dout5&=dout5-1;
end&process&one1;--------------进程2-------------------------------------------two:
process(clk)&is begin&&&&if&(clk&#39;event&and&clk=&#39;1&#39;)&then&&&&& ------------------------------------------------
counter&=counter+&#39;1&#39;;&&&&&&&&&&&&&&&&&&&&&&&&&--- case&counter&is&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&---&&&&&&&when&&00&=&dout&=&dout6;&&&&&&---&&&&&&&when&&01&=&dout&=&dout7;&&---&&&&&&&when&&10&=&dout&=&dout8;&&&&&&&&---&&&&&&&when&&11&=&dout&=&dout5;&&&&&&&&&&&&&&&---&&&&&&&when&others=&NULL;&&&&&&&&&---&&&&end&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&---&&&end&&&&&---------------------------------&&& end&process& sel&=-----------------进程3-------------------------------------------------- three:&&--这个进程是进入一个时钟dout就加1,而在数码管上显示的数字就相应的加1;直到数码管从1变化到9 process(dout)is begin
case&dout&is&
when&&0000&&=&&pout&=&&;
when&&0001&&=&&pout&=&&;
when&&0010&&=&&pout&=&&;
when&&0011&&=&&pout&=&&;
when&&0100&&=&&pout&=&&;
when&&0101&&=&&pout&=&&;
when&&0110&&=&&pout&=&&;
when&&0111&&=&&pout&=&&;
when&&1000&&=&&pout&=&&;
when&&1001&&=&&pout&=&&;
when&others&=&&pout&=&&;
end&process&-------------------------------------------------------------------
end&architecture& ------------pout2选1程序-----library&use&ieee.std_logic_1164.use&ieee.std_logic_unsigned.------------------------------------------entity&pout&is port(a:in&std_logic_vector(7&downto&0);&&
&b:in&std_logic_vector(7&downto&0);&
&c:out&std_logic_vector(7&downto&0);&
&en:in&std_logic_vector(1&downto&0));&end&entity&-----------------------------------------------architecture&art&of&pout&isbegin process(en,a,b)is
if&en=&00&then&c&=a;
else&c&=b;
end& end&process&one1;
end&architecture& ------------sel2选1程序-----library&use&ieee.std_logic_1164.use&ieee.std_logic_unsigned.------------------------------------------entity&sel&is port(a:in&std_logic_vector(1&downto&0);&&
&b:in&std_logic_vector(1&downto&0);&
&c:out&std_logic_vector(1&downto&0);&
&en:in&std_logic_vector(1&downto&0));&end&entity&-----------------------------------------------architecture&art&of&sel&isbegin process(en,a,b)is
if&en=&00&then&c&=a;
else&c&=b;
end& end&process&one1;
end&architecture&
提问者评价
其他类似问题
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 24进制计数器 的文章

 

随机推荐