《微机原理与接口技术》课程设计简易电子琴设计.docx
- 文档编号:5688850
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:14
- 大小:53.57KB
《微机原理与接口技术》课程设计简易电子琴设计.docx
《《微机原理与接口技术》课程设计简易电子琴设计.docx》由会员分享,可在线阅读,更多相关《《微机原理与接口技术》课程设计简易电子琴设计.docx(14页珍藏版)》请在冰豆网上搜索。
《微机原理与接口技术》课程设计简易电子琴设计
微机原理与接口技术课程设计
简易电子琴的设计
摘要
本次设计主要是通过对电子琴主体部分的电路进行模仿设计,达到电子琴固有的基本功能,故叫简易电子琴。
利用定时器可发出不同频率的方波,不同频率的方波经喇叭就会发出不同音调。
其次,定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平,由于定时参数不同,就发出不同频率的方波,本设计中按键一次,会发出方波,松开后随之延时,但在延时的期间继续检测按键,若此时又有键被按下,若被按下的仍为原键则声音不变,否则键盘会译出被按下的另一个键的音调。
单片机控制通用MIDI音源模块制作出的电子琴,结构简单,可靠性高,并且价格低廉,具有实用的价值。
这种电子琴能够支持单音和复音弹奏,如果与高品质的音源芯片连接,音质更可与高档电子琴相媲美。
手机中通用的音乐芯片构成音源模块,效果不错,价格更低廉,如韩国产的QS6400等,这些芯片的驱动要复杂一些,需要对芯片进行初始化设置。
此外还有音乐盒、附有生日歌的生日卡片等等。
所以利用微机制作的简易电子琴在我们的日常生活中随处可见。
第一章简易电子琴的硬件设计方案
1.1简易电子琴的设计构想
⑴采用8个拨码开关为输入(其中SB1~SB7为简易电子琴的弹奏按键,另外一个SB0作为控制自动弹奏预存琴谱的开关);
⑵扬声器为输出;
⑶由输入控制输出,即拨码开关控制扬声器;
1.2简易电子琴的功能与要求
⑴功能一弹奏:
用户每按一个键盘琴键就弹奏相应的音符;
⑵功能二演奏:
按下键盘上某一个指定的建后自动弹奏预存琴谱功能;
1.3简易电子琴硬件设计方案的确定
⑴根据扬声器发声原理可知:
不同频率的方波通过扬声器可发出不同的声音。
⑵由此构想运用8253工作在方式3的状态下控制其2#计数器对应寄存器中的数值,然后将输出端口OUT2产生的方波通过扬声器转换成为声音。
⑶为了实现弹奏按键(即拨码开关)来控制扬声器,可以通过用拨码开关改变8253(工作在方式3的状态下)2#计数器对应寄存器中的数值,8253输出端口OUT2通过反相器后与扬声器相连接。
⑷最后要实现的就是将拨码开关对应的数字信号存入寄存器中
采用8255A并行接口特点,使端口A工作在方式0并作为输出口,端口B工作在方式0,并作为输入口。
将拨码开关与8255A的输入端口B相连接。
⑸可编程接口芯片
8255A芯片:
8255A的数据线、片选信号线、地址线、读写控制线等分别与系统总线相连,其中A、B、C三个端口一排针形式引出,如下图⑴所示,端口地址如表2
表18255A端口地址表
信号线
寄存口
编址
IY03
A口
60H
B口
61H
C口
62H
控制寄存器
63H
8253芯片:
系统中,8253的0通道输出线与8253的0#中断请求线作为时钟中断信号。
1#通道入口接1.8432MHz的信号源,输出接8251的收发时钟端,供串行通讯使用,这里的13计数器仅当作一个分频器使用。
2#通道以排针形式引出,开放给用户使用,如下图⑵,所示系统中的8253端口地址如表2
表28253端口地址表
信号线
寄存口
编址
IY02
0#寄存器
40H
1#寄存器
41H
2#寄存器
42H
控制寄存器
43H
图⑴
图⑵
61H 端口是8255并行接口B口的地址,由它来控制扬声器的.实际上由PB还加上一个8253定时器,通过与门之后才连到扬声器上的。
第二章简易电子琴的软件设计
2.1主程序流程图
2.2弹奏程序功能设计
DATASEGMENT
TABLE1DB4DH,45H,3DH,39H,33H,2DH,28H;1,2,3,4,5,6,7的频率
DATAENDS
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAL,82H;8255初始化
OUT63H,AL
A0:
INAL,61H
OUT60H,AL
CMPAL,00H
JZA0
CMPAL,02H;1,2,3,4,5,6,7的发音判断
JZF1
CMPAL,04H
JZF2
CMPAL,08H
JZF3
CMPAL,10H
JZF4
CMPAL,20H
JZF5
CMPAL,40H
JZF6
CMPAL,80H
JZF7
LOOPA0
F1:
MOVBX,OFFSETTABLE1;发音1
CALLFY
CALLDELAY
JMPA0
F2:
MOVBX,OFFSETTABLE1;发音2
INCBX
CALLFY
CALLDELAY
JMPA0
F3:
MOVBX,OFFSETTABLE1;发音3
ADDBX,2
CALLFY
CALLDELAY
JMPA0
F4:
MOVBX,OFFSETTABLE1;发音4
ADDBX,3
CALLFY
CALLDELAY
JMPA0
F5:
MOVBX,OFFSETTABLE1;发音5
ADDBX,4
CALLFY
CALLDELAY
JMPA0
F6:
MOVBX,OFFSETTABLE1;发音6
ADDBX,5
CALLFY
CALLDELAY
JMPA0
F7:
MOVBX,OFFSETTABLE1;发音7
ADDBX,6
CALLFY
CALLDELAY
JMPA0
FYPROC;发音子程序
A7:
MOVAL,0B6H;8253初始化
OUT43H,AL
MOVAL,[BX]
MOVAH,00H
MOVDL,25H
MULDL
OUT42H,AL
MOVAL,AH
OUT42H,AL
RET
FYENDP
DELAYPROC;延时子程序
PUSHCX
PUSHAX
MOVCX,0040H
A5:
MOVAX,056CH
A6:
DECAX
JNZA6
LOOPA5
POPAX
POPCX
MOVAL,0BAH;改变8253的控制字10111010,工作于方式5
MOVDX,43H
OUTDX,AL
RET
DELAYENDP
CODEENDS
ENDSTART
2.3自动播放预存琴谱功能程序设计
DATASEGMENT
TABLE2DB4DH,4DH,33H,33H,2DH,2DH,33H,01H
DB39H,39H,3DH,3DH,45H,45H,4DH,01H
DB33H,33H,39H,39H,3DH,3DH,45H,01H
DB33H,33H,39H,39H,3DH,3DH,45H,01H
DATAENDS
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAL,82H;8255初始化
OUT63H,AL
CMPAL,01H;扩展功能
JZF0
F0:
MOVBX,OFFSETTABLE2
JZA1
A1:
INAL,61H
CMPAL,01H
JNZA4
CALLFY;在弹奏程序中已编入可直接调用
CALLDELAY
INCBX
MOVAL,[BX]
TESTAL,0FFH;唱完一遍自动停止
JZA3
JMPA1
A3:
PUSHAX;延时
POPAX
LOOPA3
JMPA4
A4:
MOVAL,0BAH;改变8253的控制字,工作在方式5,使不发声
MOVDX,43H
OUTDX,AL
JMPA0
CODEENDS
ENDSTART
2.4简易电子琴主程序设计
DATASEGMENT
TABLE1DB4DH,45H,3DH,39H,33H,2DH,28H;1,2,3,4,5,6,7的频率
TABLE2DB4DH,4DH,33H,33H,2DH,2DH,33H,01H
DB39H,39H,3DH,3DH,45H,45H,4DH,01H
DB33H,33H,39H,39H,3DH,3DH,45H,01H
DB33H,33H,39H,39H,3DH,3DH,45H,01H
DATAENDS
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAL,82H;8255初始化
OUT63H,AL
A0:
INAL,61H
OUT60H,AL
CMPAL,00H
JZA0
CMPAL,01H;扩展功能
JZF0
CMPAL,02H;1,2,3,4,5,6,7的发音判断
JZF1
CMPAL,04H
JZF2
CMPAL,08H
JZF3
CMPAL,10H
JZF4
CMPAL,20H
JZF5
CMPAL,40H
JZF6
CMPAL,80H
JZF7
LOOPA0
F1:
MOVBX,OFFSETTABLE1;发音1
CALLFY
CALLDELAY
JMPA0
F2:
MOVBX,OFFSETTABLE1;发音2
INCBX
CALLFY
CALLDELAY
JMPA0
F3:
MOVBX,OFFSETTABLE1;发音3
ADDBX,2
CALLFY
CALLDELAY
JMPA0
F4:
MOVBX,OFFSETTABLE1;发音4
ADDBX,3
CALLFY
CALLDELAY
JMPA0
F5:
MOVBX,OFFSETTABLE1;发音5
ADDBX,4
CALLFY
CALLDELAY
JMPA0
F6:
MOVBX,OFFSETTABLE1;发音6
ADDBX,5
CALLFY
CALLDELAY
JMPA0
F7:
MOVBX,OFFSETTABLE1;发音7
ADDBX,6
CALLFY
CALLDELAY
JMPA0
F0:
MOVBX,OFFSETTABLE2
JZA1
A1:
INAL,61H
CMPAL,01H
JNZA4
CALLFY
CALLDELAY
INCBX
MOVAL,[BX]
TESTAL,0FFH;唱完一遍自动停止
JZA3
JMPA1
A3:
PUSHAX;延时
POPAX
LOOPA3
JMPA4
A4:
MOVAL,0BAH;改变8253的控制字,工作在方式5,使不发声
MOVDX,43H
OUTDX,AL
JMPA0
FYPROC;发音子程序
A7:
MOVAL,0B6H;8253初始化
OUT43H,AL
MOVAL,[BX]
MOVAH,00H
MOVDL,25H
MULDL
OUT42H,AL
MOVAL,AH
OUT42H,AL
RET
FYENDP
DELAYPROC;延时子程序
PUSHCX
PUSHAX
MOVCX,0040H
A5:
MOVAX,056CH
A6:
DECAX
JNZA6
LOOPA5
POPAX
POPCX
MOVAL,0BAH;改变8253的控制字10111010,工作于方式5
MOVDX,43H
OUTDX,AL
RET
DELAYENDP
CODEENDS
ENDSTART
第三章简易电子琴的安装与调试
3.1硬件调试
⑴连接简易电子琴系统的电路图
拨码开关SB0~SB7与8255A的PB输入端口连接,将8253的CLK2与试验箱上的脉冲源连接,最后把82553的输出端OUT2通过反相器后接到扬声器。
(由于GATE2端空载时保持高电平,所以不必连接)。
⑵将实验箱与微型计算机保持串口通讯成功。
⑶将汇编程序代码输入微型计算机进行硬件调试。
3.2软件调试
⑴把弹奏功能的程序代码输入微型计算机,与硬件相结合进行修改调试(其中主要运用跳转、循环和条用指令)。
⑵在实现弹奏功能的程序中再加入自动播放预存琴谱功能的程序程序,进行调试。
心得与体会:
在为期一周的微机原理课程设计中,我学会了制做项目的一般步骤。
第一部是硬件设计主要是实现控制对象与被控制对象之间的联系。
第二步就是软件设计,就是要完成各个可编程芯片与CPU之间的数据传送和各个进程的逻辑顺序。
在本次设计中对硬件要求就要熟练掌握可编程器件8255A和8253的应用。
对软件设计就要熟练掌握汇编语言。
由于时间限制的问题和硬件的局限性也只能将电子琴的功能简易化。
参考文献:
1.《微机原理里与接口技术》(第2版)彭虎、周佩玲、傅忠谦、编著
电子工业出版社
2.《汇编语言与接口技术》王让定陈金儿叶富乐史旭华编著
清华大学出版社
3.《汇编语言程序设计》相伟主编徐小平李珍香副主编
中国水利水电出版社
4.《微机原理试验指导书》武汉理工大学华夏学院
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与接口技术 微机 原理 接口 技术 课程设计 简易 电子琴 设计