电子发声设计实验(2).doc下载

weixin_39820835 2023-03-24 15:30:32
1电子发声设计实验 1.1实验内容 根据实验提供的音乐频率表和时间表,编写程序控制8254,使其输出连接到扬声器上 能发出相应的乐曲。 1.2实验原理 一个音符对应一个频率,将对应一个音符频率的方波通到扬声器上,就可以发出这个 音符的声音。将一段乐曲的音符对应频率的方波依次送到扬声器,就可以演奏出这段乐 曲。利用8254的方式3—"方波发生器",将相应一种频率的计数初值写入计数器,就可产 生对应频率的方波。计数初值的计算如下: 计数初值 = 输入时钟 ÷ 输出频 例如输入时钟采用1MHz,要得到800Hz的频率,计数初值即为1000000÷800。音符与频 率对照关系如表1所示。对于每一个音符的演奏时间,可以通过软件延时来处理。首先确 定单位延时时间程序(根据CPU的频率不同而有所变化)。然后确定每个音符演奏需要几 个单位时间,将这个值送入DL中,调用DALLY子程序即可。 下面提供了乐曲《友谊地久天长》实验参考程序。 频率表和时间表是一一对应的,频率表的最后一项为0,作为重复的标志。根据频率 表中的频率算出对应的计数初值,然后依次写入8254的计数器。将时间表中相对时间值 带入延时程序来得到音符演奏时间。实验参考程序流程如图1所示。 1.3实验步骤 1. 参考图2所示连接实验线路; 2. 编写实验程序,经编译、连接无误后装入系统; 3. 运行程序,听扬声器发出的音乐是否正确。 1.4程序代码 1.4.1第一个程序 IOY0 EQU 0600H MY8254_COUNT0 EQU IOY0+00H ;8254计数器0端口地址 MY8254_COUNT1 EQU IOY0+02H ;8254计数器1端口地址 MY8254_COUNT2 EQU IOY0+04H ;8254计数器2端口地址 MY8254_MODE EQU IOY0+06H ;8254控制寄存器端口地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT FREQ_LIST DW 196,262,262,262,330,294,262,294,330,262,262,330,393 ;频率表 DW 441,441,393,330,330,262,294,262,294,330,262,221,221,196 DW 262,441,393,330,330,262,294,262,294,441,393,330,330,393 DW 441,525,393,330,330,262,294,262,294,330,262,221,221,196,262,0 TIME_LIST DB 4, 6, 2, 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 ;时间表 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4, 6, 2, 4, 4, 12 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H ;定时器0、方式3 OUT DX,AL BEGIN: MOV SI,OFFSET FREQ_LIST ;装入频率表起始地址 MOV DI,OFFSET TIME_LIST ;装入时间表起始地址 PLAY: MOV DX,0FH ;输入时钟为1MHz,1M = 0F4240H MOV AX,4240H DIV WORD PTR [SI] ;取出频率值计算计数初值,0F4240H / 输出频率 MOV DX,MY8254_COUNT0 OUT DX,AL ;装入计数初值 MOV AL,AH OUT DX,AL MOV DL,[DI] ;取出演奏相对时间,调用延时子程序 CALL DALLY ADD SI,2 INC DI CMP WORD PTR [SI],0 ;判断是否到曲末? JE BEGIN JMP PLAY DALLY PROC ;延时子程序 D0: MOV CX,0010H D1: MOV AX,0FF0H D2: DEC AX JNZ D2 LOOP D1 DEC DL JNZ D0 RET DALLY ENDP CODE ENDS END START 1.4.2第二个程序 【实验内容】 按下键盘上的数字键1—7,使得扬声器发出音乐乐谱的1-7音 【实验代码】 IOY0 EQU 0600H MY8254_COUNT0 EQU IO , 相关下载链接:https://download.csdn.net/download/qq_43934844/87508074?utm_source=bbsseo
...全文
19 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
1电子发声设计实验 1.1实验内容 根据实验提供的音乐频率表和时间表,编写程序控制8254,使其输出连接到扬声器上 能发出相应的乐曲。 1.2实验原理 一个音符对应一个频率,将对应一个音符频率的方波通到扬声器上,就可以发出这个 音符的声音。将一段乐曲的音符对应频率的方波依次送到扬声器,就可以演奏出这段乐 曲。利用8254的方式3—"方波发生器",将相应一种频率的计数初值写入计数器,就可产 生对应频率的方波。计数初值的计算如下: 计数初值 = 输入时钟 ÷ 输出频 例如输入时钟采用1MHz,要得到800Hz的频率,计数初值即为1000000÷800。音符与频 率对照关系如表1所示。对于每一个音符的演奏时间,可以通过软件延时来处理。首先确 定单位延时时间程序(根据CPU的频率不同而有所变化)。然后确定每个音符演奏需要几 个单位时间,将这个值送入DL中,调用DALLY子程序即可。 下面提供了乐曲《友谊地久天长》实验参考程序。 频率表和时间表是一一对应的,频率表的最后一项为0,作为重复的标志。根据频率 表中的频率算出对应的计数初值,然后依次写入8254的计数器。将时间表中相对时间值 带入延时程序来得到音符演奏时间。实验参考程序流程如图1所示。 1.3实验步骤 1. 参考图2所示连接实验线路; 2. 编写实验程序,经编译、连接无误后装入系统; 3. 运行程序,听扬声器发出的音乐是否正确。 1.4程序代码 1.4.1第一个程序 IOY0 EQU 0600H MY8254_COUNT0 EQU IOY0+00H ;8254计数器0端口地址 MY8254_COUNT1 EQU IOY0+02H ;8254计数器1端口地址 MY8254_COUNT2 EQU IOY0+04H ;8254计数器2端口地址 MY8254_MODE EQU IOY0+06H ;8254控制寄存器端口地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT FREQ_LIST DW 196,262,262,262,330,294,262,294,330,262,262,330,393 ;频率表 DW 441,441,393,330,330,262,294,262,294,330,262,221,221,196 DW 262,441,393,330,330,262,294,262,294,441,393,330,330,393 DW 441,525,393,330,330,262,294,262,294,330,262,221,221,196,262,0 TIME_LIST DB 4, 6, 2, 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 ;时间表 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4, 6, 2, 4, 4, 12 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H ;定时器0、方式3 OUT DX,AL BEGIN: MOV SI,OFFSET FREQ_LIST ;装入频率表起始地址 MOV DI,OFFSET TIME_LIST ;装入时间表起始地址 PLAY: MOV DX,0FH ;输入时钟为1MHz,1M = 0F4240H MOV AX,4240H DIV WORD PTR [SI] ;取出频率值计算计数初值,0F4240H / 输出频率 MOV DX,MY8254_COUNT0 OUT DX,AL ;装入计数初值 MOV AL,AH OUT DX,AL MOV DL,[DI] ;取出演奏相对时间,调用延时子程序 CALL DALLY ADD SI,2 INC DI CMP WORD PTR [SI],0 ;判断是否到曲末? JE BEGIN JMP PLAY DALLY PROC ;延时子程序 D0: MOV CX,0010H D1: MOV AX,0FF0H D2: DEC AX JNZ D2 LOOP D1 DEC DL JNZ D0 RET DALLY ENDP CODE ENDS END START 1.4.2第二个程序 【实验内容】 按下键盘上的数字键1—7,使得扬声器发出音乐乐谱的1-7音 【实验代码】 IOY0 EQU 0600H MY8254_COUNT0 EQU IO
1电子发声设计实验 1.1实验内容 根据实验提供的音乐频率表和时间表,编写程序控制8254,使其输出连接到扬声器上 能发出相应的乐曲。 1.2实验原理 一个音符对应一个频率,将对应一个音符频率的方波通到扬声器上,就可以发出这个 音符的声音。将一段乐曲的音符对应频率的方波依次送到扬声器,就可以演奏出这段乐 曲。利用8254的方式3—"方波发生器",将相应一种频率的计数初值写入计数器,就可产 生对应频率的方波。计数初值的计算如下: 计数初值 = 输入时钟 ÷ 输出频 例如输入时钟采用1MHz,要得到800Hz的频率,计数初值即为1000000÷800。音符与频 率对照关系如表1所示。对于每一个音符的演奏时间,可以通过软件延时来处理。首先确 定单位延时时间程序(根据CPU的频率不同而有所变化)。然后确定每个音符演奏需要几 个单位时间,将这个值送入DL中,调用DALLY子程序即可。 下面提供了乐曲《友谊地久天长》实验参考程序。 频率表和时间表是一一对应的,频率表的最后一项为0,作为重复的标志。根据频率 表中的频率算出对应的计数初值,然后依次写入8254的计数器。将时间表中相对时间值 带入延时程序来得到音符演奏时间。实验参考程序流程如图1所示。 1.3实验步骤 1. 参考图2所示连接实验线路; 2. 编写实验程序,经编译、连接无误后装入系统; 3. 运行程序,听扬声器发出的音乐是否正确。 1.4程序代码 1.4.1第一个程序 IOY0 EQU 0600H MY8254_COUNT0 EQU IOY0+00H ;8254计数器0端口地址 MY8254_COUNT1 EQU IOY0+02H ;8254计数器1端口地址 MY8254_COUNT2 EQU IOY0+04H ;8254计数器2端口地址 MY8254_MODE EQU IOY0+06H ;8254控制寄存器端口地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT FREQ_LIST DW 196,262,262,262,330,294,262,294,330,262,262,330,393 ;频率表 DW 441,441,393,330,330,262,294,262,294,330,262,221,221,196 DW 262,441,393,330,330,262,294,262,294,441,393,330,330,393 DW 441,525,393,330,330,262,294,262,294,330,262,221,221,196,262,0 TIME_LIST DB 4, 6, 2, 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 ;时间表 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4, 6, 2, 4, 4, 12 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H ;定时器0、方式3 OUT DX,AL BEGIN: MOV SI,OFFSET FREQ_LIST ;装入频率表起始地址 MOV DI,OFFSET TIME_LIST ;装入时间表起始地址 PLAY: MOV DX,0FH ;输入时钟为1MHz,1M = 0F4240H MOV AX,4240H DIV WORD PTR [SI] ;取出频率值计算计数初值,0F4240H / 输出频率 MOV DX,MY8254_COUNT0 OUT DX,AL ;装入计数初值 MOV AL,AH OUT DX,AL MOV DL,[DI] ;取出演奏相对时间,调用延时子程序 CALL DALLY ADD SI,2 INC DI CMP WORD PTR [SI],0 ;判断是否到曲末? JE BEGIN JMP PLAY DALLY PROC ;延时子程序 D0: MOV CX,0010H D1: MOV AX,0FF0H D2: DEC AX JNZ D2 LOOP D1 DEC DL JNZ D0 RET DALLY ENDP CODE ENDS END START 1.4.2第二个程序 【实验内容】 按下键盘上的数字键1—7,使得扬声器发出音乐乐谱的1-7音 【实验代码】 IOY0 EQU 0600H MY8254_COUNT0 EQU IO
《微机原理与接口技术》 实 验 报 告 学 院: 专 业: 班级学号: 学生姓名: 实验日期: 指导老师: 五邑大学计算机学院制表 实 验 八 1. 实验名称:电子发声设计实验 2. 实验目的: 学习8253定时/计数器使蜂鸣器发声的编程方法。 3. 实验内容: 设根据实验提供的音乐频率表和时间表,编写程序控制8254,使其输出连接到扬声 器上能发出相应的乐曲。 4. 实验设备: PC微型计算机一台,TD-PITE实验装置或TD-PITC实验装置一套 5. 实验步骤: 1. 参考下图,连接实验线路; 2. 编写程序,经编译、连接无误后装入系统; 3. 运行程序,听扬声器发出的音乐是吾正确; 4. 固化程序,然后脱机运行程序。 6. 实验结果 编制并调试通过的80X86汇编程序代码如下: ;================================================================= ; 电子发声设计实验 ;================================================================= ; 端口定义 IOY0 EQU 06C0H MY8254_COUNT0 EQU IOY0+00H ;8254计数器0端口地址 MY8254_COUNT1 EQU IOY0+02H ;8254计数器1端口地址 MY8254_COUNT2 EQU IOY0+04H ;8254计数器2端口地址 MY8254_MODE EQU IOY0+06H ;8254控制寄存器端口地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT FREQ_LIST DW 371,495,495,495,624,556,495,556,624 ;频率表 DW 495,495,624,742,833,833,833,742,624 DW 624,495,556,495,556,624,495,416,416,371 DW 495,833,742,624,624,495,556,495,556,833 DW 742,624,624,742,833,990,742,624,624,495 DW 556,495,556,624,495,416,416,371,495,0 TIME_LIST DB 4, 6, 2, 4, 4, 6, 2, 4, 4 ;时间表 DB 6, 2, 4, 4, 12, 1, 3, 6, 2 DB 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 12, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 6, 2, 4, 4, 12 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H ;定时器0、方式3 OUT DX,AL BEGIN: MOV SI,OFFSET FREQ_LIST ;装入频率表起始地址 MOV DI,OFFSET TIME_LIST ;装入时间表起始地址 PLAY: MOV DX,0FH ;输入时钟为1MHz,1M = 0F4240H MOV AX,4240H DIV WORD PTR [SI] ;取出频率值计算计数初值,0F4240H / 输出频率 MOV DX,MY8254_COUNT0 OUT DX,AL ;装入计数初值 MOV AL,AH OUT DX,AL MOV DL,[DI] ;取出演奏相对时间,调用延时子程序 CALL DALLY ADD SI,2 INC DI CMP WORD PTR [SI],0 ;判断是否到曲末? JE BEGIN JMP PLAY DALLY PROC ;延时子程序 D0: MOV CX,0010H D1: MOV AX,0FF0H D2: DEC AX JNZ D2 LOOP D1 DEC DL JNZ D0 RET DALLY ENDP CODE ENDS END START 整个实验记录的实验结果如下: 扬声器发出乐曲《友谊地久天长》 7. 分析讨论 这是《接口与通信》课程的第一个实验,虽然还有点陌生,但基本熟悉了80X86汇编语言 的程序设计方法,通过DOS系统中断INT21H 9号功能调用,掌握了字符串在屏幕上的显示方法。通过二进制 BCD码转换程序的设计 和上机调试,掌握了二 十进制转换的基本原理和汇编语言实现方法,只是这里针对的 2字节二进制

13,656

社区成员

发帖
与我相关
我的任务
社区描述
CSDN 下载资源悬赏专区
其他 技术论坛(原bbs)
社区管理员
  • 下载资源悬赏专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧