简易电子琴设计文档.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
简易电子琴设计文档

1 设计任务描述 1.1 设计题目: 简易电子琴设计 1.2 设计内容 利用微机原理试验箱,设计简易电子琴,要求至少可以弹出7个音阶。 1.2.1 设计目的 通过本学期对微机原理的学习,掌握的知识还停留在理论的上。但是这是一门实践性较强的课程,让学生在学完该课程之后,进行一次课程设计,使学生将课堂所学的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。 通过设计实践,培养学生查阅专业资料,工具书或参考书,了解有关工业标准,掌握现代设计手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。 通过设计,不但要培养和提高学生解决工程具体问题,动脑动手的技术工作能力,而且还要逐步建立科学正确的设计和科研思想,培养良好的设计习惯,牢固树立实事求是和严肃认真的工作态度。1.2.2 基本要求 1.可以弹出7个音阶。 2.弹奏简短音乐。 3.通过改变键盘输入来改变8254输出频率,实现扬声器发音 2 设计思路 通过8255和8254来实现电子琴模拟, 主要由两部分组成:第一部分为键盘扫描,用来确定按键位置,并给计数器赋初值。第二部分为发声部分,由计数器1#的输出端产生一定频率的方波驱动扬声器发声。 其中8254和课本中学的8253在原理上是一样的,它为可编程定时器/计数器。利用计数器0,并使它工作在方式3---输出对称方波,通过改变频率来实现不同的发声高低,再调用延时子程序来实现发音的长短,把输出方波送到扬声器,至此实现不同的音符发声。 过程中主要用到了8255芯片的PB0—PB4,PA0—PA4它们分别与键盘单元的X1—X4,Y1—Y4相连,其中B口低4位为输出端,B口低4位1为输入端。由它们对键盘单元进行扫描,并确定键值工作过程为:先给所有列线输入低电平,然后读取行线,检测行线是否为低电平,如果有某条行线输出低电平,则说明该键盘有按键被按下,否则,说明无按键被按下.采用这种方法可以快速判断键盘是否有键按下。在检查到有键按下后,再通过行扫描法判断按下的位置,从而确定按下的是什么键,经过计算得出计数器1#的初值。 3 设计原理流程图 4 实际硬件接线图 5 源程序清单及注释 MY8255_A EQU 0600H MY8255_B EQU 0602H MY8255_C EQU 0604H MY8255_MODE EQU 0606H MY8254_MODE EQU 06C6H MY8254_A EQU 06C0H ;进行宏定义 DATA SEGMENT FREQ_LIST DW 441D,495D,556D,589D,661D,742D,833D,882D DW 262D,294D,330D,373D,402D,450D,494D,-1D DATA ENDS ;建立数据段 CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX ;实现段寄存器DS的初始化 MOV DX,MY8255_MODE MOV AL,81H OUT DX,AL ;写8255芯片的控制字实 现工作在方式0,A端口 和B端口输出,C端口输入 MOV DX,MY8254_MODE MOV AL,36H OUT DX,AL ;使8254工作在方式3, A口输入,运用计数器0,二进制方式 BEGIN: CALL CCSCAN ;扫描 JNZ INK1 ;有键按下时跳到INK1 JMP BEGIN ;没键按下时循环执行 BEGIN 确定按下键的位置 INK

文档评论(0)

robert118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档