一种解决8254可编程计数器在计数方面问题的装置及方法

文档序号:6305347阅读:808来源:国知局
一种解决8254可编程计数器在计数方面问题的装置及方法
【专利摘要】本发明公开了一种解决8254可编程计数器在计数方面问题的装置及方法,包括8254计数器和单片机控制电路、八相三态缓冲器74LS244辅助电路;8254计数器和单片机控制电路完成8254通道级联和单片机对8254预送正脉冲任务,利用8254计数器读回指令加1修正解决计数问题;八相三态缓冲器74LS244辅助电路完成计数初值装入,当脉冲来临时完成计数器的减1计数,解决无计数脉冲和计数值偏低问题;本发明的装置及方法具有提高8254计数器计数精准度的特点。
【专利说明】一种解决8254可编程计数器在计数方面问题的装置及方法
【技术领域】
[0001]本发明涉及一种可编程计数器的应用,属于半导体应用领域,具体地说,涉及一种解决8254可编程计数器在计数方面问题的装置和方法。
【背景技术】
[0002]Intel8254是一种通用的可编程定时/计数器,内含3个独立的16位定时/计数器(T/C),由于芯片本身的特性,使之在事件计数时存在一定的问题。
[0003](I)无计数脉冲问题;8254控制字的装入与时钟无关,即使没有时钟输入,控制字仍然可以装入控制字寄存器,但是,计数初值必须经过一个完整的正脉冲才能被装入计数寄存器;当外部没有时钟输入时,初值则不能被装入计数寄存器,此时从计数器中读取的值是不确定的,无意义。
[0004](2)计数值偏低问题;在写入初值后第一个正脉冲的下降沿只是把初值装入计数寄存器,并不开始计数,而是在下一个正脉冲的下降沿才开始减I计数。
[0005](3)通道级联问题;当外部计数范围超过65536时,可以把计数器O和计数器I通道级联,构成一个32位的计数器,其计数初值分别为Ntl和N1,但同时也出现了问题;问题一:当计数值小于65536时,计数器I的初值NI没被装入寄存器,则从通道I读出的值是无意义的;问题二:计数器O的计数值应减至O时,才向计数器I借位,但实际上计数器O的计数值减到I时,就向计数器I借位,计数器I开始减1,若此时读值,则计数器I多减1,计数值比实际值大Ntl ;问题三:当读后一个通道的计数值时,前一个通道的计数值可能改变了。
[0006]《8254在事件计数方面的问题与解决》,三明职业大学电子系的饶连周在三明职业大学学报第I期发表,发表时间1999年,该文献公开了一种利用MCS-51单片机和74LS74双D触发器外加译码器的方法解决8254计数器在事件计数方面存在的问题,该方法电路连接繁琐,仅仅使用双D触发器难以避免计数值偏低的问题。

【发明内容】

[0007]针对上述存在的问题和现有技术的不足,本发明的目的在于提供一种解决8254可编程计数器在计数方面问题的方法。
[0008]本发明的技术方案是:一种解决8254可编程计数器在计数方面问题的装置,包括8254计数器和单片机控制电路,其特征在于,还包括74LS244八相三态缓冲器辅助电路。
[0009]所述8254计数器和单片机控制电路包括8254计数器U3、8254计数器U5、单片机U4、电阻R3、电容C3、电容Cl、晶振Y1、电容C2 ;8254计数器U3的I脚至8脚和8254计数器U5的I脚至8脚共同与单片机U4的22脚至29脚相连,8254计数器U3的21脚与单片机U4的36脚相连,8254计数器U3的22脚、8254计数器U5的22脚与单片机U4的37脚相连,8254计数器U3的23脚、8254计数器U5的23脚与单片机U4的38脚相连,8254计数器U3的19脚、8254计数器U5的19脚与单片机U4的39脚相连,8254计数器U3的20脚、8254计数器U5的20脚与单片机U4的40脚相连,8254计数器U3的16脚和8254计数器U3的18脚共同接地,8254计数器U3的14脚、8254计数器U3的11脚与8254计数器U5的14脚、8254计数器U5的11脚共同接电源Vcc,8254计数器U5的21脚与单片机U4的35脚相连,8254计数器U5的16脚和8254计数器U5的18脚共同接地,单片机U4的9脚与电阻R3的一端、电容C3的一端相连,电阻R3的另一端接电源Vcc,电容C3的另一端接地,单片机U4的12脚与晶振Yl的一端、电容Cl的一端相连,电容Cl的另一端接地,单片机U4的13脚与晶振Yl的另一端、电容C2的一端相连,电容C2的另一端接地,单片机U4的10脚、单片机U4的30脚、单片机U4的32脚共同接电源Vcc,单片机U4的31脚、单片机U4的11脚共同接地。
[0010]所述74LS244八相三态缓冲器辅助电路包括7474双D触发器Ul、74LS244八相三态缓冲器U2、外部输入信号端Pl ;7474双D触发器Ul的3脚与7474双D触发器Ul的9脚相连,7474双D触发器Ul的4脚接电源Vcc,7474双D触发器Ul的2脚与单片机U4的34脚相连,7474双D触发器Ul的I脚、单片机U4的2脚与8254计数器U5的13脚相连,7474双D触发器Ul的10脚、7474双D触发器Ul的11脚与74LS244八相三态缓冲器U2的4脚、外部输入信号端Pl的3脚相连,7474双D触发器Ul的12脚与7474双D触发器Ul的13脚共同接地,7474双D触发器Ul的6脚与74LS244八相三态缓冲器U2的I脚相连,74LS244八相三态缓冲器U2的2脚与8254计数器U3的10脚相连,74LS244八相三态缓冲器U2的6脚与8254计数器U5的10脚相连,74LS244八相三态缓冲器U2的8脚与外部输入信号端Pl的2脚相连,74LS244八相三态缓冲器U2的19脚与单片机U4的33脚相连,74LS244八相三态缓冲器U2的11脚、74LS244八相三态缓冲器U2的13脚、74LS244八相三态缓冲器U2的15脚、74LS244八相三态缓冲器U2的17脚与单片机U4的I脚相连,74LS244八相三态缓冲器U2的18脚、74LS244八相三态缓冲器U2的3脚与8254计数器U3的15脚相连,74LS244八相三态缓冲器U2的16脚、74LS244八相三态缓冲器U2的5脚与8254计数器U3的9脚相连,74LS244八相三态缓冲器U2的14脚、74LS244八相三态缓冲器U2的7脚与8254计数器U5的15脚相连,74LS244八相三态缓冲器U2的12脚、74LS244八相三态缓冲器U2的9脚与8254计数器U5的9脚相连,外部输入信号端Pl的I脚接地。
[0011]一种解决8254可编程计数器在计数方面问题的方法,包括如下步骤:
[0012](I) 8254计数器U3和8254计数器U5的GaTEc^GATE1四个端口共同连接电源Vcc,始终保持高电平,实现两片8254计数器的通道级联;并且8254计数器U3和8254计数器U5的接口寄存器选择端Atl与单片机U4的PAO控制端口连接,8254计数器U3和8254计数器U5的接口寄存器选择端A1与单片机U4的PAl控制端口连接、8254计数器U3和8254计数器U5的读信号端而与单片机U4的PA3控制端口连接,8254计数器U3和8254计数器U5的写信号端面与单片机U4的PA2控制端口连接、8254计数器U3的片选端茂与单片机U4的的PA4控制端口连接,8254计数器U5的片选端占与单片机U4的PA5控制端口连接,8254计数器U3和8254计数器U5的三态双向数据端Dtl~D7连接单片机U4的PC7~PCO控制端口 ;
[0013] (2)8254计数器U3和8254计数器U5向各自的内部控制字寄存器写入方式控制字,选定内部计数器O和内部计数器1,确定要使用的内部计数器O和内部计数器I的工作方式,并向内部计数器O和内部计数器I写入计数初值,完成8254计数器U3和8254计数器U5的初始化;
[0014]还包括以下步骤:
[0015](3)单片机U4的PA7控制端口先输出低电平使74LS244八相三态缓冲器U2的运端口使能,74LS244八相三态缓冲器U2的输入端2A1?2A4与输出端2Y1?2Y4导通,使单片机U4的PBO控制端口给定的脉冲与8254计数器U3和8254计数器U5的脉冲输入CLK相连,并且单片机U4输出正脉冲,当计数脉冲来临时计数器I和计数器2的计数初值同时都被装入寄存器;
[0016](4)单片机U4的PA7控制端口后输出高电平使74LS244八相三态缓冲器U2的26端口不使能,单片机U4向7474双D触发器Ul的数据输入ID端口发送高电平,7474双D触发器Ul的反向输出端口 IQN输出低电平使74LS244八相三态缓冲器U2的远端口使能,74LS244八相三态缓冲器U2的输入端口 IAl?1A4与输出端口 IYl?1Y4导通,外部计数脉冲经过Pl的输入端口 2与8254计数器U5的内部计数器O的脉冲端相连,74LS244八相三态缓冲器U2的输入端口 IAl端与8254计数器U5的内部计数器O的借位输出端相连,74LS244八相三态缓冲器U2的输入端口 1A3与8254的计数器U3的内部计数器O的借位输出端相连,在有连续脉冲信号且GATE信号为高电平时8254计数器U3和8254计数器U5的内部计数器O和内部计数器I开始计数,单片机U4选通外部时钟源;若外部计数脉冲未输入,则8254计数器U3和8254计数器U5的内部计数器O和内部计数器I不开始计数,继续等待外部计数脉冲信号的来临;
[0017](5)开始计数后,单片机U4读取8254计数器U3和8254计数器U5的回读寄存器锁存的内部计数器O和内部计数器I的状态和计数值,待计数停止时判断8254计数器U3和8254计数器U5的内部计数器O的值是否为1,若不为1,则无需矫正,继续脉冲计数;若为1,则将8254计数器U3和8254计数器U5的内部计数器I的值加I修正,然后再继续脉冲计数。
[0018]与现有技术相比,本发明的有益效果是:
[0019]1.解决8254计数器的计数问题。利用74LS244八相三态缓冲器和7474双D触发器,结合软件编程能有效解决8254计数器存在的无计数脉冲问题、计数值偏低问题和通道级联问题。
[0020]2.准确度高。通过软硬件结合,解决问题的同时大大提高了 8254计数器的计数精准度。
[0021]3.操作简单。本发明采用单片机和8254计数器为核心部件,组件少,操作简单。【专利附图】

【附图说明】
[0022]图1是本发明的8254可编程计数器通用芯片的内部逻辑图。
[0023]图2是本发明的8254可编程计数器通用芯片的计数器内部逻辑图。
[0024]图3是本发明的8254可编程计数器通用芯片的外部引脚图。
[0025]图4是本发明的8254方式2的工作时序图。
[0026]图5是本发明的8254的控制字格式图。
[0027]图6是本发明的8254读回命令控制字格式图。
[0028]图7是8254所存在的计数值偏低问题波形示意图。[0029]图8是本发明的八相三态缓冲器74LS244的引脚和对应真值表图。
[0030]图9是本发明的8254计数器和单片机控制电路连接图。
[0031]图10是本发明的八相三态缓冲器74LS244辅助电路连接图。
[0032]图11是本发明的软件解决方法流程图。
【具体实施方式】
[0033]下面结合附图和具体实施例对本发明作进一步详细的说明。
[0034]首先,简述8254可编程计数器的基本构成和工作方式。参见图1,8254计数器内部逻辑包括与CPU相连的数据总线缓冲器、读/写控制逻辑、控制字寄存器和三个计数器;CPU通过数据总线缓冲器向8254计数器写入控制命令、计数初值或读当前计数值;读/写控制逻辑用于控制8254计数器内部寄存器的读/写操作;控制字寄存器存储控制字指令,设定8254计数器不同的工作方式;三个计数器完全相同但是彼此独立,各自可按照编程设定的方式工作。
[0035]参见图2,计数器内部逻辑包括初始值寄存器CR、一个减“I”计数执行部件CE和一个16位输出锁存计数器0L,配有控制逻辑电路、控制字寄存器和状态寄存器等。初始值一旦写入CR,则自动送入CE ;当门控信号GATE有效时,CE按时钟信号CLK减“I”计数,CE减为O时,由OUT引脚输出计数回零信号;在计数过程中,OL跟随CE的变化。当CPU写入锁存命令时,OL锁存当前计数值,直至CPU读取计数值之后,OL再继续跟随CE的值;作为发生器时计数初值N = fi/fo, &为输入CLK频率,f0为OUT输出频率,在不同工作方式及定时/计数时的应用不同。
[0036]参见图3,8254计数器外部引脚中Dtl?D7为三态双向数据端;涵、涵为读写信号,低电平有效;反为片选端,低电平有效.Α、Κ为接口寄存器选择端KLKtl?CLK2为时钟输入端,输入定时/计数脉冲AATEtl?GATE2为门控制输入端,控制计数器的启动或停止,高电平有效AUTtl?OUT2为输出端,输出波形取决于工作模式'Ncc为+5V供电电源端;GND接地。
[0037]参见图4,8254计数器的每个计数器都有六种计数方式,在本实施例中,我们使用的是工作方式2,方式2的具体工作过程为:8254计数器先完成初始化,控制字CW写入之后,OUT初始电平为高,在计数初值N被装入初值寄存器CR后第一个CLK的下降沿将N装入计数执行单元CE,待CLK的下一个下降沿到来且门控信号GATE为高电平时,计数器启动减“ I”计数,此时OUT仍保持高电平,直到计数值减到“ I”时,OUT才输出低电平,维持一个时钟周期后又恢复为高电平,同时自动将计数初值N加载到CE,再重复以上过程,形成循环计数;输出低电平的时间是一个时钟周期,从一个输出脉冲到下一个输出脉冲的时间等于计数初值N。
[0038]参见图5,显示了 8254计数器的控制字格式,因为对8254计数器的编程是通过先写控制字,再写初值来实现的,其中SC1SCtl为计数器选择位,SC1SC0 = 00对应选择计数器0,SC1SC0 = 01对应选择计数器1,SC1SC0 = 10对应选择计数器2,SC1SC0 = 11对应读回命令AW1RWtl为读/写格式选择位,Rff1Rff0 = 00时计数器锁存,Rff1Rff0 = 01时只读/写计数器的低字节,RW1RWtl = 10时只读/写计数器的高字节,RW1RWtl = 11时先读/写计数器的低字节,再读/写计数器的高字节W2M1Mtl为工作方式选择位,M2M1Mtl = 110或111对应选择工作方式2,BCD对应的是计数码制选择位,取O时以16位二进制计数,取I时以二 -十进制计数。
[0039]参见图6,8254计数器的一个显著特点就是具有读回状态功能,读回命令可以将三个计数器的计数值和状态锁存,并向CPU返回一个状态字,控制字格式中D7D6 = 11是读回命令的标志位,D5 = O为锁存计数值,D4 = O为锁存状态信息,D3?D1是计数器选择位,一次可以锁存一个或多个计数器的状态值或状态信息,当某一计数器中的状态值或状态信息被CPU读取后,锁存失效;读回命令写入控制端口,状态信息和计数值都通过计数器端口读取;如果使读回命令的D5和D4位都为0,即状态信息和计数值都要读回,读取的顺序是:先读取状态信息,后读取计数值。
[0040]8254计数器在计数时所存在的问题可参见图7,8254计数器在写入初值后第一个正脉冲的下降沿只是把初值装入计数寄存器,并不开始计数,而是在下一个正脉冲的下降沿才开始减“I”计数;因此涵在a处被拉高时,计数器少计I个脉冲;而在13处被拉高时,计数器少计2个脉冲,从而出现计数值偏低的现象。
[0041]参见图8,在本实施例中使用八相三态缓冲器74LS244解决无计数脉冲问题和计数值偏低问题,八相三态缓冲器74LS244中运和为使能控制端,低电平有效,IAl?1Α4和2Α1?2Α4为输入端,IYl?1Υ4和2Υ1?2Υ4为输出端,当使能端为低电平时,输出与输入保持一致,当使能端为高电平时,输入端无论为高电平还是低电平,输出端均为高阻态。
[0042]参见图9,8254计数器和单片机控制电路包括8254计数器U3、8254计数器U5、单片机U4、电阻R3、电容C3、电容Cl、晶振Υ1、电容C2 ;8254计数器U3的I脚至8脚和8254计数器U5的I脚至8脚共同与单片机U4的22脚至29脚相连,8254计数器U3的21脚与单片机U4的36脚相连,8254计数器U3的22脚、8254计数器U5的22脚与单片机U4的37脚相连,8254计数器U3的23脚、8254计数器U5的23脚与单片机U4的38脚相连,8254计数器U3的19脚、8254计数器U5的19脚与单片机U4的39脚相连,8254计数器U3的20脚、8254计数器U5的20脚与单片机U4的40脚相连,8254计数器U3的16脚和8254计数器U3的18脚共同接地,8254计数器U3的14脚、8254计数器U3的11脚与8254计数器U5的14脚、8254计数器U5的11脚共同接电源Vcc,8254计数器U5的21脚与单片机U4的35脚相连,8254计数器U5的16脚和8254计数器U5的18脚共同接地,单片机U4的9脚与电阻R3的一端、电容C3的一端相连,电阻R3的另一端接电源Vcc,电容C3的另一端接地,单片机U4的12脚与晶振Yl的一端、电容Cl的一端相连,电容Cl的另一端接地,单片机U4的13脚与晶振Yl的另一端、电容C2的一端相连,电容C2的另一端接地,单片机U4的10脚、单片机U4的30脚、单片机U4的32脚共同接电源Vcc,单片机U4的31脚、单片机U4的11脚共同接地。
[0043]参见图10,74LS244八相三态缓冲器辅助电路包括7474双D触发器U1、74LS244八相三态缓冲器U2、外部输入信号端Pl ;7474双D触发器Ul的3脚与7474双D触发器Ul的9脚相连,7474双D触发器Ul的4脚接电源Vcc,7474双D触发器Ul的2脚与单片机U4的34脚相连,7474双D触发器Ul的I脚、单片机U4的2脚与8254计数器U5的13脚相连,7474双D触发器Ul的10脚、7474双D触发器Ul的11脚与74LS244八相三态缓冲器U2的4脚、外部输入信号端Pl的3脚相连,7474双D触发器Ul的12脚与7474双D触发器Ul的13脚共同接地,7474双D触发器Ul的6脚与74LS244八相三态缓冲器U2的I脚相连,74LS244八相三态缓冲器U2的2脚与8254计数器U3的10脚相连,74LS244八相三态缓冲器U2的6脚与8254计数器U5的10脚相连,74LS244八相三态缓冲器U2的8脚与外部输入信号端Pl的2脚相连,74LS244八相三态缓冲器U2的19脚与单片机U4的33脚相连,74LS244八相三态缓冲器U2的11脚、74LS244八相三态缓冲器U2的13脚、74LS244八相三态缓冲器U2的15脚、74LS244八相三态缓冲器U2的17脚与单片机U4的I脚相连,74LS244八相三态缓冲器U2的18脚、74LS244八相三态缓冲器U2的3脚与8254计数器U3的15脚相连,74LS244八相三态缓冲器U2的16脚、74LS244八相三态缓冲器U2的5脚与8254计数器U3的9脚相连,74LS244八相三态缓冲器U2的14脚、74LS244八相三态缓冲器U2的7脚与8254计数器U5的15脚相连,74LS244八相三态缓冲器U2的12脚、74LS244八相三态缓冲器U2的9脚与8254计数器U5的9脚相连,外部输入信号端Pl的I脚接地。单片机U4的PA7输出低电平使74LS244八相三态缓冲器U2的控制端2石使能,74LS244八相三态缓冲器U2的输入端2A1和输出端2Y1、输入端2A2和输出端2Y2、输入端2A3和输出端2Y3、输入端2A4和输出端2Y4分别导通,单片机U4的PBO端口与CLK1-0、CLKl-U CLKO-O和CLK0-1相连,并且单片机U4的PBO端口输出正脉冲,在有计数脉冲时8254计数器U3和8254计数器U5的内部计数器O和内部计数器I的计数初值同时都被装入8254计数器的内部寄存器,然后单片机U4输出高电平使74LS244八相三态缓冲器U2的控制端2G不使能,单片机U4向7474双D触发器Ul的数据输入端发送高电平,7474双D触发器Ul的反向输出端输出低电平使74LS244八相三态缓冲器U2的控制端运使能,74LS244八相三态缓冲器U2的输入端IAl和输出端IYl、输入端1A2和输出端1Y2、输入端1A3和输出端1Y3、输入端1A4和输出端1Y4分别导通,外部计数脉冲经外部计数脉冲外部信号输入端Pl的2脚输入与8254计数器U5的内部计数器O的脉冲端相连,74LS244八相三态缓冲器U2的输入端IAl与8254计数器U3的内部计数器O的借位输出端相连,74LS244八相三态缓冲器U2的输入端1A3与8254计数器U5内部计数器O的借位输出端相连,内部计数器O和内部计数器I均开始计数;通过单片机U4对8254计数器U3和8254计数器U5的CLK预送正脉冲,使得计数初值装入8254计数器 的内部寄存器,再当CLK与外部计数脉冲输入相连时,8254计数器开始减I计数,解决了计数值偏低的问题,即使外部无计数脉冲,由于初值已被装入寄存器,此时计数器内的值也是正确的。
[0044]参见图11,解决8254可编程计数器在计数方面问题的方法包括如下步骤:
[0045](I) 8254计数器U3和8254计数器U5的GaTEc^GATE1四个端口共同连接电源Vcc,始终保持高电平,实现两片8254计数器的通道级联;并且8254计数器U3和8254计数器U5的接口寄存器选择端Atl与单片机U4的PAO控制端口连接,8254计数器U3和8254计数器U5的接口寄存器选择端A1与单片机U4的PAl控制端口连接、8254计数器U3和8254计数器U5的读信号端而与单片机U4的PA3控制端口连接,8254计数器U3和8254计数器U5的写信号端E与早片机U4的PA2控制端口连接、8254计数器U3的片选端?W与单片机U4的的PA4控制端口连接,8254计数器U5的片选端斤与单片机U4的PA5控制端口连接,8254计数器U3和8254计数器U5的三态双向数据端Dtl~D7连接单片机U4的PC7~PCO控制端口 ;
[0046](2)8254计数器U3和8254计数器U5向各自的内部控制字寄存器写入方式控制字,选定内部计数器O和内部计数器1,确定要使用的内部计数器O和内部计数器I的工作方式,并向内部计数器O和内部计数器I写入计数初值,完成8254计数器U3和8254计数器U5的初始化;
[0047](3)单片机U4的PA7控制端口先输出低电平使74LS244八相三态缓冲器U2的运端口使能,74LS244八相三态缓冲器U2的输入端2A1?2A4与输出端2Y1?2Y4导通,使单片机U4的PBO控制端口给定的脉冲与8254计数器U3和8254计数器U5的脉冲输入CLK相连,并且单片机U4输出正脉冲,当计数脉冲来临时计数器I和计数器2的计数初值同时都被装入寄存器;
[0048](4)单片机U4的PA7控制端口后输出高电平使74LS244八相三态缓冲器U2的万端口不使能,单片机U4向7474双D触发器Ul的数据输入ID端口发送高电平,7474双D触发器Ul的反向输出端口 IQN输出低电平使74LS244八相三态缓冲器U2的运端口使能,74LS244八相三态缓冲器U2的输入端口 IAl?1A4与输出端口 IYl?1Y4导通,外部计数脉冲经过Pl的输入端口 2与8254计数器U5的内部计数器O的脉冲端相连,74LS244八相三态缓冲器U2的输入端口 IAl端与8254计数器U5的内部计数器O的借位输出端相连,74LS244八相三态缓冲器U2的输入端口 1A3与8254的计数器U3的内部计数器O的借位输出端相连,在有连续脉冲信号且GATE信号为高电平时8254计数器U3和8254计数器U5的内部计数器O和内部计数器I开始计数,单片机U4选通外部时钟源;若外部计数脉冲未输入,则8254计数器U3和8254计数器U5的内部计数器O和内部计数器I不开始计数,继续等待外部计数脉冲信号的来临;
[0049](5)开始计数后,单片机U4读取8254计数器U3和8254计数器U5的回读寄存器锁存的内部计数器O和内部计数器I的状态和计数值,待计数停止时判断8254计数器U3和8254计数器U5的内部计数器O的值是否为1,若不为1,则无需矫正,继续脉冲计数;若为1,则将8254计数器U3和8254计数器U5的内部计数器I的值加I修正,然后再继续脉冲计数。
【权利要求】
1.一种解决8254可编程计数器在计数方面问题的装置,包括8254计数器和单片机控制电路,其特征在于,还包括74LS244八相三态缓冲器辅助电路。
2.根据权利要求1所述的解决8254可编程计数器在计数方面问题的装置,其特征在于,所述8254计数器和单片机控制电路包括8254计数器U3、8254计数器U5、单片机U4、电阻R3、电容C3、电容Cl、晶振Y1、电容C2 ;8254计数器U3的I脚至8脚和8254计数器U5的I脚至8脚共同与单片机U4的22脚至29脚依次相连,8254计数器U3的21脚与单片机U4的36脚相连,8254计数器U3的22脚、8254计数器U5的22脚与单片机U4的37脚相连,8254计数器U3的23脚、8254计数器U5的23脚与单片机U4的38脚相连,8254计数器U3的19脚、8254计数器U5的19脚与单片机U4的39脚相连,8254计数器U3的20脚、8254计数器U5的20脚与单片机U4的40脚相连,8254计数器U3的16脚和8254计数器U3的18脚共同接地,8254计数器U3的14脚、8254计数器U3的11脚与8254计数器U5的14脚、8254计数器U5的11脚共同接电源Vcc,8254计数器U5的21脚与单片机U4的35脚相连,8254计数器U5的16脚和8254计数器U5的18脚共同接地,单片机U4的9脚与电阻R3的一端、电容C3的一端相连,电阻R3的另一端接电源Vcc,电容C3的另一端接地,单片机U4的12脚与晶振Yl的一端、电容Cl的一端相连,电容Cl的另一端接地,单片机U4的13脚与晶振Yl的另一端、电容C2的一端相连,电容C2的另一端接地,单片机U4的10脚、单片机U4的30脚、单片机U4的32脚共同接电源Vcc,单片机U4的31脚、单片机U4的11脚共同接地。
3.根据权利要求1所述的解决8254可编程计数器在计数方面问题的装置,其特征在于,所述74LS244八相三态缓冲器辅助电路包括7474双D触发器Ul、74LS244八相三态缓冲器U2、外部信号输入端Pl ;7474双D触发器Ul的3脚与7474双D触发器Ul的9脚相连,7474双D触发器Ul的4脚接电源Vcc,7474双D触发器Ul的2脚与单片机U4的34脚相连,7474双D触发器Ul 的I脚、单片机U4的2脚与8254计数器U5的13脚相连,7474双D触发器Ul的10脚、7474双D触发器Ul的11脚与74LS244八相三态缓冲器U2的4脚、外部信号输入端Pl的3脚相连,7474双D触发器Ul的12脚与7474双D触发器Ul的13脚共同接地,7474双D触发器Ul的6脚与74LS244八相三态缓冲器U2的I脚相连,74LS244八相三态缓冲器U2的2脚与8254计数器U3的10脚相连,74LS244八相三态缓冲器U2的6脚与8254计数器U5的10脚相连,74LS244八相三态缓冲器U2的8脚与外部信号输入端Pl的2脚相连,74LS244八相三态缓冲器U2的19脚与单片机U4的33脚相连,74LS244八相三态缓冲器U2的11脚、74LS244八相三态缓冲器U2的13脚、74LS244八相三态缓冲器U2的15脚、74LS244八相三态缓冲器U2的17脚与单片机U4的I脚相连,74LS244八相三态缓冲器U2的18脚、74LS244八相三态缓冲器U2的3脚与8254计数器U3的15脚相连,74LS244八相三态缓冲器U2的16脚、74LS244八相三态缓冲器U2的5脚与8254计数器U3的9脚相连,74LS244八相三态缓冲器U2的14脚、74LS244八相三态缓冲器U2的7脚与8254计数器U5的15脚相连,74LS244八相三态缓冲器U2的12脚、74LS244八相三态缓冲器U2的9脚与8254计数器U5的9脚相连,外部信号输入端Pl的I脚接地。
4.一种解决8254可编程计数器在计数方面问题的方法,包括如下步骤: (1)8254计数器U3和8254计数器U5的GaTEc^GATE1四个端口共同连接电源Vcc,始终保持高电平,实现两片8254计数器的通道级联;并且8254计数器U3和8254计数器U5的接口寄存器选择端Atl与单片机U4的PAO控制端口连接,8254计数器U3和8254计数器U5的接口寄存器选择端A1与单片机U4的PAl控制端口连接、8254计数器U3和8254计数器U5的读信号端涵与单片机U4的PA3控制端口连接,8254计数器U3和8254计数器U5的写信号端两与单片机U4的PA2控制端口连接、8254计数器U3的片选端污与单片机U4的的PA4控制端口连接,8254计数器U5的片选端反与单片机U4的PA5控制端口连接,8254计数器U3和8254计数器U5的三态双向数据端Dtl~D7连接单片机U4的PC7~PCO控制端口 ; (2)8254计数器U3和8254计数器U5向各自的内部控制字寄存器写入方式控制字,选定内部计数器O和内部计数器1,确定要使用的内部计数器O和内部计数器I的工作方式,并向内部计数器O和内部计数器I写入计数初值,完成8254计数器U3和8254计数器U5的初始化; 其特征在于,还包括以下步骤: (3)单片机U4的PA7控制端口先输出低电平使74LS244八相三态缓冲器U2的帝端口使能,74LS244八相三态缓冲器U2的输入端2A1~2A4与输出端2Y1~2Y4导通,使单片机U4的PBO控制端口给定的脉冲与8254计数器U3和8254计数器U5的脉冲输入CLK相连,并且单片机U4输出正脉冲,当计数脉冲来临时计数器I和计数器2的计数初值同时都被装入寄存器; (4)单片机U4的PA7控制端口后输出高电平使74LS244八相三态缓冲器U2的2⑦端口不使能,单片机U4向7474双D触发器Ul的数据输入ID端口发送高电平,7474双D触发器Ul的反向输出端口 IQN输出低电平使74LS244八相三态缓冲器U2的运端口使能,74LS244八相三态缓冲器U2的输入端口 IAl~1A4与输出端口 IYl~1Y4导通,外部计数脉冲经过Pl的输入端口 2与8254计数器U5的内部计数器O的脉冲端相连,74LS244八相三态缓冲器U2的输入端口 IAl端与8254计数器U5的内部计数器O的借位输出端相连,74LS244八相三态缓冲器U2的输入端口 1A3与8254的计数器U3的内部计数器O的借位输出端相连,在有连续脉冲信号且GATE信号为高电平时8254计数器U3和8254计数器U5的内部计数器O和内部计数器I开始计数,单片机U4选通外部时钟源;若外部计数脉冲未输入,则8254计数器U3和8254计数器U5的内部计数器O和内部计数器I不开始计数,继续等待外部计数脉冲信号的来临; (5)开始计数后,单片机U4读取8254计数器U3和8254计数器U5的回读寄存器锁存的内部计数器O和内部计数器I的状态和计数值,待计数停止时判断8254计数器U3和8254计数器U5的内部计数器O的值是否为1,若不为1,则无需矫正,继续脉冲计数;若为1,则将8254计数器U3和8254计数器U5的内部计数器I的值加I修正,然后再继续脉冲计数。
【文档编号】G05B19/042GK103970056SQ201410219818
【公开日】2014年8月6日 申请日期:2014年5月22日 优先权日:2014年5月22日
【发明者】王利强, 周丽, 王飞, 张德星 申请人:天津职业技术师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1