
数字系统实验
综合实验
B 级任务-超声波测距
实验原理:
给 trig 一个至少 10us 的高电平脉冲,之后该模块内部将发出 8 个 40kHz 周期电平并检测
回波,最后一旦检测到有回波信号则输出回响信号,回响脉冲的长度与检测距离成正比。
计算公式:设回响高电平脉冲的宽度为 t,该时间即为超声波从发射到返回的时间。所以
距离
d t m s = 340( / ) / 2 。
实验仪器的分析:
1、超声波测距模块由四个引脚构成,Vcc 接电源、GND 接地、trig 为触发信号引脚、echo
为回响信号接收引脚;
2、SRF04 传感器,trig 引脚产生一个大于 10us 的高电平信号,作为触发信号,触发系统
开始工作,随后模块内部会发出八个 40kHz 脉冲,遇到障碍物后就会自动返回,发出脉冲
时 echo 信号会跳变为高电平,当再次接收到脉冲时,echo 信号会重新跳变为低电平,
echo 信号高电平的持续时间就是超声波往返传播的时间,
搭建 Protus 工程:
仿真
在 SRF04 上设定不同距离值,可以得到通过不同频率发声的蜂鸣器;同时利用八
位数码管显示距离值(单位:mm)
数码管和 SRF04 显示:
实现过程的分析:
- 我在做实验时,随着我调节传感器的距离时,蜂鸣器的蜂鸣声会随着距离的逐渐
增大而变得的缓慢,而当超过一定范围时就会不发生,在实验的过程中,我们可
以自己设置这个范围,而这里就要对蜂鸣器进行设置,要根据不同计数值发出不
同的声音,首先需要对计数进行区间划分,通过 7485 比较器实现,比较结果作为
数码管
计数器
选择蜂鸣器的发出不通过声音的使能; - 我在设置数码管显示时,采用的是 74194 芯片作为寄存器,每次当计数结束时,
保存最终的计数值,然后通过 7447 芯片 BCD 译码器,将计数值翻译成数码管显
示数据,7447 译码后是低电平,所以数码管需要选择共阳极数码管。 - 我在设置计数器时,因为计数器采用的 74161 芯片,74161 芯片是模 16 的计数器,
为了表示成十进制我们要把它做成模 10 的计数器,我通过与门和非门,实现计数
器结果为 10 时向下一位进 1。这可以通过与门和非门的输出信号与下一位计数器
的 clk 相连来实现。
实验小结:
在做这个实验中,我在弄的时候一直报“VCC 与 GND 相连“的错误,我明明感觉我没
弄错为啥一直报错,这个耗费了我比较久的时间,最后还是在同学的提醒下我才解决
了,原来各模块之间是有灰色的线也叫隐藏引脚,如果不小心相连,会报错“VCC 与
GND 相连”。
A 级任务-在 Quartus ii 上 1 设计一个每 1 秒刷新一次距离数值的连续测量与计算系
统电路并完成下载。
硬件模块名:trig_produce(超声波模块) 设计者:
在这里插入图片描述
解释说明:
由于长度关系,我只截取了部分图,从上至下,分别为 clk,trig,echo,b_1(判高低位),c,
d……
首先经过公式计算,距离是 34000*0.001/2=17cm,数码管应该显示 017,数码管显示为 0,
十位为 0110000,数码管显示 1,个位为 1110000,数码管显示 7,所以得出的测距结果为
17cm,符合预期,验证正确;
实验小结
在这个部分实验中主要是 vhdl 代码多,难度也比之前 A 级要高,由于限制篇幅,不好展示,
其中音频信号发生器,音量调节器以及选择代码部分,那个部分很难弄,在这里我贴一个
比较短的,超声波模块的实现,其实最后当自己完成后成就感还挺大的,尤其是当仿真也
成功的时候。
实验总结:
1)人文:学会了人与人之间的合作,每次和同学间的讨论,都能让我对我这次的实验有了
一次更新的认识,这不仅加深了同学间的友谊,还提高了做事的效率。
2)知识:学会如何进行时钟划分,以及用计数计算距离的方法,还有就是对于雷达超声波
测距的原理有了一定的了解,也了解了一些他在生活中的应用;
3)技能:在这次实验后,对于 VHDL 的代码书写能力有了进步,也进一步的提升了对一些
芯片的了解程度,对如何通过现有芯片改装,实现我们预期的功能也有了一定的掌握,还
有就是仿真及引脚分配,引脚分配确认无误并使用实验板验证功能