网站大量收购独家精品文档,联系QQ:2885784924

单片机-电子琴演奏.docx

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机-电子琴演奏

目录目录1一、设计内容2二、方案讨论2三、电路原理图3四、程序设计6五、电子琴发声原理9六、调试结果9七、电子琴程序10八、参考文献18一、设计内容(一)设计题目:电子琴演奏(二)目的要求使用4×4矩阵式键盘设计出16个音符,随意弹奏。2) 用功能键可转换成3首不同的歌曲演奏。二、方案讨论(一)方案一:用4×4矩阵式键盘控制16个音符,用三个独立按键作为功能键,实现三首不同歌曲的演奏。方案二:通过一个开关控制4×4矩阵式键盘的功能转换,同时控制16个音符和歌曲的演奏。方案一虽然用的按键相对较多,但是整体结构简单明了,便于理解和编程,而且音符和歌曲两部分不易产生干扰;方案二结构紧凑,电路简单,但程序较为繁琐,易产生干扰。故采用第二种方案。(二)方案图LM386功放驱动电路复位电路时钟电路自动音乐播放的三个独立按键电路16个音符的4×4按键电路AT89C52 (三)面板布置图(四)设计任务1)电路结构设计 在PROTEUS中绘制电子琴各部分的电路,能量流要正确。2)软件设计 用汇编语言编写程序,实现电子琴的功能3)调试仿真 将编译生成的.hex文件导入芯片,进行仿真。三、电路原理图(一)时钟电路(二)复位电路(三)功放驱动电路及LM386(四)4×4矩阵式键盘电路(五)三个控制自动音乐播放的独立按键电路(六)整体电路开始四、程序设计(一)主程序框图结束自动音乐播放程序16音阶程序NY音乐播放按键是否按下?程序初始化(二)16音阶程序框图返回NNYY(三)T0中断服务程序框图(四)自动音乐播放程序框图音乐播放程序识别按键功能取简谱码开中断,设置工作方式取节拍NSTOPYA=0?INC DPTRYA=0FFH?N插乐谱表,给定时器赋值计时,进入中断延时退出中断五、电子琴发声原理一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示:音符频率(HZ)简谱码(T值) 音符频率(HZ)简谱码(T值)低1 D 4 FA1 DO 5 S2 R 5 SO2 RE 6 L 3 693264994低 4 F 7 S 4 FA 1 DO104665058低 5 S 1 DO#110965085# 5 SO 2 RE117565110低 6 L# 2 RE#124565134# 646664463高 3 M131865157低 7 S 4 FA139765178中 1 D 4 FA#148065198# 1 DO 5 SO156865217中 2 R 5 SO#166165235# 2 RE 6 LA176065252中 3 6186565268中 4 F 7 SI196765283六、调试结果在Keil软件中进行了程序的编写、调试以及编译,软件显示程序没有错误。将Keil软件编译生成的.hex文件导入芯片中进行仿真,很好的实现了16个音阶的演奏,乐曲播放部分的功能实现的不是特别好。七、电子琴程序 T0TH EQU 24H ;T0两个暂存变量 T0TL EQU 23H KEYBUF EQU 30H STH0 EQU 31H STL0 EQU 32H TEMP EQU 33H ORG 00H LJMP MAIN ORG 0BH LJMP INT_T0 ORG 001BH LJMP INT_T1MAIN: MOV P2,#0FFH MOV A,P2 LCALL DELAY CPL A JNZ JIMP1 JZ JIMP2JIMP1: LCALL START2 ;如果控制音乐的键按下,跳转到音乐程序,否则执行音阶程序JIMP2: LCALL START1;**********音阶程序*********START1:MOV TMOD,#01H ;设置T0的工作方式 SETB ET0 SETB EAWAIT1:MOV P3,#0FFH ;P3为输入模式 CLR P3.4

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档