1、电子音乐盒1、设计任务和要求 .12、总体设计 .13、硬件设计 .23.1 硬件电路 .23.2 原理说明 .24、软件设计 .35、仿真、安装和调试 .36、收获与体会 .4参考文献 .5附件 1:元件清单 .6附件 2: 总电路图 .7附件 3:音乐程序 .8单片机课程设计报告音乐盒设计1、设计任务和要求(1)利用 I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演乐曲(内存两首乐曲)。(2)采用七段数码管显示当前播放的歌曲序号。(3)可通过功能键选择乐曲,暂停,播放,上一曲,下一曲。2、总体设计(1)要产生音频脉冲,只要算出某一音频的周期(1/音频),然后将此周期除以 2,
2、即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的 I/O反相,然后重复计时此半周期时间再对 I/O口反相,就可在 I/O脚上得到此频率的脉冲(2)利用 8051的内部定时器使其工作在计数器模式 MODE1下,改变记数值TH0及 TL0以产生不同频率的方法。例如频率为 523HZ,其周期 T=1/523=1912微秒,因此只要令计数器定时 956/1=956在每记数 9次时将 I/O口反相,就可得到中音 D0(523HZ)。记数脉冲值与频率的关系公式如下:N=Fi/2/Fr N:记数值Fi:内部计时一次为 1微秒故其频率为 1MHZFr;要产生的频率(3):起记数值的求
3、法如下:T65536N65536Fi2Fr例如:设 K65536,F1000000Fi1MHZ,求低音 D0(523HZ) ,高音的D0(1046HZ)的记数值。T65536N65536Fi2Fr6553610000002Fr65536500000Fr单片机课程设计报告低音 D0的 T6553650000026263627中音 D0的 T6553650000052364580低音 D0的 T655365000001047650593、硬件设计3.1 硬件电路本设计中用到 89C51单片机,喇叭,七段显示数码管 LED。 (硬件电路原理图如图 1所示)3.2 原理说明当键盘有键按下时,判断键值,
4、启动计数器 T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器 T1,显示歌曲号。(1) 硬件电路中用 、 分别接 S1、S2 作为上、下一曲的功能键0INT1(2) 用 P1.0-P1.6控制七段码 a,b,c,d,e,f。(3) 用 P2.0口控制喇叭。(4) 电路为 12MHZ晶振频率工作,起振电路中 C1,C2均为 30pf。单片机课程设计报告XTAL218XTAL119ALE30EA31PSEN29RST9P0./AD039P0.1/A138P0.2/AD237P0.3/A336P0.4/AD435P0.5/A534P0.6/AD63P0.7/A732P1.01P1.2P
5、1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TX1P3.2/INT012P3./IT113P3.4/T014P3.7/RD17P3.6/W16P3.5/T115P2.7/A1528P2.0/A821P2.1/A92P2./A1023P2.3/A124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51R11kC130pFC230pF X1CRYSTAL1234567816151413121109RN1RX8C310uFR310kR41k VCLS1SOUNDERQ12N2905R515VCR65.k图 1 音乐盒原理图4、软
6、件设计本程序可以实现课程设计的基本要求,并可以通过按键播放两首歌曲,程序流程图如下:单片机课程设计报告开始初始化设置音节起始位置设置节拍间距读取音阶,音符显示当前播放歌曲序号节拍结束音乐结束5、仿真、安装和调试按照上面设计的电路在 proteus软件内画图, 打开单片机软件开发系统Keil,选择 89c51单片机,在其中编写程序,运行生成一个后缀名为 hex的文件,然后将该文件下载到 proteus中的 AT89c51单片机中进行仿真,观察实验现象。仿真能实现播放音乐,按键选择曲目,暂停,播放功能。仿真成功后,安装好实验板,然后将音乐程序下载到电路板内 ,观察结果。能实现播放音乐,按键换曲等功
7、能。程序调试中出现的问题及解决的办法:(1) 有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现是因为程序中有的指令书写得不规范导致的,例如有的 RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。单片机课程设计报告(2) 程序中的跳转指令的运用很重要,为保险起见,都用 LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。当用 JNZ指令时,跳转范围比较少,这时要用一个标号中转。(3) 编程时要注意,在程序开始时,要写入各定时器中断的入口地址。(4) 编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。(5) 编程前要加流程图,
8、这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着 MP3的工作方式列写流程图。(6) LCD 计时正常显示的解决办法:a. 两个定时器同时工作,存在中断时序问题,刚开始时我们把定时器 1设定在方式 3,计 250us,由于定时中断过于频繁,使 CPU负载过大,导致音乐不能正常播放,时间不能正常显示。解决办法:将定时器 1设定在工作方式 1,16 位计数,计 50ms,效果有很大改观。但还有问题。b. 当音乐为全 4拍起始时,此时音乐节奏与定时器 T1中断频率错开,LCD显示和音乐播放都会好一些。c. 另外,在歌曲中,当遇到一个音符发音为 4拍,在编曲中为*CH,因时间较长,当定时器 T1
9、此时来中断时,就会对歌曲播放产生影响,若改为发音一拍,中断对歌曲播放影响减弱,但音乐效果变差。改进方案:若采用可以定时时间更长的单片机,可以避免所有问题。6、收获与体会(1) 上学期学习单片机的课时不多,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,明显的改善了,首先对于硬件电路的工作原理有了进一步的学习,同时有了一个提升;软件方面,在程序的设计,程序的调试方面都有了很大的进步。(2) 在一个好的氛围里才能踏下心来做东西,在这一段时间里,寝室成员都认真对待这次课程设计,除了自己做好自己的课题外,在遇到不懂的地方互相讨论,查阅资料,互助解决问题。另外在编程中出现问题时,一定要戒
10、骄戒单片机课程设计报告躁,脚踏实地,认真看书,仔细分析,仔细调试,就一定会发现错误。我们也是这么做的,这一点在这次的课程设计中十分重要。(3) 通过这次课程设计,我体会到了成功的喜悦,听着自己设计的程序下载到单片机中播放出音乐,心理非常自豪。这次的课程设计在一定程度上改变了我学习单片机这门课程的态度,从最初的认为学它没有什么实际意义,到如今爱上单片机学习,并希望能将理论运用到实践,设计出更好更完整的系统。我明白了一个人要想做好一件事,就必须具备自信心,耐心,还要有毅力,要胆大心细,要勇于尝试,要手脑并用,最后才能交出一份令人满意的答卷。参考文献1 许珉.单片机原理及应用M.北京:中国电力出版社
11、,2007.082 三恒星科技.MCS-51 单片机原理与应用实例M. 北京:电子工业出版社,2008.013 王为青,程国钢.单片机 Keil Cx51应用开发技术M. 北京:人民邮电出版社,2007.024 John Markus.电子电路大全M.北京:计量出版社,19955 阎石.数字电子技术基础M.北京:高等教育出版社,1998.12,第 4版6 邓元庆.数字电路与逻辑设计M.北京:电子工业出版社,20017 http:/ 1:元件清单名称 数量(个) 型号 备注单片机课程设计报告电阻 6排阻 RX8(1个)1k(2 个),5.5k(1个),10k(1 个),15(1个)数码管 1 7
12、SEG-DIGITAL开关 4 BUTTON单片机 1 AT89C51三极管 1 2N3906扬声器 1 SPEAKER电源 2 5V电容 3 30pf(2个),10uf(1 个)晶振 1 CRYSTAL单片机课程设计报告附件 2:总电路图XTAL218XTAL119ALE30EA31PSEN29RST9P0./AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD63P0.7/AD732P1.01P1.2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD1P3.2/INT012
13、P3./INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A92P2./A1023P2.3/A124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51R11kC130pFC230pFX1CRYSTAL1234567816151413121109RN1RX8C310uFR310kR41kVCLS1SOUNDERQ12N2905R515VCR65.k单片机课程设计报告附件 3:音乐程序OUT BIT P2.0 ;定义音频输出端口,p2.0N EQU 6 ;歌曲总数OUT_NUM EQU P
14、1 ;数码管显视当前所放歌曲曲数ORG 0000HAJMP MAINORG 0003HAJMP LAST_SONG ;外部中断 0用于接上一曲歌按键ORG 000BHAJMP F_T0 ;定时器 0用于定时,作音符发生器用ORG 0013Hq4: AJMP NEXT_SONG ;外部中断 1接下一曲歌按键ORG 001BHAJMP START_PAUSE ;定时器 1用计数,这里用作中断,接开始/暂停键,初值为 0ffH,方式 2ORG 0030HMAIN: MOV SP,#60HMOV DPTR,#TABLE ;DPRT指向每首歌曲的入口地址的地址。MOV R0,#30H ;R0中存入数据
15、30H,这里在以30H开始的单元存放每首歌曲的入口地址,其中 30H,31H存放;歌曲的节拍入口地址,32H,33H 存放歌曲音符入口地址,每首歌占用四个存储存单元。MOV R5,#00H ;R5中存放表 TABLE中正在执行操作的序号MOV R6,#1 ;R6存放正在设置入口信息的歌曲数SET_TAB: MOV A,R5 ;设置每首歌曲的入口信息,存放在以 30H开始的存储单元中。MOVC A,A+DPTRMOV R0,AINC R5INC R0MOV A,R5MOVC A,A+DPTRMOV R0,AINC R5INC R0MOV A,R5MOVC A,A+DPTRMOV R0,AINC R0INC R5