当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]多年来,人们已经成功地将《毁灭》运行在几乎任何设备上。计算器、相机、自动取款机、打印机,以及许多原本并非用于运行第一人称射击游戏的其他设备,都被用来实现这一目标。因此我决定尝试用几个555定时器来播放《毁灭》。

多年来,人们已经成功地将《毁灭》运行在几乎任何设备上。计算器、相机、自动取款机、打印机,以及许多原本并非用于运行第一人称射击游戏的其他设备,都被用来实现这一目标。因此我决定尝试用几个555定时器来播放《毁灭》。

嗯,差不多可以这么说。

这个项目实际上并不直接运行《毁灭》,而是播放原版游戏第一关的开场曲《毁灭之门》。整个过程完全不需要微控制器、计算机或任何软件支持。

该电路使用两个555定时器、一些7400系列逻辑元件、一个二极管矩阵、模拟开关和一个小型音频放大器。其中一个555负责设定节奏,另一个生成实际的音符。中间的所有部分都记录电路在音阶中的位置,并告诉音频振荡器应该输出哪个音高。

工作原理

该电路可分为五个主要部分:

•节奏时钟

•序列计数器与解码器

•二极管音符矩阵

•音调选择与音频振荡器

音频放大器

完整的信号路径如下所示:

设置节拍

第一个NE555被配置为一个双稳态振荡器。电容通过一对电阻反复充放电,使引脚3的输出持续在高电平和低电平之间切换。

该振荡器运行频率约为7.33 Hz,每约136毫秒产生一次新的时钟脉冲。

此时,555并未产生音频信号,其唯一作用是设定节奏的时序。

在时序网络中有一个可调电位器,用于精确调节时钟频率。我在使用逻辑分析仪测量引脚3时进行了调整。

通过音符计数

时钟输出直接进入一个74LS161N,即四位同步二进制计数器。

每次时钟脉冲都会使计数器加1:

四位提供16种可能的状态,这非常合适,因为播放的节奏部分需要15个位置。

四个计数器输出信号输入到一个74LS154N(4选16解码器)。这样无需在电路其他地方处理四位二进制数,解码器能为每个计数值提供独立的输出。

当计数器为零时,选择Y0;为一时选择Y1,依此类推。

74LS154的输出为低电平有效,即当前选定的输出端口变为低电平,其余所有输出端口保持高电平。

这使得电路在序列中的每个位置都对应一条物理线路。

制作15步计数器

共有16种可能的计数状态,但仅需15种。

因此,最终的解码器输出Y15用于重置计数器,而不是播放另一个音符。

Y15控制一个由两个2N3904 NPN晶体管组成的较小反相器/驱动电路。当Y15被激活时,该晶体管电路会将74LS161的低电平“清零”输入(CLEAR)拉至低电平。

计数器随即立即回到零。

连接到CLEAR输入端的按钮还可提供手动复位功能。

用二极管存储音乐

计数器现在知道它在音阶中的位置,但仍然需要确定每个位置应播放的音高。

这由15个1N4148二极管来实现。

序列中有15个音符位置,但只有6种不同的音高。我创建了六个对应这些音高的音符总线。74LS154的每个输出通过一个二极管连接到相应音高应播放的总线。

例如,多个位置都播放重复的低E音,因此所有这些解码器输出都通过二极管连接到相同的E2总线:

其他解码器输出则连接到其他音高的总线上。

这个二极管矩阵实际上就是电路的音乐记忆。没有使用ROM、RAM或程序来存储序列,而是通过二极管的物理布局来编码序列。

转换音符信号

每个音符总线都有一个上拉电阻,通常保持其为高电平。

当74LS154选择某个位置时,其输出变为低电平,相应的二极管便会将对应的音符总线拉至低电平。

但这存在一个问题:电路后续使用的模拟开关需要高电平信号才能开启。

74HCT14N 六路施密特触发器反相器可以解决这个问题。

芯片内部包含六个反相器,正好满足所需数量。每个音符总线连接到一个反相器。

HCT14 的六个输出现在提供干净的高电平信号,指示应播放哪六个音高中的哪一个。

选择音高

这六个信号控制两个 CD4066BE 芯片内的开关。

CD4066 包含四个双极性模拟开关。当开关的控制输入为低电平时,其两个信号端子实际上被断开。将控制输入拉高时,连接就会闭合。

其中使用了六个开关,每个对应一个音高。

每个开关将不同的电阻网络接入第二个 555 的定时电路:

生成音符

第二个 NE555 是另一个无稳态振荡器,但它的工作频率为音频频率。

其定时电容通过选定的电阻网络持续充电和放电。改变该电阻值会改变电容的充放电速度,从而影响振荡器的频率。

较大的电阻会产生较低的频率,因此产生的音乐音高也更低。较小的电阻会产生更高的频率和更高的音调。

六个电阻网络分别对应:

•E2

•B♭2

•B2

•C3

•D3

•E3

每个网络都包含一个可调电位器。我并未完全依赖计算出的电阻值和元件公差,而是手动选择每个音高,并测量第二个555芯片的输出频率。

随后,通过调整电位器将频率调节至所需值。

例如,E2被调谐为约82.41 Hz,而其他网络则被调整到对应的音符频率。

校准完成后,CD4066开关在序列推进时可快速在六个电阻网络之间切换。

产生一些噪音

音频555芯片的第3引脚输出的是方波。

这听起来不会完全像原声电吉他,但调音依然可以辨认出来。

555的输出信号经过耦合电容后,才传入PAM8302放大模块。该电容阻隔了555输出中的直流分量,同时允许变化的音频信号通过。

PAM8302随后提供足够的功率,驱动小型扬声器发声。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭