中州大学
《 单片机 》
课程设计报告
报告题目: 音乐播放器 作者所在系部: 工程技术学院 作者所在专业: 电气自动化 作者所在班级: B10204 作 者 姓 名 : 张强
作 者 学 号 : 20104020416 指导教师姓名: 雷刚
完 成 时 间 : 2014年10月12日
0
少年易学老难成,一寸光阴不可轻 -
课程设计任务书
课题名称 指导教师 王晓 职称 音乐播放器的设计 副教授 学生姓名 张婷 完成时间 班 级 6.12 B10204 总体设计要求和技术要点 利用单片机设计一个音乐播放器,并能够播放三种音乐,音乐自行设计。 一、设计目的 1.掌握单片机定时器的使用方法 2.掌握单片机扩展显示器、键盘的方法 二、技术指标 1.键盘设置3种音乐的播放切换; 2.LED显示3种音乐的提示符; 3. 流水灯闪烁 工作内容及时间进度安排 第14周: 周1到周2查阅资料,确定设计方案 周3到周4编写程序并进行proteus仿真 周5焊接调试 第17周: 周1撰写实验报告 周2验收 课程设计成果 1.与设计内容对应的软件程序与焊接实物 2.课程设计报告书
1
少年易学老难成,一寸光阴不可轻 -
内 容 摘 要
本文的主要内容是用ATC52单片机为核心控制元件,设计一个音乐播放
器,以单片机作为主控核心、蜂鸣器等模块组成。
利用单片机产生不同频率来获得要求的音阶,最终可随意编写需要的程序,播放出音乐。在此设计中我采用12MHz的晶振,产生的频率信号即音乐信号由P3.7口输出,信号经过放大后由喇叭发出声音。设有四个按键,其中两个能实现多首音乐的选择,另一个能实现开始功能和单曲重播的功能,最后一个能实现复位和关闭歌曲的功能。设有一位数码管,每选择一首曲子能在数码管上显示当前的曲目(只是数字)。设十六个发光二极管,能随歌曲频率闪烁。
关键字:单片机 音乐 不同频率 按键
2
少年易学老难成,一寸光阴不可轻 -
目 录
一、 概 述 ……… ……………………………………………………… 1 二、方案设计与论证………………………………………………………………1 1.硬件设计……………………………………………………………………1 2.软件设计……………………………………………………………………2 三、单元电路设计与分析…………………………………………………………3
1.单片机最小系统……………………………………………………………3
2. 数码管显示…………………………………………………………………4 3.发光二级管和按键…………………………………………………………4 4.蜂鸣器发声 ………………………………………………………………5 5.软件部分程序和流程图……………………………………………………… 5 四、总原理图及元器件清单………………………………………………………11 1.总原理图 …………………………………………………………………11 2元器件清单…………………………………………………………………11 五、结论………………………………………………………………………… 12 六、心得体会…………………………………………………………………… 12 七、参考文献…………………………………………………………………… 12
3
一、概述
作为单片机的重要硬件资源之一,利用定时器可以产生各种固定频率的方波信号,也可以产生包括“Do“、“Re“、“Me“--等音阶在内的各种频率声音。在此设计中我们采用12MHz的晶振,产生的频率信号即音乐信号由P3.7口输出,信号经过放大后由蜂鸣器发出声音。
乐曲中,每一音符对应着确定的频率,我们可以参照给出的各音符频率及其相应的时间常数来编写程序,根据表中所提供的常数,将其16进制代码送入芯片里,可以奏出音符。音符的节拍我们可以用定时器T0来控制,送入不同的初值,就可以产生不同的定时时间。便如某歌曲的节奏为每分钟94拍,即一拍为0.秒。其它节拍与时间的对应关系也可以从两者关系表中得到。
定时器T0工作在定时方式1,改变TH0及TL0,产生不同的音频频率。要编写的乐谱按要求以音符字节数据表的形式存放在程序中,改变乐曲就是通过改变该数据表的内容来实现的。主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序和音长子程序,启动定时器T0进行工作。
二、方案设计与论证 1. 硬件设计
电路以ATC52单片机为核心控制元件,P3.7口的蜂鸣器播放歌曲,P3.3、P3.4、P3.5口的三个按键实现开始/单曲重播,上一首,下一首的功能。P1口的一位数码管显示播放歌曲的曲目号。P2口发光二级管闪烁增加音乐播放的情调。
图2.1 ATC52引脚图 0
2. 软件设计
(1) 要生产音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间.利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲.
(2)利用8051的内部定时器使用其工作在计数器模式MODE1下,改变计数值THO及TLO以产生不同频率的方法.
(3)例如频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每次计数956次时将I/O反相,就可得到中音DO (523Hz). 计数脉冲值与频率的关系公式如下: N=Fi÷2÷Fr ………………1.1 N: 计算值; Fi: 内部计时一次为1us, 故其频率为1MHz;
(4)其计数值的求法如下:T=65536-N=65536-Fi÷2÷Fr ………1.2
例如: 设K=65536, F=1000000=Fi=1MHz, 求低音DO(261Hz).中音DO (523Hz). 高音的DO (1046Hz)的计算值. T=65536-N=65536-Fi÷2÷Fr=65536-1000000÷2÷Fr=65536-500000/Fr。低音DO的 T=65536-500000/262=63627,中音DO的T=65536-500000/523=580,高音DO的T0=65536-500000/1047=65059
(5)C调各音符频率与计数值T的对照表如表1所示.
表1 C调各音符频率与计数值T的对照表
音符
频率(HZ) 简谱码(T值)
63628 63731 63835 63928 021 103 185 260 331 400 463 524 580
音符
频率(HZ) 简谱码(T值)
860 8 934 968 994 65030 65058 65085 65110 65134 65157 65178 65198
低1 DO 262 #1 DO# 277 低2 RE 294 #2 RE# 低 3 M
311 330
# 4 FA# 740 中 5 SO 784 # 5 SO# 831 中 6 LA 880 # 6
932
中 7 SI 988 高 1 DO 1046 # 1 DO# 1109 高 2 RE 1175 # 2 RE# 1245 高 3 M
1318
高 4 FA 1397 # 4 FA# 1480
低 4 FA 349 # 4 FA# 370 低 5 SO 392 # 5 SO# 415 低 6 LA 440 # 6
466
低 7 SI 494 中 1 DO 523
1
(6)每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,表2为节拍与节拍码的对照.如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间.假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推.所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如表3为1/4和1/8节拍的时间设定。
三、单元电路设计与软件分析
1.单片机最小系统
图3.1 最小系统
(1) 时钟源电路
单片机内部具有一个高增益反相放大器,用于构成振荡器。通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,结构如图1。可以根据情况选择6MHz、12MHz等频率的石英晶体,补偿电容通常选择22pF左右的瓷片电容。 (2) 复位电路
单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。其结构如图1。上电自动复位通过电容C3充电来实现。手动按键复位是通过按键将电阻R1与VCC接通来实现。
2
2.数码管显示
图3.2 数码管显示 当有键按下时,数码管显示当前的曲目。
3.发光二级管和按键
美感。
P3.3、P3.4和P3.5口的按键作用分别是播放重复的曲子也可开启播放,播放上一曲,播放下一曲。
图3.3 发光二级管和按键 当接通电源,单片机运行时,十六个发光二级管随着不同的调子闪烁,增加
3
4.蜂鸣器发声
图3.4 蜂鸣器
利用单片机的P3.7口产生不同音调所对应的方波来使蜂鸣器发声,实际焊接中用了PNP三级管来驱动。
5.软件部分程序和流程图
Y N
开始 初始化 查表调音符数据 用延时产生节拍 调键盘程序 开中断 一首曲子播完? 4
软件系统程序: ORG 0000H AJMP LOOOOP ORG 000BH AJMP TIM0 ORG 001BH RETI ORG 0023H LOOOOP:
MOV A,#01H
LOOOP: MOV P1,#3FH MOV P2,A RL A MOV R2,#0FFH
DELAY0:
MOV R3,#0FFH DJNZ R3,$ MOV R4,#0FFH DJNZ R4,$ DJNZ R2,DELAY0
JNB
P3.3,START
LJMP LOOOP
START: MOV P1,#06H
MOV R5,#00H ; MOV TMOD,#00010001B MOV IE,#10101010B
MOV DPTR,#TAB2 ; MOV 30H,DPL ;DPTR MOV 31H,DPH ;DPTRSTART1: INC R4 ; MOV A,#01010101B
MOV B,R4
MUL AB ;8 MOV P2,A MOV DPL,30H MOV DPH,31H
5
初始化 装第一首歌
低8位送30H暂存高8位送31H暂存产生8位随机数 位随机数由P2口输出
MOV A,#00H
MOVC A,@A+DPTR ;查表
MOV R0,A ;音符数据送R0崭存 MOV A,#00H INC DPTR
MOVC A,@A+DPTR ;查表
MOV R1,A ;节拍数据送R1崭存 INC DPTR MOV 30H,DPL MOV 31H,DPH
CJNE A,#01H,ELECT ; INC R5
LJMP KEYWORK ; ELECT: JZ START ; MOV A,R0 JNZ SING CLR TR0 SETB P3.7
LOOP1: ACALL DELAY ; DJNZ R1,LOOP1 SJMP START1
SING: MOV DPTR,#TAB1 ; DEC R0 ; MOV A,R0 MOV B,#02H MUL AB MOV R0,A
MOVC A,@A+DPTR ; MOV 21H,A INC DPTR MOV A,R0 MOVC A,@A+DPTR MOV 20H,A MOV TL0,20H
6
一首歌没结束转ELECT 结束歌曲计数器加1 所有歌曲结束转START循环调用延时子程序 音符表首址送DPTR 计算音符 查表
MOV TH0,21H
SETB TR0 ;开T0定时器 LOOP2: ACALL DELAY DJNZ R1,LOOP2 AJMP START1 TIM0: MOV TL0,20H MOV TH0,21H CPL P3.7
RETI ; DELAY: MOV R2,#70 DELAY1: MOV R3,#252 DJNZ R3,$
JNB P3.3,AGAIN
JNB P3.4,FORM ; JNB P3.5,NEXT ; DJNZ R2,DELAY1 RET
AGAIN: JNB P3.3,$
LJMP KEYWORK
FORM: CLR EA ; JNB P3.4,$ ; CJNE R5,#00H,ZERO ; MOV R5,#04H ;曲计数器
SJMP KEYWORK
ZERO: DEC R5 ; SJMP KEYWORK NEXT: CLR EA JNB P3.5,$ CJNE R5,#04H,LAST MOV R5,#00H
LJMP KEYWORK
LAST: INC R5
LJMP KEYWORK
7
中断返回 重复正播放的曲子
上一曲开关按下转FORM 下一曲开关按下转NEXT 等待键释放
关中断 等待键释放
不是第一首歌曲转ZER0 是第一首将最后一首歌曲装入歌歌曲向上进一首 歌曲下翻一首
;
;
;
KEYWORK: MOV DPTR,#TAB ;将歌曲排列表装入DPTR MOV A,R5 ;将R5的内容送A RL A
SETB EA ;开中断
JMP @A+DPTR ;根据A的内容转向不同歌曲 TAB: AJMP MUSIC2 AJMP MUSIC3 AJMP MUSIC4 AJMP MUSIC5
MUSIC2: MOV DPTR,#TAB2 ;第2首歌曲首址送DPTR
MOV P1,#06H
GONG: MOV 30H,DPL MOV 31H,DPH AJMP START1 MUSIC3: MOV DPTR,#TAB3
MOV P1,#5BH
SJMP GONG MUSIC4: MOV DPTR,#TAB4
MOV P1,#4FH
SJMP GONG MUSIC5: MOV DPTR,#TAB5
MOV P1,#66H
SJMP GONG
;********************(音符表)**********************; TAB1: DW 021,185,331,400,524,632,732 DW 777,860,934,968,65030,65085,65134 DW 65157,65198,65235,65252,65283,65310,65335
;**********************(因为爱情)*************************; TAB2: DW 0910H,0A08H,0C08H,0C08H,0A18H,0010H,0C08H,0A08H DW 0908H,0C08H,0C20H,0D08H,0E08H,0F08H,0F08H,0F08H DW 0E08H,0F18H,0E04H,0E08H,0E08H,0C08H,0A08H,0A20H DW 0C08H,0A08H,0C08H,0D08H,0D18H,0C08H,0D08H,0C08H DW 0C08H,0808H,0820H,0608H,0808H,0A08H,0908H,0608H
8
DW 0A08H,0908H,0608H,0A08H,0908H,0608H,0D10H,0C20H DW 0001H
;*********************(兰花草)***********************; TAB3: DW 0608H,0A08H,0A08H,0A08H,0A18H,0908H,0808H,0908H DW 0808H,0708H,0620H,0D08H,0D08H,0D08H,0D08H,0D18H DW 0C08H,0A08H,0C08H,0C08H,0B08H,0A20H,0A08H,0D08H DW 0D08H,0C08H,0A18H,0908H,0808H,0908H,0808H,0708H DW 0610H,0310H,0308H,0808H,0808H,0708H,0618H,0A08H DW 0908H,0808H,0708H,0508H,0620H,0908H,0808H,0708H DW 0508H,00H,0001H
;*********************(我只在乎你)*****************************; TAB4: DW 0A08H,0A08H,0A08H,0908H,0A10H,0C08H,0C08H,0C20H DW 0D08H,0D08H,0D08H,0C08H,0A10H,0D08H,0C08H,0C20H DW 0F08H,0F08H,0F08H,0D08H,1010H,0F08H,0C08H,0C20H DW 0D08H,0D08H,0D08H,0F08H,0D08H,0C10H,0A10H,0920H DW 0A08H,0A08H,0A08H,0908H,0A10H,0C08H,0C08H,0C20H DW 0D08H,0D08H,0D08H,0C08H,0A10H,0C08H,0C08H,0C20H DW 0F08H,0F10H,0D08H,1010H,1010H,0F08H,0C08H,0C20H DW 1010H,0C10H,0F10H,1010H,1110H,1010H,0F10H,0E10H DW 0F10H,0E10H,0D10H,0C10H,0D40H,0020H,0004H,0F08H DW 1008H,1110H,1010H,0F10H,0E10H,0F10H,0E10H,0A10H DW 0C10H,0D20H,0008H,0D08H,0C08H,0D10H,0F10H,0F20H DW 0010H,0F20H,1010H,1110H,0F10H,1010H,0F10H,0D08H DW 0D08H,1210H,1110H,1010H,0F08H,1208H,1210H,1110H DW 1010H,0F10H,1030H,1110H,1008H,0F08H,0F20H,0F10H DW 1010H,1120H,0F10H,1410H,1310H,1108H,1008H,0F10H DW 0D30H,0010H,0C10H,0F10H,1110H,1310H,1408H,1108H DW 1008H,0F10H,0D10H,0F10H,0F08H,1010H,0F08H,0F40H DW 0001H
;*********************(童年)****************************; TAB5: DW 0A08H,0C08H,0C10H,0C08H,0A08H,0D08H,0D08H,0E08H DW 0D08H,0D08H,0D08H,0D08H,0C08H,0F10H,0F08H,0F08H DW 0F08H,0D08H,0F08H,0D08H,0C40H,0A08H,0C08H,0C10H
9
DW 0C08H,0A08H,0D08H,0D08H,0E08H,0D08H,0D08H,0D08H DW 0D08H,0C08H,0F10H,0F08H,0F08H,0F08H,0D08H,0D08H DW 0F08H,1040H,1308H,1308H,1310H,1310H,1108H,1008H DW 0F08H,0F10H,0D08H,0D08H,0F08H,0D08H,0F08H,1008H DW 1008H,1008H,1008H,1008H,0F08H,1108H,1008H,1040H DW 1108H,1110H,1108H,1108H,1008H,1010H,0F08H,0F10H DW 0F08H,1008H,0F08H,0D08H,0C08H,0C08H,0C10H,0C08H DW 0D08H,0C08H,1008H,1108H,0F40H,0001H,0000H END
四、总原理图及元器件清单
1.总原理图
图4.1 总原理图
2.元器件清单
ATC52,晶振,电容,电阻,排阻,按键,数码管,二极管,蜂鸣器,三极管
10
五、结论
此音乐播放器能够播放四首曲子,且用按键选择曲目,基本实现了设计要求。用数据线连上电脑充当电源,将已下载程序的单片机插入插座,按下P3.3口的键可重复播放当前曲子,按下P3.4口的键可播放上一曲,按下P3.5口的键可播放下一曲,按下REST键实现复位,从第一首曲子开始。一位数码管显示歌曲曲目。二极管做为发挥部分增加情趣。
六、心得体会
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为自动化专业的学生来说掌握单片机的开发技术是十分重要的。
我的题目是音乐播放器硬软件的设计,13周学习单片机的时间然后就要自己设计一个作品,这是一次考验。提前很久我们就选好了在课题,开始做准备工作,查阅资料,看到同学们的小作品以及方案讲解,我对我的课题也有了信心。 这次课程设计我学到很多很多的东西,学会了怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。不仅巩固了以前所学过的知识,比如熟悉了单片机引脚,指令功能,定时器的应用等,而且学到了很多在书本上所没有学到过的知识,比如学会用万用表测量确定器件引脚和某些功能,如何给单片机烧写程序,如何编写音乐代码等。当然课设中遇到很多问题,比如仿真中蜂鸣器不加三极管驱动而实际焊接是需要的,不会看歌曲简谱,焊接出现错误等,但都在自己的努力,同学的帮助,还有老师的辛勤指导下得以解决,最终顺利完成,只是蜂鸣器播放效果并不好,可以换成喇叭播放。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和思考的能力。的确过程是困难的,但是看到自己的成品真的很开心,以后要多进行实践操作,提高各方面能力。
七、参考文献
胡辉.单片机原理及应用.中国水利水电出版社
11
附件 仿真结果:
图a 单片机上电后 图b 第一首歌曲 12
实物拍摄:
13
评 语 教 师评语及设计成绩 课程设计成绩: 指导教师: 日期: 年 月 日
14
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务