基于单片机实现的八音盒设计.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8051八音盒 课程设计任务书 8051八音盒 本设计利用8051单片机结合内部定时器LCD设计一个八音盒,按下单键可以演奏预先设置的歌曲旋律。本设计可以学习8051定时器程序设计,按键扫描及歌曲旋律简单直觉式输入法的设计方法。 其基本功能为:1使用LCD显示器来显示目前演奏的歌曲编号;2具有16个按键操作来选择演奏哪一首歌曲;3内建10首歌曲旋律,按下单键可以演奏歌曲;4演奏时可以按键中断。程序执行后工作指示LED闪动,表示程序开始执行,按下单键0~9便可以演奏歌曲,歌曲演奏中,可以按键中断。 设计项目简介 设计思路: 选择8051单片机,通过T0定时中断,并配合P3.0引脚输出音频频率。 P3.0引脚输出接扬声器。 通过P3.4引脚接入中断按键,进行中断 通过P0接8155外扩端口。 通过8155PA口接LCD驱动电路芯片,再接显示器。 8155的PB,PC口接键盘,输入歌曲号。 音符产生方法: 不同的音调有不同的频率。频率不同,音调也就不同。 利用定时器,使其工作在模式1,定时中断,然后控制P3.0引脚的输出每次取反,就可以在P3.0的引脚输出相应的方波频率。改变计数初值,就改变了频率。定时器的定时时间等于半个周期,定时时间到就输出脉冲取反,重复此过程,就可在P3.0引脚得到一音频的脉冲。 如:中音1的频率=523HZ,周期T=1/523=1912us; 定时器的定时时间为:T/2=1912/2us=956us; 计算得TH0,TL0的计数初值THTL=64580 下面是个音符计数初值 音符 THTL 音符编码 低音5 0F66FH 1 低音6 0F724H 2 低音7 0F81BH 3 中音1 0F88FH 4 中音2 0F95EH 5 中音3 0FA17H 6 中音4 0FA6BH 7 中音5 0FB08H 8 中音6 0FB92H 9 中音7 0FC0EH A 高音1 0FC4BH B 高音2 0FCAFH C 高音3 0FD0CH D 高音4 0FD36H E 高音5 0FD84H F 节拍产生方法: 音乐中的节拍用延时时间产生。假设1/4拍执行一次延时程序,这1/2拍就执行两次延时程序,所以只要求出1/4延时时间,其余的节拍就是他的倍数。为方便记谱,将节拍数也进行编码,如下: 节拍编码 节拍 1 1/4 2 1/2 3 3/4 4 1 建立曲谱编码表: 编谱用8位编码,高4位代表音符,低4位代表节拍。如5 6中音5,中音6,都是1/2拍,则编码为:82H 92H 电路原理图: 系统功能简介: 8051八音盒具有4乘4键盘,由于选歌旋律。有LCD显示,显示当前正在播放的旋律。 有中断按键,在单片机播放旋律时可以按中断暂停,再选歌曲旋律。有LED指示,其随旋律的节拍而变化。 程序框图: 程序清单: ORG 0000H SJMP MAIN ORG 0100H MAIN:SETB EA SETB EX1 ;开外部中断int0 MOV DPTR,#8000H MOV A,#30H MOVX @DPTR,A ;令8155a,b为输出,c为输入 MOV R7,#0BH ACALL SCREEN ;显示器初始化为00 DISPLAY:ACALL SCAN ;扫描键盘 ACALL SCREEN ;lcd显示 CJNE R7,#0FFH,NEXT ;判断中断是否选中曲目 SJMP DISPLAY ;没选中,即无按键 NEXT:ACALL MUSIC ;选中曲目在r7中 CLR R7 SJMP MAIN ;再次扫描 END ORG 0200H ;scan子程序 SCAN:MOV DPTR,#8002H ;dptr指向b口 MOV A,#00H MOVX @DPTR,A ;使b口输出低电平 MOV DPTR,#8003H ;dptr指向pc口 MOVX A,@DPTR ;读pc口状态 ANL A,#0FH ;屏蔽高4位 CJNE A,#0FH ;若有键按下,则keyscan SJMP EXIT ;无键按下,则exit KEYSCAN:ACALL DY12MS ;延时12ms去抖动 MOV R2,#0EH ;列扫描始值给r2 MOV R3,#04H ;列数4给r3

文档评论(0)

mx597651661 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档