基于于唐都实验箱的多功能电子琴

本文分享了一个使用唐都实验箱设计的多功能电子琴实验,包括16键矩阵键盘输入,扬声器输出,音调、音区切换,以及录音播放功能。实验原理涉及8255和8254芯片,通过行列扫描键盘,8254产生不同频率方波驱动扬声器发声,并提供了实验电路图和流程图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、实验目的


设计一个具有录音功能的简易电子琴。

二、实验内容及要求

设计一个具有录音功能的简易电子琴:
1、16个矩阵键盘作为输入设备,扬声器作为输出设备。实现用键盘演奏乐曲;
2、可以切换音调(A~G),也可以切换音区(高音区、中音区和低音区);
3、用数码管分别显示音调、音区和音符;
4、记录按键值及按键按下和弹起的时间存入内存(程序的数据段预留200个字节可以存放40个按键的按键值及按键按下和弹起的时间)中;
5、从内存中读出按键按下的时间、弹起的时间、音调、音区和按键值,播放记录的乐曲。

三、实验原理

1,实验仪器:1,:唐都微机实验箱;2,8255芯片;3,8254芯片;4:扬声器模块;5:键盘扫描模块;6:数码管显示模块

2:,不同按键按下,将对应频率的方波送给扬声器,即可发声

3:键盘扫描
8255的 B口控制数码管的段显示,A口控制键盘列扫描及数码管的位驱动,C口控制键盘的行扫描。A,B,C 口均采用方式0,A,B口输出,C口低四位输入。
行列扫描,一开始让X1-4口输出高电平,Y1-4输出低电平,若这4行按键里,有按键按下了,那么那一行按键对应的端口的电平就会被拉低,我们就可以知道按键的行坐标。然后再获取按键列坐标,让X1-4输出低电平,Y1-4输出高电平,若这4列按键里,有按键按下了,那么那一列按键对应的端口的电平就会被拉低。
4:8254+发声器
要使扬声器发出不同的音阶,就得输入不同频率的信号。通过给计数器 8253送入不同的初值,可以从输出端得到不同频率的波形, 驱动扬声器发出不同的音阶。音阶声音的持续时间可以通过软件延时程序实现。
将8253的输出端OUT0连接音频模块上,GATE1给高电平,运用8253通道二工作在方式3的状态下控制其计数器对应寄存器中的数值,然后将输出端口OUT2产生的方波通过扬声器转换成为声音。

计数初值= 输入时钟÷ 输出频率

音符与频率对照表

在这里插入图片描述

四、实验电路图

8255接线图
在这里插入图片描述
8254接线图
在这里插入图片描述
键盘与数码管电路图:
在这里插入图片描述

在这里插入图片描述

五、实验流程图

在这里插入图片描述

六、实验程序

;============================================
; wjtest_changekey2_3.asm
;使9 10 11 13 14 15不发声  ,按键9 播放友谊地久天长 按键10 显示学号
;测试
;============================================

;端口定义
IOY0			EQU 0600H
MY8255_A     EQU   IOY0+00H*2     ;8255的A口地址
MY8255_B     EQU   IOY0+01H*2     ;8255的B口地址
MY8255_C     EQU   IOY0+02H*2     ;8255的C口地址
MY8255_CON   EQU   IOY0+03H*2     ;8255的控制寄存器地址

IOY1 			EQU 0640H
MY8254_COUNT0	EQU IOY1+00H*2   		;8254计数器0端口地址
MY8254_COUNT1	EQU IOY1+01H*2   		;8254计数器1端口地址
MY8254_COUNT2	EQU IOY1+02H*2   		;8254计数器2端口地址
MY8254_MODE		EQU IOY1+03H*2   		;8254控制寄存器端口地址
SI_YINQU     	EQU 3006H				;用于装载音区
SI_YINDIAO   	EQU 3007H				;用于装载音符
SSTACK	SEGMENT STACK ;定义堆栈段
		DW 256 DUP(?)
SSTACK	ENDS

DATA	SEGMENT
BASS	DW 221,248,278,294,330,371,416   ;A low
		DW 248,278,312,330,371,416,467   ;B
		DW 131,147,165,175,196,221,248   ;C
		DW 147,165,185,196,221,248,278   ;D
		DW 165,185,208,221,248,278,312   ;E
		DW 175,196,221,234,262,294,330	 ;F
		DW 196,221,248,262,294,330,371   ;G
		
		DW 441,495,556,589,661,742,833   ;A middle
		DW 495,556,624,661,742,833,935	 ;B
		DW 262,294,330,350,393,441,495   ;C
		DW 294,330,371,393,441,495,556	 ;D
		DW 330,371,416,441,495,556,624   ;E 
		DW 350,393,441,467,525,589,661   ;F
		DW 393,441,495,525,589,661,742   ;G
		
		DW 882,990,1112,1178,1322,1484,1665   ;A high
		DW 990,1112,1248,1322,1484,1665,1869  ;B 
		DW 525,589,661,700,786,882,990  	  ;C
		DW 589,661,742,786,882,
### 唐都微机原理实验中的电子琴设计实现教程 #### 一、硬件准备 为了完成唐都微机原理实验中的电子琴项目,需准备好如下设备和组件[^3]: - **唐都微机实验箱** - **8255芯片**:用于输入输出控制 - **8254芯片**:定时/计数器,负责产生不同频率信号来驱动扬声器发声 - **扬声器模块**:作为声音输出装置 - **键盘扫描模块**:检测按键动作并转换成相应的电信号 - **数码管显示模块**:可选配置,用来展示当前操作状态或其他信息 #### 二、软件环境搭建 确保拥有合适的开发工具链支持汇编语言编程以及调试功能。对于此类课程作业来说,通常是在Windows环境下利用MASM或者其他兼容的汇编编译器来进行编码。 #### 三、核心算法解析 当按下某个键时,系统应该能够识别该事件并通过调整8254内部寄存器的内容改变输出波形周期从而达到改变音调的目的。具体过程涉及以下几个方面的工作: 1. 初始化8254工作方式为方波发生模式(Mode 3),并将预置值写入指定通道; 2. 设置好晶振源之后就可以按照需求计算各个音符对应的分频系数,并将其加载到相应位置上; 3. 对于每次按键响应都需要重新设定这些参数以匹配新的音频特性; 4. 如果想要获得更好的用户体验还可以加入一些额外的功能比如连奏效果或是背景音乐播放等[^4]. ```assembly ; 示例代码片段 - 配置8254生成特定频率脉冲序列 (假设使用的是82C54A型号) mov al, 0b00110110 ; Mode Control Word: BCD=0, LSB first, mode 3, channel 2 select out 43h, al ; Send control word to port address of timer chip's command register mov ax, desired_frequency_value_here ; Load your calculated frequency value here out 42h, al ; Write low byte into counter 2 data latch mov al, ah out 42h, al ; Followed by high byte immediately after that. ``` 上述伪码展示了如何向8254发送指令使其进入所需的操作模式,并设置了具体的频率数值以便后续处理。 #### 四、注意事项 在整个过程中需要注意几个关键点: - 正确理解各部件之间的逻辑关系及其相互作用机制。 - 掌握基本的汇编语法结构及常用语句的应用场景。 - 学习查阅官方文档获取更多关于目标器件特性的细节描述。 - 尝试构建简单的测试案例验证理论推导是否正确无误。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值