- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微机接口实验设计
山西大学计算机与信息技术学院
实验 专业班级 2 计算机科学与技术 实验日期 批改日期
编辑自选音乐,并利用TD-PITA教学实验系统中的8253和扬声器实现音乐外放。
通过8259芯片控制切换八首乐曲的播放。
在播放过程中可随时随意切换歌曲。
3. 音乐外放效果要求节奏感强、清晰、易于识别,减少由于扬声器的失真导致的音调不准。
二、设计分析(包含原理,实现的方法,程序设计思路等)
1. 要使扬声器发出不同的音调,就得输入不同频率的波形。通过给8253定时/计数器装入不同的计数值,可以使其输出不同频率的方波。经过放大器的放大作用,便可驱动扬声器发出不同的音调,只要插入一段延时程序之后,再将扬声器切断,音调的声音就可以持续一端时间。
2.在音乐播放过程中,可通过8259中断控制芯片控制音乐播放,达到切换音乐的功能,使音乐盒功能更加完善。
3.通过8259 ocw2来改变中断优先级,每次将本次中断自动降为最低优先级来达到可随意切换曲目的目的。
4.将音调与延时一起编如数据表中,在程序运行过程中音调延时直接读入CX计数器,减少重复音符的读取次数,使音质更加流畅。
以下为音符换算计数值的过程
音阶频率对照表如下:
(2)由上表我们可以看到各音符的频率,通过公式(1162500/频率),然后转换成十六进制数即可以得到相应音符的十六进制计数值。(在这里不除以十进制的37,也即十六进制的25,因为会造成音乐的失真)。
得到的响应十六进制数如下表:
音符
十六进制数
音符
十六进制数
音符
十六进制数
低1DO
1155
中1DO
08AE
高1DO
0457
低2RE
0F72
中2RE
07DB
高2RE
03DD
低3MI
0DC2
中3MI
06E4
高3MI
0372
低4FA
0D02
中4FA
0681
高4FA
0340
低5SO
0B95
中5SO
05CA
高5SO
02E5
低6LA
0A52
中6LA
0529
高6LA
0294
低7SI
0931
中7SI
0498
高7SI
024C
利用程序进行乐谱的转换
在对乐谱进行转换时,考虑到会对很多乐曲进行转换,于是使用CV6.0通过C++语言编写了一个转换程序。该程序可以将按一定规则(以下会有介绍)简单翻译后的乐谱转换为机器可以识别的十六进制数,并将翻译好的结果写入自定义的文件中。
程序功能:1.被除数频率可以进行设置,默认值为1.1625MHz
2.读入文件中的按一定规则(以下会有介绍)简单翻译后的字符
3.对读入的字符求取相应的十六进制数
4.对相同的音符进行计数,先输出相应的音调延时计数值,后接对应的音调计数值。
例如:0008 08AE 指的是8个中音1DO。
5.将转换好的十六进制数写入制定的文件
音符简单翻译规则如下:
(该程序设计时是以十六分音符为单位计数,主要为4/4拍乐符设计)
音符
低音
中音
高音
对应延时数(以十六分音符延时为单位)
四分
A
B
C
4
八分
D
E
F
2
十六分
G
H
I
1
组成格式:表中字母+音符(1~7)
例如:四分音符高音1 表示为 C1
程序分析:
程序中利用三个一位的数组分别存放了高、中、低音的七个频率。
程序每次从文件读入两个字符,一个是A~G的字母,一个是对应1~7音符。
读入后对字母通过表达式(字符%3)来判断是表中的低音,中音还是高音,即表中的列,通过表达式4/((字符-62)/3)来判断对应的延迟(十六分音符个数),也即行。
通过字母确定音的高中低及延时后,对应读入的数字(即音符1~7)计算出相应的音调计数值转为十六进制。
每一次读入的,均要和下一个读入的数据进行比较,如果是同一音调,则进行合并,延迟相加。否则输出到文件
三、程序流程图
主程序流程图
中断子程序流程图
播放子程序流程图
程序代码
通过自编的程序,我们翻译出来8首歌曲,由于当时效果不是很理想,于是最后一节实验课当场翻译了两首歌曲:《白狐》和《我的中国心》。并通过KK1和KK2进行切换歌曲。
课后我们设计实现了八个按钮来控制播放8首歌曲的程序,由于歌曲代码过多,所以在此省略。
在老师的支持和帮助下调试成功。
STACK SEGMENT STACK
DD 128 DUP(?)
STACK ENDS
DATA SEGMENT
TABLE0 DB NAME1
您可能关注的文档
最近下载
- SCADA(电力监控)系统介绍.pptx VIP
- 2025年机关事业单位工人汽车驾驶员高级、技师国家题库练习题(附答案).docx VIP
- 班级生活有规则教学设计.doc VIP
- CMF中国宏观经济分析与预测报告(2025年中期) 稳舵远航的中国宏观经济.docx
- QGDW 11399-2015 架空输电线路无人机巡检作业安全工作规程.docx VIP
- 中国药物性肝损伤诊治指南2023版解读.pptx VIP
- 施工测量专项施方案.doc VIP
- 2024年春季四川凉山州普格县一村一幼辅导员招聘74人笔试备考题库及答案解析.docx VIP
- 防爆电气安装规范及验收标准制定.docx VIP
- 市政集团笔试题库及答案.pdf
文档评论(0)