特别说明:该系列内容均是本人实验记录,无盗取侵权之嫌,仅供参考,请多动手实践。
一、实验目的
详见报告
二、实验环境
详见报告
三、实验内容详解
基础要求:在实验五的基础上,用 BTNC 按键控制秒表的工作状态。
共有三种状态: A 清零;B 计时;C 停止。刚上电时,秒表处在 A 状态:按一下 BTNC,切换到 B 状态,开始计时;再按一下,切换到 C 状态,计时停止,可以读数;再按一下返回 A 状态,清零,准备下一次计时。
1、利用实验五“秒表初步”中已完成的电路设计,将其作为实验六“秒表进阶”的基础电路。
2、设计电路按键检测动作:利用带异步复位的 4 位串入并出移位寄存器SR_4S_P。寄存器的 RESET 置零,BTNC 与 CLK 相应接入 D 与 CP端,并设置输出 Out=(Q0*Q1’)。此时,每当且仅当 Input 输入为 1 且时钟信号输入为上升沿时,输出 Out 为 1,即可认为检测出 BTNC 按键动作。
3、利用一个十进制计数器与一个 2 线-4 线译码器,以达到:当电路通电以及 BTNC 按三次后,Clear 得到高电平;当 BTNC 按一次时 Hold得到高电平;当 BTNC 按两次时,Hold 获得低电平。
4、在 Timer 内,将 Hold 与第一个计数器的 ENP、ENT 相接,同时 Clear
与置零信号相或。当 Hold 为 1 时,计数器正常工作;当 Hold 为 0 时,
计数器停止;当 Clear 为 1 时,计数器始终置零。
进阶要求:设计电路使得该秒表能够存储三个时间,并读取,且不影响 BTNC 的工作。具体如下:用 BTNU 存储数据,每按一次存一个,保留最近的三个数据。用 BTND 读取数据,按一下读已记录的数据中最先存的,按第二下读第二个,按第三下读第三个,按第四下显示当前正在计时的值。
1、与基础要求中 BTNC 的按键动作检测相同,如右图布置寄存器,检测 BTNU 与BTND 的按键动作。
2、布置四组 4 位双向移位寄存器(每组四个)。以每组第一行寄存器电路连接方式为例(如下图)。SL、SR、SO、SI、~CLK 均置一,A0in~D0in 与 A1~D1 相接,四个寄存器以并行输入输出方式连接。设置 CLK 输入为 BTNU 与 BTND 按键检测输出之和。此时,当 BTNU 或 BTND 按下时,寄存器四组寄存器保存数据并行向电路右方移动。即按下三次 BTNU 后,前三组寄存器分别存入按键按下时计时器显示数字;按下三次 BTND 后,前三组寄存器保存的数据依次通过最后一组寄存器输出。
3、设计一个四进制计数器(如下图)。A~D 置零,ENP、ENT、LOAD置一,CLK 输入为 BTND 按键检测输出。设计一个输出,其值为(QA+QB),以此作为第四步中数据选择器的输入,记作 G’。
4、布置四组二选一数据选择器(每组四个,十六个数据选择器输出分别对应 A0out-D3out)。~G 均置零,A0in~D3in 分别与数据选择器的 A 相接,步骤 2 中最后一组寄存器的输出与 B 相接,步骤 3 中设计的输出与地址输入端相接。在此设计下,当 BTND 按下前三次时,G’ 均为 1,此时数据选择器输出 B(即寄存器保存的数据);当 BTND第四次按下时,G’为 0,此时数据选择器输出 A(即计数器直接输出的数据)。
实验结果见视频 1、视频 2。